myc

Self-custodial remote signer for Radroots apps
git clone https://radroots.dev/git/myc.git
Log | Files | Refs | README | LICENSE

lib.rs (15597B)


      1 #![forbid(unsafe_code)]
      2 #![doc = include_str!("../README")]
      3 
      4 #[cfg(any(target_os = "linux", target_os = "macos"))]
      5 mod admin_v1;
      6 #[cfg(any(target_os = "linux", target_os = "macos"))]
      7 mod cli_bootstrap;
      8 mod cli_v1;
      9 mod config_loader;
     10 mod config_v1;
     11 #[cfg(all(test, any(target_os = "linux", target_os = "macos")))]
     12 mod control_plane_wave_090_a;
     13 mod delivery_worker;
     14 mod diagnostics_v1;
     15 mod doctor_v1;
     16 mod nip46_admission;
     17 mod nip46_authorization;
     18 mod nip46_replay;
     19 mod nip46_verification;
     20 #[cfg(all(test, any(target_os = "linux", target_os = "macos")))]
     21 mod nip46_wave_080_a;
     22 #[cfg(all(test, any(target_os = "linux", target_os = "macos")))]
     23 mod nip46_wave_080_b;
     24 mod nip46_work;
     25 mod operations_v1;
     26 #[cfg(any(target_os = "linux", target_os = "macos"))]
     27 mod process_v1;
     28 #[cfg(not(any(target_os = "linux", target_os = "macos")))]
     29 #[path = "process_v1_unsupported.rs"]
     30 mod process_v1;
     31 mod provider_contract;
     32 mod provider_credential;
     33 mod provider_envelope;
     34 mod provider_executor;
     35 mod provider_local_signer;
     36 mod provider_verification;
     37 mod runtime_context;
     38 mod runtime_foundation;
     39 #[cfg(any(target_os = "linux", target_os = "macos"))]
     40 mod runtime_graph;
     41 #[cfg(any(target_os = "linux", target_os = "macos"))]
     42 mod runtime_nip46;
     43 mod runtime_signal;
     44 mod runtime_supervision;
     45 #[cfg(any(target_os = "linux", target_os = "macos"))]
     46 mod state_admin;
     47 mod state_catalog;
     48 mod state_completion;
     49 mod state_config;
     50 mod state_connection;
     51 mod state_delivery;
     52 mod state_discovery;
     53 mod state_governance;
     54 mod state_host;
     55 mod state_maintenance;
     56 mod state_metadata;
     57 mod state_recovery;
     58 mod state_repository;
     59 mod state_request;
     60 mod state_response;
     61 mod status_v1;
     62 #[cfg(any(target_os = "linux", target_os = "macos"))]
     63 mod system_doctor;
     64 mod transport_nostr_adapter;
     65 
     66 #[cfg(any(target_os = "linux", target_os = "macos"))]
     67 pub use admin_v1::{
     68     MycAdminCancellationToken, MycAdminDocumentError, MycAdminDocumentErrorKind, MycAdminFuture,
     69     MycAdminHandler, MycAdminHandlerError, MycAdminHandlerErrorKind, MycAdminMethod,
     70     MycAdminRequestDocument, MycAdminResponseDocument, MycAdminRoute, MycAdminRouter,
     71     MycAdminRouterError, MycAdminServer, MycAdminServerError, MycAdminServerErrorKind,
     72     MycBoundAdminServer, build_myc_admin_router,
     73 };
     74 pub use cli_v1::{
     75     MycBootstrapProfileV1, MycCliAdminOperationV1, MycCliExecutionPlanV1, MycCliInvocationV1,
     76     MycCliOfflineOperationV1, MycCliOutputModeV1, MycCliPrimaryAuthorityV1, MycCliV1Error,
     77     MycCliV1ErrorKind, MycCommandV1, MycConfigApplyArgsV1, MycConfigCommandV1,
     78     MycIdentityCommandArgsV1, MycIdentityCommandV1, MycStateBackupArgsV1, MycStateCommandV1,
     79     MycStateRestoreArgsV1, parse_myc_cli_v1_from, plan_myc_cli_v1,
     80 };
     81 pub use config_loader::{
     82     MycConfigLoadError, MycConfigLoadErrorKind, initialize_myc_config_document,
     83     load_myc_config_candidate, load_myc_config_document,
     84 };
     85 pub use config_v1::{
     86     MYC_CONFIG_DOCUMENT_MAX_UTF8_BYTES, MYC_CONFIG_SCHEMA, MYC_CONFIG_SCHEMA_VERSION,
     87     MycConfigDocumentV1, MycConfigProfile, MycConfigV1Error, MycConfigV1ErrorKind,
     88     MycConfigValueSource, MycEffectiveConfigV1, MycRuntimeThreadLimitsV1, parse_myc_config_v1,
     89 };
     90 pub use diagnostics_v1::{
     91     MYC_DIAGNOSTICS_CONTRACT_VERSION, MYC_LOG_RECORD_MAX_UTF8_BYTES, MycLogEvent, MycLogLevel,
     92     MycLogRecord, MycProcessResult,
     93 };
     94 pub use doctor_v1::{
     95     MYC_DOCTOR_CHECK_COUNT, MYC_DOCTOR_CONTRACT_VERSION, MYC_DOCTOR_REPORT_MAX_UTF8_BYTES,
     96     MYC_DOCTOR_SUMMARY_MAX_UTF8_BYTES, MycDoctorAggregateStatus, MycDoctorCheckDefinition,
     97     MycDoctorCheckId, MycDoctorCheckResult, MycDoctorCheckStatus, MycDoctorError,
     98     MycDoctorErrorKind, MycDoctorFuture, MycDoctorObservation, MycDoctorProbe,
     99     MycDoctorRemediationCode, MycDoctorReport, myc_doctor_check_definitions, run_myc_doctor,
    100 };
    101 pub use nip46_admission::{
    102     MYC_NIP46_EVENT_ID_MAX_BYTES, MYC_NIP46_PUBLIC_KEY_MAX_BYTES, MYC_NIP46_SIGNATURE_MAX_BYTES,
    103     MycBoundedNip46Event, MycBoundedNip46Request, MycNip46AdmissionError,
    104     MycNip46AdmissionErrorKind, MycNip46AdmissionLimits, admit_myc_nip46_event,
    105     admit_myc_nip46_request,
    106 };
    107 pub use nip46_replay::{
    108     MycNip46ConnectionIdentity, MycNip46LogicalRequestIdentity, MycNip46ReplayDisposition,
    109     MycNip46ReplayKey, MycReplayBoundNip46Request, bind_myc_nip46_replay,
    110 };
    111 pub use nip46_verification::{
    112     MycNip46AuthoredTimePolicy, MycNip46EncryptionContext, MycNip46ObservedAtUnixSeconds,
    113     MycNip46VerificationError, MycNip46VerificationErrorKind, MycVerifiedNip46Event,
    114     MycVerifiedNip46Request, verify_myc_nip46_event, verify_myc_nip46_request,
    115 };
    116 pub use nip46_work::{
    117     MycDecryptedNip46Request, MycNip46DecryptWork, MycNip46Work, MycNip46WorkError,
    118     MycNip46WorkErrorKind, MycNip46WorkKind, MycPreparedNip46Request,
    119     prepare_myc_nip46_decrypt_work, prepare_myc_nip46_request, prepare_myc_nip46_work,
    120 };
    121 pub use operations_v1::{
    122     MYC_LIVEZ_PATH, MYC_METRICS_PATH, MYC_OPERATIONS_CONTRACT_VERSION, MYC_READYZ_PATH,
    123     MycBoundOperationsServer, MycOperationsCancellationToken, MycOperationsError,
    124     MycOperationsErrorKind, MycOperationsServer,
    125 };
    126 pub use process_v1::{execute_myc_cli_v1, execute_myc_cli_v1_with_signal_source};
    127 pub use provider_contract::{
    128     MYC_PROVIDER_CONCURRENCY_MAX, MYC_PROVIDER_CONTRACT_VERSION, MYC_PROVIDER_INPUT_MAX_BYTES,
    129     MYC_PROVIDER_OUTPUT_MAX_BYTES, MYC_PROVIDER_REQUEST_DEADLINE_MAX_MS,
    130     MYC_PROVIDER_REQUEST_MAX_BYTES, MYC_PROVIDER_RESPONSE_MAX_BYTES, MycLocalSignerLimits,
    131     MycProviderBinding, MycProviderCapability, MycProviderCapabilitySet, MycProviderContract,
    132     MycProviderContractError, MycProviderContractErrorKind, MycProviderCorrelationId,
    133     MycProviderCredentialReference, MycProviderDeadlineUnixMs, MycProviderInstanceId,
    134     MycProviderKind, MycProviderNip44Version, MycProviderOperation, MycProviderOperationId,
    135     MycProviderOperationInput, MycProviderPublicIdentity, MycProviderRole,
    136     MycUntrustedProviderOutput,
    137 };
    138 pub use provider_credential::{
    139     MYC_WRAPPING_CREDENTIAL_ARTIFACT_BYTES, MYC_WRAPPING_CREDENTIAL_CONTRACT_VERSION,
    140     MycCredentialResolutionError, MycCredentialResolutionErrorKind,
    141     resolve_myc_wrapping_credential,
    142 };
    143 pub use provider_envelope::{
    144     MYC_ENCRYPTED_IDENTITY_BACKUP_INCLUDED, MYC_ENCRYPTED_IDENTITY_ENVELOPE_CONTRACT_VERSION,
    145     MYC_ENCRYPTED_IDENTITY_ENVELOPE_MAX_BYTES, MycDecryptedIdentity,
    146     MycEncryptedIdentityEnvelopeError, MycEncryptedIdentityEnvelopeErrorKind,
    147     MycEncryptedIdentityProvisioningMaterial, MycWrappingCredential, open_myc_encrypted_identity,
    148     provision_myc_encrypted_identity,
    149 };
    150 pub use provider_local_signer::{
    151     MYC_LOCAL_SIGNER_ENDPOINT, MYC_LOCAL_SIGNER_TRANSPORT_CONTRACT_VERSION, MycLocalSignerClient,
    152     MycLocalSignerTransportError, MycLocalSignerTransportErrorKind,
    153     MycLocalSignerUntrustedResponse,
    154 };
    155 pub use provider_verification::{
    156     MycProviderResponseObservedAtUnixMs, MycProviderVerificationError,
    157     MycProviderVerificationErrorKind, MycVerifiedProviderResponse,
    158 };
    159 pub use radroots_runtime_paths::{
    160     INSTANCE_ID_MAX_BYTES, InstanceId, RadrootsHostEnvironment, RadrootsPathProfile,
    161     RadrootsPathResolver, RadrootsPlatform, RadrootsServiceInstanceArtifacts, RuntimeContext,
    162     RuntimeContextSource, ServiceId,
    163 };
    164 pub use runtime_context::{
    165     MycRuntimeContext, MycRuntimeContextError, MycRuntimeContextErrorKind,
    166     resolve_myc_runtime_context,
    167 };
    168 pub use runtime_foundation::{
    169     MYC_RUNTIME_FOUNDATION_CONTRACT_VERSION, MycRuntimeFoundation, MycRuntimeFoundationError,
    170     MycRuntimeFoundationErrorKind, MycRuntimePrerequisite, MycRuntimeReadiness,
    171     MycRuntimeReadinessReason, open_myc_runtime_foundation,
    172 };
    173 pub use runtime_signal::{MycProcessSignal, MycProcessSignalFuture, MycProcessSignalSource};
    174 pub use runtime_supervision::{
    175     MYC_CRITICAL_TASK_MAX_COUNT, MYC_RUNTIME_SUPERVISION_CONTRACT_VERSION, MycCriticalTask,
    176     MycCriticalTaskError, MycRuntimeSupervisionError, MycRuntimeSupervisionErrorKind,
    177     MycSupervisedRuntime, MycTaskCancellation,
    178 };
    179 #[cfg(any(target_os = "linux", target_os = "macos"))]
    180 pub use state_admin::{
    181     MYC_ADMIN_OPERATION_COMPLETED_LIMIT, MYC_ADMIN_OPERATION_DEFAULT_RETENTION_MS,
    182     MYC_ADMIN_OPERATION_ID_MAX_BYTES, MYC_ADMIN_OPERATION_MAX_RETENTION_MS,
    183     MYC_ADMIN_OPERATION_MIN_RETENTION_MS, MYC_ADMIN_OPERATION_PREPARED_LIMIT,
    184     MYC_ADMIN_OPERATION_RESPONSE_ENVELOPE_MAX_UTF8_BYTES,
    185     MYC_ADMIN_OPERATION_RESPONSE_MODEL_MAX_BYTES, MycAdminOperationAdmission,
    186     MycAdminOperationCompletion, MycAdminOperationError, MycAdminOperationErrorKind,
    187     MycAdminOperationJournalPolicy, MycAdminOperationTimeUnixMs, MycPreparedAdminOperation,
    188 };
    189 pub use state_catalog::{
    190     MYC_MIGRATION_CATALOG_SHA256, MYC_STATE_BASE_SCHEMA_VERSION, MYC_STATE_SCHEMA_CATALOG_SHA256,
    191     MYC_STATE_SCHEMA_VERSION, MYC_STATE_SCHEMA_VERSION_1_OBJECT_COUNT,
    192     MYC_STATE_SCHEMA_VERSION_1_SHA256, MYC_STATE_SCHEMA_VERSION_2_MIGRATION_SHA256,
    193     MYC_STATE_SCHEMA_VERSION_2_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_2_SHA256,
    194     MYC_STATE_SCHEMA_VERSION_3_MIGRATION_SHA256, MYC_STATE_SCHEMA_VERSION_3_OBJECT_COUNT,
    195     MYC_STATE_SCHEMA_VERSION_3_SHA256, MYC_STATE_SCHEMA_VERSION_4_MIGRATION_SHA256,
    196     MYC_STATE_SCHEMA_VERSION_4_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_4_SHA256,
    197     MYC_STATE_SCHEMA_VERSION_5_MIGRATION_SHA256, MYC_STATE_SCHEMA_VERSION_5_OBJECT_COUNT,
    198     MYC_STATE_SCHEMA_VERSION_5_SHA256, MYC_STATE_SCHEMA_VERSION_6_MIGRATION_SHA256,
    199     MYC_STATE_SCHEMA_VERSION_6_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_6_SHA256,
    200     MYC_STATE_SCHEMA_VERSION_7_MIGRATION_SHA256, MYC_STATE_SCHEMA_VERSION_7_OBJECT_COUNT,
    201     MYC_STATE_SCHEMA_VERSION_7_SHA256, MYC_STATE_SCHEMA_VERSION_8_MIGRATION_SHA256,
    202     MYC_STATE_SCHEMA_VERSION_8_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_8_SHA256,
    203     MYC_STATE_SCHEMA_VERSION_9_MIGRATION_SHA256, MYC_STATE_SCHEMA_VERSION_9_OBJECT_COUNT,
    204     MYC_STATE_SCHEMA_VERSION_9_SHA256, MYC_STATE_SCHEMA_VERSION_10_MIGRATION_SHA256,
    205     MYC_STATE_SCHEMA_VERSION_10_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_10_SHA256,
    206     MYC_STATE_SCHEMA_VERSION_11_MIGRATION_SHA256, MYC_STATE_SCHEMA_VERSION_11_OBJECT_COUNT,
    207     MYC_STATE_SCHEMA_VERSION_11_SHA256, MYC_STATE_SCHEMA_VERSION_12_MIGRATION_SHA256,
    208     MYC_STATE_SCHEMA_VERSION_12_OBJECT_COUNT, MYC_STATE_SCHEMA_VERSION_12_SHA256,
    209     MycStateCatalogError, MycStateCatalogErrorKind, myc_migration_catalog, myc_schema_catalog,
    210     validate_myc_state_catalogs,
    211 };
    212 pub use state_completion::{
    213     MycNip46CommitAdmission, MycNip46CommitError, MycNip46CommitErrorKind, MycNip46CommitRecord,
    214     MycNip46CommitRequest, MycNip46SessionEffect,
    215 };
    216 pub use state_config::{
    217     MYC_CONFIG_BINDING_MAX_GENERATIONS, MycConfigApplyError, MycConfigApplyErrorKind,
    218     MycConfigApplyOutcome,
    219 };
    220 pub use state_connection::{
    221     MYC_AUTHORIZATION_CHALLENGE_URL_MAX_BYTES, MYC_CONNECTION_PERMISSION_MAX_COUNT,
    222     MycAuthorizationChallengeAdmission, MycAuthorizationChallengeAuthorization,
    223     MycAuthorizationChallengeId, MycAuthorizationChallengeNonce, MycAuthorizationChallengeRecord,
    224     MycAuthorizationChallengeRequest, MycAuthorizationChallengeState, MycAuthorizationChallengeUrl,
    225     MycConnectionAdmission, MycConnectionAdmissionPolicy, MycConnectionAdmissionRequest,
    226     MycConnectionDecision, MycConnectionDecisionRecord, MycConnectionId, MycConnectionNonce,
    227     MycConnectionOperatorDecision, MycConnectionPermission, MycConnectionPermissionSet,
    228     MycConnectionPolicyGeneration, MycConnectionRecord, MycConnectionStateError,
    229     MycConnectionStateErrorKind, MycConnectionStatus, MycConnectionTimeUnixMs,
    230 };
    231 pub use state_delivery::{
    232     MYC_DELIVERY_ATTEMPT_MAX_COUNT, MYC_DELIVERY_RELAY_ID_MAX_BYTES,
    233     MYC_DELIVERY_RETRY_JITTER_MAX_MS, MYC_DELIVERY_TARGET_MAX_COUNT, MycDeliveryArtifactDigest,
    234     MycDeliveryAttemptId, MycDeliveryAttemptNonce, MycDeliveryAttemptOutcome,
    235     MycDeliveryAttemptRecord, MycDeliveryAttemptStatus, MycDeliveryClaim, MycDeliveryJobAdmission,
    236     MycDeliveryJobId, MycDeliveryJobRecord, MycDeliveryJobStatus, MycDeliveryPolicyMode,
    237     MycDeliveryRelayId, MycDeliveryRetryJitter, MycDeliverySourceKind, MycDeliveryStateError,
    238     MycDeliveryStateErrorKind, MycDeliveryTargetRecord, MycDeliveryTargetStatus,
    239     MycDeliveryTimeUnixMs,
    240 };
    241 pub use state_discovery::{
    242     MYC_DISCOVERY_DOCUMENT_MAX_BYTES, MYC_NIP05_DOCUMENT_MAX_BYTES, MYC_NIP05_PROJECTION_MAX_BYTES,
    243     MycDiscoveryCommitAdmission, MycDiscoveryCommitRecord, MycDiscoveryCommitRequest,
    244     MycDiscoveryDocumentDigest, MycDiscoveryDocumentRecord, MycDiscoveryGenerationId,
    245     MycDiscoveryPublicationState, MycDiscoveryStateError, MycDiscoveryStateErrorKind,
    246     MycNip05Document, MycNip05DocumentDigest, MycNip05ExportSelection, MycNip05ProjectionDigest,
    247 };
    248 pub use state_governance::{
    249     MYC_AUDIT_PAGE_MAX_ITEMS, MYC_AUDIT_RETENTION_MAX_MS, MYC_COMPACTION_MAX_ROWS,
    250     MYC_RATE_MAX_ATTEMPTS, MYC_RATE_MAX_TRACKED_SUBJECTS, MYC_RATE_RELAY_ID_MAX_BYTES,
    251     MYC_RATE_RETENTION_MAX_MS, MYC_RATE_WINDOW_MAX_MS, MycAuditCorrelationId, MycAuditKind,
    252     MycAuditOutcome, MycAuditPage, MycAuditPageLimit, MycAuditReasonCode, MycAuditRecord,
    253     MycGovernanceCompactionOutcome, MycGovernanceCompactionPolicy, MycGovernanceStateError,
    254     MycGovernanceStateErrorKind, MycRateLimitClass, MycRateLimitPolicy, MycRateRelayId,
    255 };
    256 pub use state_host::{
    257     MycStateHost, MycStateHostError, MycStateHostErrorKind, MycStateHostMode, initialize_myc_state,
    258     open_myc_state_inspection, open_myc_state_inspection_from_config, open_myc_state_read_write,
    259     open_myc_state_read_write_from_config,
    260 };
    261 pub use state_maintenance::{
    262     MycStagedStateRestore, MycStateMaintenanceError, MycStateMaintenanceErrorKind,
    263     MycVerifiedStateBackup, finalize_myc_state_restore, stage_myc_state_restore,
    264     verify_myc_state_backup,
    265 };
    266 pub use state_metadata::{
    267     MYC_OPERATOR_CONTRACT_VERSION, MYC_SIGNER_STATUS_CONTRACT_VERSION, MYC_STATE_APPLICATION_ID,
    268     MycExpectedIdentities, MycExpectedPublicIdentity, MycNormalizedConfigDigest, MycStateMetadata,
    269     MycStateMetadataError, MycStateMetadataErrorKind, MycStatePolicyVersions,
    270 };
    271 pub use state_recovery::{
    272     MYC_DELIVERY_RECOVERY_BATCH_MAX_COUNT, MycDeliveryRecoveryEntropy, MycDeliveryRecoveryReport,
    273 };
    274 pub use state_repository::{
    275     MycStateRepository, MycStateRepositoryError, MycStateRepositoryErrorKind,
    276 };
    277 pub use state_request::{
    278     MYC_NIP46_CANONICAL_REQUEST_MAX_BYTES, MYC_NIP46_REQUEST_ID_MAX_UTF8_BYTES,
    279     MycNip46ClientPublicKey, MycNip46EventId, MycNip46RequestId, MycRequestReceivedAtUnixMs,
    280     MycSignerCorrelationId, MycSignerOperationId, MycSignerOperationNonce, MycSignerRequest,
    281     MycSignerRequestAdmission, MycSignerRequestDigest, MycSignerRequestError,
    282     MycSignerRequestErrorKind, MycSignerRequestMethod, MycSignerRequestRecord,
    283 };
    284 pub use state_response::{
    285     MycNip46ResponseCommitAdmission, MycNip46ResponseCommitError, MycNip46ResponseCommitErrorKind,
    286     MycNip46ResponseCommitRecord, MycNip46ResponseCommitRequest, MycNip46ResponseRecord,
    287 };
    288 pub use status_v1::{
    289     MYC_DETAILED_STATUS_MAX_UTF8_BYTES, MYC_STATUS_CACHE_CONTRACT_VERSION,
    290     MYC_STATUS_REASON_CODE_COUNT, MycConnectionCountsV1, MycIdentityHealthV1, MycIntegrityStateV1,
    291     MycOutboxStatusV1, MycPersistenceHealthV1, MycPersistenceStatusV1, MycProviderHealthV1,
    292     MycProviderStatusV1, MycRelayTransportStatusV1, MycServicePhase, MycStatusBuildInfoV1,
    293     MycStatusBuildMode, MycStatusCommonV1, MycStatusConfigurationIdentityV1,
    294     MycStatusConfigurationSource, MycStatusError, MycStatusErrorKind, MycStatusObservationV1,
    295     MycStatusPublisher, MycStatusReader, MycStatusReasonCode, MycStatusReasonCodes,
    296     MycStatusSnapshot, MycStatusUnixSeconds, MycTransportHealthV1, myc_status_cache,
    297 };