auths-python 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- auths_python-0.1.0/Cargo.toml +94 -0
- auths_python-0.1.0/PKG-INFO +152 -0
- auths_python-0.1.0/README.md +124 -0
- auths_python-0.1.0/crates/auths-core/Cargo.toml +108 -0
- auths_python-0.1.0/crates/auths-core/README.md +29 -0
- auths_python-0.1.0/crates/auths-core/benches/crypto.rs +127 -0
- auths_python-0.1.0/crates/auths-core/cbindgen.toml +14 -0
- auths_python-0.1.0/crates/auths-core/clippy.toml +58 -0
- auths_python-0.1.0/crates/auths-core/src/agent/client.rs +673 -0
- auths_python-0.1.0/crates/auths-core/src/agent/core.rs +178 -0
- auths_python-0.1.0/crates/auths-core/src/agent/handle.rs +577 -0
- auths_python-0.1.0/crates/auths-core/src/agent/mod.rs +19 -0
- auths_python-0.1.0/crates/auths-core/src/agent/session.rs +399 -0
- auths_python-0.1.0/crates/auths-core/src/api/ffi.rs +964 -0
- auths_python-0.1.0/crates/auths-core/src/api/mod.rs +8 -0
- auths_python-0.1.0/crates/auths-core/src/api/runtime.rs +821 -0
- auths_python-0.1.0/crates/auths-core/src/config.rs +358 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/encryption.rs +336 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/mod.rs +44 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/provider_bridge.rs +55 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/said.rs +121 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/secp256k1.rs +235 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/signer.rs +97 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/ssh/encoding.rs +49 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/ssh/error.rs +61 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/ssh/keys.rs +64 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/ssh/mod.rs +14 -0
- auths_python-0.1.0/crates/auths-core/src/crypto/ssh/signatures.rs +153 -0
- auths_python-0.1.0/crates/auths-core/src/error.rs +278 -0
- auths_python-0.1.0/crates/auths-core/src/lib.rs +74 -0
- auths_python-0.1.0/crates/auths-core/src/pairing/error.rs +78 -0
- auths_python-0.1.0/crates/auths-core/src/pairing/mod.rs +18 -0
- auths_python-0.1.0/crates/auths-core/src/pairing/qr.rs +158 -0
- auths_python-0.1.0/crates/auths-core/src/paths.rs +81 -0
- auths_python-0.1.0/crates/auths-core/src/platform/android.rs +0 -0
- auths_python-0.1.0/crates/auths-core/src/platform/ios.rs +0 -0
- auths_python-0.1.0/crates/auths-core/src/platform/macos.rs +0 -0
- auths_python-0.1.0/crates/auths-core/src/platform/mod.rs +0 -0
- auths_python-0.1.0/crates/auths-core/src/policy/decision.rs +216 -0
- auths_python-0.1.0/crates/auths-core/src/policy/device.rs +404 -0
- auths_python-0.1.0/crates/auths-core/src/policy/mod.rs +70 -0
- auths_python-0.1.0/crates/auths-core/src/policy/org.rs +371 -0
- auths_python-0.1.0/crates/auths-core/src/ports/clock.rs +7 -0
- auths_python-0.1.0/crates/auths-core/src/ports/config_store.rs +63 -0
- auths_python-0.1.0/crates/auths-core/src/ports/id.rs +20 -0
- auths_python-0.1.0/crates/auths-core/src/ports/mod.rs +15 -0
- auths_python-0.1.0/crates/auths-core/src/ports/namespace.rs +477 -0
- auths_python-0.1.0/crates/auths-core/src/ports/network.rs +409 -0
- auths_python-0.1.0/crates/auths-core/src/ports/pairing.rs +133 -0
- auths_python-0.1.0/crates/auths-core/src/ports/platform.rs +260 -0
- auths_python-0.1.0/crates/auths-core/src/ports/ssh_agent.rs +84 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/blob_reader.rs +53 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/blob_writer.rs +40 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/error.rs +94 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/event_log_reader.rs +45 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/event_log_writer.rs +33 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/mod.rs +17 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/ref_reader.rs +39 -0
- auths_python-0.1.0/crates/auths-core/src/ports/storage/ref_writer.rs +41 -0
- auths_python-0.1.0/crates/auths-core/src/proto.rs +28 -0
- auths_python-0.1.0/crates/auths-core/src/server.rs +9 -0
- auths_python-0.1.0/crates/auths-core/src/signing.rs +1055 -0
- auths_python-0.1.0/crates/auths-core/src/storage/android_keystore.rs +151 -0
- auths_python-0.1.0/crates/auths-core/src/storage/encrypted_file.rs +633 -0
- auths_python-0.1.0/crates/auths-core/src/storage/ios_keychain.rs +463 -0
- auths_python-0.1.0/crates/auths-core/src/storage/keychain.rs +663 -0
- auths_python-0.1.0/crates/auths-core/src/storage/linux_secret_service.rs +376 -0
- auths_python-0.1.0/crates/auths-core/src/storage/macos_keychain.rs +672 -0
- auths_python-0.1.0/crates/auths-core/src/storage/memory.rs +268 -0
- auths_python-0.1.0/crates/auths-core/src/storage/mod.rs +23 -0
- auths_python-0.1.0/crates/auths-core/src/storage/passphrase_cache.rs +670 -0
- auths_python-0.1.0/crates/auths-core/src/storage/pkcs11.rs +583 -0
- auths_python-0.1.0/crates/auths-core/src/storage/windows_credential.rs +326 -0
- auths_python-0.1.0/crates/auths-core/src/testing/builder.rs +362 -0
- auths_python-0.1.0/crates/auths-core/src/testing/deterministic_uuid.rs +54 -0
- auths_python-0.1.0/crates/auths-core/src/testing/fake_config_store.rs +105 -0
- auths_python-0.1.0/crates/auths-core/src/testing/in_memory_storage.rs +227 -0
- auths_python-0.1.0/crates/auths-core/src/testing/mod.rs +56 -0
- auths_python-0.1.0/crates/auths-core/src/trust/continuity.rs +139 -0
- auths_python-0.1.0/crates/auths-core/src/trust/mod.rs +27 -0
- auths_python-0.1.0/crates/auths-core/src/trust/pinned.rs +523 -0
- auths_python-0.1.0/crates/auths-core/src/trust/policy.rs +74 -0
- auths_python-0.1.0/crates/auths-core/src/trust/resolve.rs +402 -0
- auths_python-0.1.0/crates/auths-core/src/trust/roots_file.rs +274 -0
- auths_python-0.1.0/crates/auths-core/src/utils.rs +6 -0
- auths_python-0.1.0/crates/auths-core/src/witness/async_provider.rs +259 -0
- auths_python-0.1.0/crates/auths-core/src/witness/collector.rs +396 -0
- auths_python-0.1.0/crates/auths-core/src/witness/duplicity.rs +387 -0
- auths_python-0.1.0/crates/auths-core/src/witness/error.rs +202 -0
- auths_python-0.1.0/crates/auths-core/src/witness/hash.rs +307 -0
- auths_python-0.1.0/crates/auths-core/src/witness/mod.rs +109 -0
- auths_python-0.1.0/crates/auths-core/src/witness/noop.rs +86 -0
- auths_python-0.1.0/crates/auths-core/src/witness/provider.rs +132 -0
- auths_python-0.1.0/crates/auths-core/src/witness/receipt.rs +381 -0
- auths_python-0.1.0/crates/auths-core/src/witness/server.rs +1041 -0
- auths_python-0.1.0/crates/auths-core/src/witness/storage.rs +451 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/assurance_level.rs +50 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/key_export.rs +178 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/namespace.rs +257 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/pkcs11.rs +260 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/said_cross_validation.rs +85 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/ssh_crypto.rs +110 -0
- auths_python-0.1.0/crates/auths-core/tests/cases/witness.rs +200 -0
- auths_python-0.1.0/crates/auths-core/tests/integration.rs +10 -0
- auths_python-0.1.0/crates/auths-core/tests/passphrase_cache_manual.rs +50 -0
- auths_python-0.1.0/crates/auths-crypto/Cargo.toml +47 -0
- auths_python-0.1.0/crates/auths-crypto/clippy.toml +58 -0
- auths_python-0.1.0/crates/auths-crypto/src/did_key.rs +139 -0
- auths_python-0.1.0/crates/auths-crypto/src/error.rs +27 -0
- auths_python-0.1.0/crates/auths-crypto/src/keri.rs +148 -0
- auths_python-0.1.0/crates/auths-crypto/src/key_material.rs +239 -0
- auths_python-0.1.0/crates/auths-crypto/src/lib.rs +40 -0
- auths_python-0.1.0/crates/auths-crypto/src/pkcs8.rs +70 -0
- auths_python-0.1.0/crates/auths-crypto/src/provider.rs +171 -0
- auths_python-0.1.0/crates/auths-crypto/src/ring_provider.rs +114 -0
- auths_python-0.1.0/crates/auths-crypto/src/ssh.rs +52 -0
- auths_python-0.1.0/crates/auths-crypto/src/testing.rs +64 -0
- auths_python-0.1.0/crates/auths-crypto/src/webcrypto_provider.rs +115 -0
- auths_python-0.1.0/crates/auths-crypto/tests/cases/mod.rs +4 -0
- auths_python-0.1.0/crates/auths-crypto/tests/cases/provider.rs +69 -0
- auths_python-0.1.0/crates/auths-crypto/tests/cases/ssh.rs +40 -0
- auths_python-0.1.0/crates/auths-crypto/tests/integration.rs +10 -0
- auths_python-0.1.0/crates/auths-crypto/tests/wasm_provider.rs +84 -0
- auths_python-0.1.0/crates/auths-id/Cargo.toml +75 -0
- auths_python-0.1.0/crates/auths-id/README.md +23 -0
- auths_python-0.1.0/crates/auths-id/clippy.toml +58 -0
- auths_python-0.1.0/crates/auths-id/src/agent_identity.rs +469 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/core.rs +128 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/create.rs +206 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/encoders.rs +6 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/export.rs +24 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/group.rs +48 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/json_schema_encoder.rs +43 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/load.rs +68 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/mod.rs +15 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/revoke.rs +115 -0
- auths_python-0.1.0/crates/auths-id/src/attestation/verify.rs +204 -0
- auths_python-0.1.0/crates/auths-id/src/domain/attestation_message.rs +102 -0
- auths_python-0.1.0/crates/auths-id/src/domain/kel_port.rs +69 -0
- auths_python-0.1.0/crates/auths-id/src/domain/keri_resolve.rs +295 -0
- auths_python-0.1.0/crates/auths-id/src/domain/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-id/src/error.rs +147 -0
- auths_python-0.1.0/crates/auths-id/src/freeze.rs +287 -0
- auths_python-0.1.0/crates/auths-id/src/identity/events.rs +145 -0
- auths_python-0.1.0/crates/auths-id/src/identity/helpers.rs +174 -0
- auths_python-0.1.0/crates/auths-id/src/identity/initialize.rs +196 -0
- auths_python-0.1.0/crates/auths-id/src/identity/managed.rs +9 -0
- auths_python-0.1.0/crates/auths-id/src/identity/mod.rs +15 -0
- auths_python-0.1.0/crates/auths-id/src/identity/resolve.rs +250 -0
- auths_python-0.1.0/crates/auths-id/src/identity/rotate.rs +338 -0
- auths_python-0.1.0/crates/auths-id/src/keri/anchor.rs +546 -0
- auths_python-0.1.0/crates/auths-id/src/keri/cache.rs +608 -0
- auths_python-0.1.0/crates/auths-id/src/keri/event.rs +651 -0
- auths_python-0.1.0/crates/auths-id/src/keri/inception.rs +513 -0
- auths_python-0.1.0/crates/auths-id/src/keri/incremental.rs +442 -0
- auths_python-0.1.0/crates/auths-id/src/keri/kel.rs +1051 -0
- auths_python-0.1.0/crates/auths-id/src/keri/mod.rs +153 -0
- auths_python-0.1.0/crates/auths-id/src/keri/resolve.rs +335 -0
- auths_python-0.1.0/crates/auths-id/src/keri/rotation.rs +666 -0
- auths_python-0.1.0/crates/auths-id/src/keri/seal.rs +155 -0
- auths_python-0.1.0/crates/auths-id/src/keri/state.rs +221 -0
- auths_python-0.1.0/crates/auths-id/src/keri/types.rs +72 -0
- auths_python-0.1.0/crates/auths-id/src/keri/validate.rs +1344 -0
- auths_python-0.1.0/crates/auths-id/src/keri/witness_integration.rs +131 -0
- auths_python-0.1.0/crates/auths-id/src/lib.rs +74 -0
- auths_python-0.1.0/crates/auths-id/src/policy/mod.rs +862 -0
- auths_python-0.1.0/crates/auths-id/src/ports/mod.rs +18 -0
- auths_python-0.1.0/crates/auths-id/src/ports/registry.rs +14 -0
- auths_python-0.1.0/crates/auths-id/src/ports/storage.rs +9 -0
- auths_python-0.1.0/crates/auths-id/src/storage/attestation.rs +76 -0
- auths_python-0.1.0/crates/auths-id/src/storage/driver.rs +166 -0
- auths_python-0.1.0/crates/auths-id/src/storage/git_refs.rs +43 -0
- auths_python-0.1.0/crates/auths-id/src/storage/identity.rs +35 -0
- auths_python-0.1.0/crates/auths-id/src/storage/indexed.rs +169 -0
- auths_python-0.1.0/crates/auths-id/src/storage/keri.rs +655 -0
- auths_python-0.1.0/crates/auths-id/src/storage/layout.rs +402 -0
- auths_python-0.1.0/crates/auths-id/src/storage/mod.rs +19 -0
- auths_python-0.1.0/crates/auths-id/src/storage/receipts.rs +466 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/backend.rs +881 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/hooks.rs +579 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/mod.rs +24 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/org_member.rs +387 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/schemas.rs +246 -0
- auths_python-0.1.0/crates/auths-id/src/storage/registry/shard.rs +540 -0
- auths_python-0.1.0/crates/auths-id/src/testing/contracts/mod.rs +1 -0
- auths_python-0.1.0/crates/auths-id/src/testing/contracts/registry.rs +337 -0
- auths_python-0.1.0/crates/auths-id/src/testing/fakes/attestation.rs +85 -0
- auths_python-0.1.0/crates/auths-id/src/testing/fakes/identity_storage.rs +57 -0
- auths_python-0.1.0/crates/auths-id/src/testing/fakes/mod.rs +10 -0
- auths_python-0.1.0/crates/auths-id/src/testing/fakes/registry.rs +321 -0
- auths_python-0.1.0/crates/auths-id/src/testing/fixtures.rs +104 -0
- auths_python-0.1.0/crates/auths-id/src/testing/mocks.rs +88 -0
- auths_python-0.1.0/crates/auths-id/src/testing/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-id/src/trailer.rs +342 -0
- auths_python-0.1.0/crates/auths-id/src/trust/mod.rs +141 -0
- auths_python-0.1.0/crates/auths-id/src/witness.rs +97 -0
- auths_python-0.1.0/crates/auths-id/src/witness_config.rs +128 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/keri.rs +341 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/lifecycle.rs +531 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/proptest_keri.rs +261 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/recovery.rs +151 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/registry_contract.rs +4 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/rotation_edge_cases.rs +268 -0
- auths_python-0.1.0/crates/auths-id/tests/cases/serialization_pinning.rs +145 -0
- auths_python-0.1.0/crates/auths-id/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-infra-git/Cargo.toml +28 -0
- auths_python-0.1.0/crates/auths-infra-git/src/audit.rs +143 -0
- auths_python-0.1.0/crates/auths-infra-git/src/blob_store.rs +100 -0
- auths_python-0.1.0/crates/auths-infra-git/src/error.rs +113 -0
- auths_python-0.1.0/crates/auths-infra-git/src/event_log.rs +106 -0
- auths_python-0.1.0/crates/auths-infra-git/src/helpers.rs +72 -0
- auths_python-0.1.0/crates/auths-infra-git/src/lib.rs +25 -0
- auths_python-0.1.0/crates/auths-infra-git/src/ref_store.rs +66 -0
- auths_python-0.1.0/crates/auths-infra-git/src/repo.rs +74 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/cases/blob_store.rs +89 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/cases/event_log.rs +72 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/cases/git_log_contract.rs +58 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/cases/mod.rs +4 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/cases/ref_store.rs +65 -0
- auths_python-0.1.0/crates/auths-infra-git/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-infra-http/Cargo.toml +47 -0
- auths_python-0.1.0/crates/auths-infra-http/src/async_witness_client.rs +285 -0
- auths_python-0.1.0/crates/auths-infra-http/src/claim_client.rs +91 -0
- auths_python-0.1.0/crates/auths-infra-http/src/error.rs +76 -0
- auths_python-0.1.0/crates/auths-infra-http/src/github_gist.rs +91 -0
- auths_python-0.1.0/crates/auths-infra-http/src/github_oauth.rs +195 -0
- auths_python-0.1.0/crates/auths-infra-http/src/github_ssh_keys.rs +305 -0
- auths_python-0.1.0/crates/auths-infra-http/src/identity_resolver.rs +94 -0
- auths_python-0.1.0/crates/auths-infra-http/src/lib.rs +76 -0
- auths_python-0.1.0/crates/auths-infra-http/src/namespace/cargo_verifier.rs +317 -0
- auths_python-0.1.0/crates/auths-infra-http/src/namespace/mod.rs +30 -0
- auths_python-0.1.0/crates/auths-infra-http/src/namespace/npm_verifier.rs +325 -0
- auths_python-0.1.0/crates/auths-infra-http/src/namespace/pypi_verifier.rs +428 -0
- auths_python-0.1.0/crates/auths-infra-http/src/npm_auth.rs +77 -0
- auths_python-0.1.0/crates/auths-infra-http/src/oidc_platforms.rs +275 -0
- auths_python-0.1.0/crates/auths-infra-http/src/oidc_tsa_client.rs +90 -0
- auths_python-0.1.0/crates/auths-infra-http/src/oidc_validator.rs +356 -0
- auths_python-0.1.0/crates/auths-infra-http/src/pairing_client.rs +293 -0
- auths_python-0.1.0/crates/auths-infra-http/src/platform_context.rs +120 -0
- auths_python-0.1.0/crates/auths-infra-http/src/registry_client.rs +160 -0
- auths_python-0.1.0/crates/auths-infra-http/src/request.rs +90 -0
- auths_python-0.1.0/crates/auths-infra-http/src/witness_client.rs +77 -0
- auths_python-0.1.0/crates/auths-infra-http/tests/cases/mod.rs +2 -0
- auths_python-0.1.0/crates/auths-infra-http/tests/cases/witness.rs +179 -0
- auths_python-0.1.0/crates/auths-infra-http/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-oidc-port/Cargo.toml +19 -0
- auths_python-0.1.0/crates/auths-oidc-port/README.md +33 -0
- auths_python-0.1.0/crates/auths-oidc-port/src/error.rs +205 -0
- auths_python-0.1.0/crates/auths-oidc-port/src/lib.rs +10 -0
- auths_python-0.1.0/crates/auths-oidc-port/src/ports.rs +321 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/Cargo.toml +44 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/README.md +59 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/docs/mdns_discovery.md +35 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/discovery.rs +199 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/error.rs +26 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/handlers.rs +152 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/lib.rs +45 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/network.rs +133 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/rate_limiter.rs +139 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/router.rs +61 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/security_audit.md +113 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/server.rs +293 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/state.rs +209 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/src/token.rs +58 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/cases/builder.rs +41 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/cases/mod.rs +34 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/cases/rate_limiter.rs +41 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/cases/router.rs +286 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/cases/token.rs +22 -0
- auths_python-0.1.0/crates/auths-pairing-daemon/tests/integration.rs +1 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/Cargo.toml +37 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/error.rs +50 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/lib.rs +23 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/protocol.rs +315 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/response.rs +291 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/sas.rs +367 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/token.rs +329 -0
- auths_python-0.1.0/crates/auths-pairing-protocol/src/types.rs +131 -0
- auths_python-0.1.0/crates/auths-policy/Cargo.toml +25 -0
- auths_python-0.1.0/crates/auths-policy/README.md +23 -0
- auths_python-0.1.0/crates/auths-policy/src/approval.rs +158 -0
- auths_python-0.1.0/crates/auths-policy/src/builder.rs +610 -0
- auths_python-0.1.0/crates/auths-policy/src/compile.rs +995 -0
- auths_python-0.1.0/crates/auths-policy/src/compiled.rs +343 -0
- auths_python-0.1.0/crates/auths-policy/src/context.rs +355 -0
- auths_python-0.1.0/crates/auths-policy/src/decision.rs +277 -0
- auths_python-0.1.0/crates/auths-policy/src/enforce.rs +228 -0
- auths_python-0.1.0/crates/auths-policy/src/eval.rs +965 -0
- auths_python-0.1.0/crates/auths-policy/src/expr.rs +358 -0
- auths_python-0.1.0/crates/auths-policy/src/glob.rs +280 -0
- auths_python-0.1.0/crates/auths-policy/src/lib.rs +65 -0
- auths_python-0.1.0/crates/auths-policy/src/trust.rs +373 -0
- auths_python-0.1.0/crates/auths-policy/src/types.rs +570 -0
- auths_python-0.1.0/crates/auths-policy/tests/cases/approval.rs +356 -0
- auths_python-0.1.0/crates/auths-policy/tests/cases/mod.rs +1 -0
- auths_python-0.1.0/crates/auths-policy/tests/integration.rs +3 -0
- auths_python-0.1.0/crates/auths-sdk/Cargo.toml +60 -0
- auths_python-0.1.0/crates/auths-sdk/README.md +249 -0
- auths_python-0.1.0/crates/auths-sdk/clippy.toml +58 -0
- auths_python-0.1.0/crates/auths-sdk/docs/wasm_compatibility.md +23 -0
- auths_python-0.1.0/crates/auths-sdk/src/audit.rs +22 -0
- auths_python-0.1.0/crates/auths-sdk/src/context.rs +453 -0
- auths_python-0.1.0/crates/auths-sdk/src/device.rs +3 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/delegation.rs +187 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/mod.rs +24 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/persistence.rs +29 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/registry.rs +319 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/service.rs +212 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/agents/types.rs +133 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/auth/error.rs +135 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/auth/mod.rs +12 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/auth/service.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/auth/types.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/ci/environment.rs +56 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/ci/error.rs +75 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/ci/mod.rs +9 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/ci/types.rs +48 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/compliance/error.rs +68 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/compliance/mod.rs +12 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/compliance/service.rs +108 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/compliance/types.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/device/error.rs +152 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/device/mod.rs +11 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/device/service.rs +348 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/device/types.rs +144 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/diagnostics/error.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/diagnostics/mod.rs +8 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/diagnostics/service.rs +119 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/diagnostics/types.rs +54 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/error.rs +258 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/mod.rs +19 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/provision.rs +183 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/registration.rs +119 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/rotation.rs +840 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/service.rs +482 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/identity/types.rs +625 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/mod.rs +21 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/namespace/error.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/namespace/mod.rs +10 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/namespace/service.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/namespace/types.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/org/error.rs +121 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/org/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/org/service.rs +546 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/org/types.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/signing/error.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/signing/mod.rs +7 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/signing/platform.rs +84 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/signing/service.rs +514 -0
- auths_python-0.1.0/crates/auths-sdk/src/domains/signing/types.rs +67 -0
- auths_python-0.1.0/crates/auths-sdk/src/error.rs +51 -0
- auths_python-0.1.0/crates/auths-sdk/src/keys.rs +108 -0
- auths_python-0.1.0/crates/auths-sdk/src/lib.rs +74 -0
- auths_python-0.1.0/crates/auths-sdk/src/namespace_registry.rs +111 -0
- auths_python-0.1.0/crates/auths-sdk/src/oidc_jti_registry.rs +186 -0
- auths_python-0.1.0/crates/auths-sdk/src/pairing/lan.rs +46 -0
- auths_python-0.1.0/crates/auths-sdk/src/pairing/mod.rs +861 -0
- auths_python-0.1.0/crates/auths-sdk/src/platform.rs +3 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/agent.rs +163 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/allowed_signers.rs +25 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/artifact.rs +74 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/diagnostics.rs +149 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/git.rs +117 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/git_config.rs +22 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/mod.rs +16 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/pairing.rs +2 -0
- auths_python-0.1.0/crates/auths-sdk/src/ports/platform.rs +10 -0
- auths_python-0.1.0/crates/auths-sdk/src/presentation/html.rs +156 -0
- auths_python-0.1.0/crates/auths-sdk/src/presentation/mod.rs +1 -0
- auths_python-0.1.0/crates/auths-sdk/src/registration.rs +4 -0
- auths_python-0.1.0/crates/auths-sdk/src/result.rs +18 -0
- auths_python-0.1.0/crates/auths-sdk/src/setup.rs +3 -0
- auths_python-0.1.0/crates/auths-sdk/src/signing.rs +7 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/contracts/artifact.rs +57 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/contracts/diagnostics.rs +78 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/contracts/git_config.rs +49 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/contracts/git_log.rs +60 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/contracts/mod.rs +9 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/agent.rs +147 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/allowed_signers_store.rs +105 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/artifact.rs +133 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/diagnostics.rs +92 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/git.rs +60 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/git_config.rs +111 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/mod.rs +17 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/namespace.rs +99 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/fakes/signer.rs +33 -0
- auths_python-0.1.0/crates/auths-sdk/src/testing/mod.rs +4 -0
- auths_python-0.1.0/crates/auths-sdk/src/types.rs +15 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/allowed_signers.rs +635 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/approval.rs +108 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/artifact.rs +186 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/audit.rs +145 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/auth.rs +188 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/ci/batch_attest.rs +281 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/ci/machine_identity.rs +422 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/ci/mod.rs +6 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/diagnostics.rs +119 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/git_integration.rs +39 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/mcp.rs +121 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/mod.rs +21 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/namespace.rs +527 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/org.rs +546 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/platform.rs +490 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/policy_diff.rs +243 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/provision.rs +183 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/rotation.rs +839 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/signing.rs +237 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/status.rs +188 -0
- auths_python-0.1.0/crates/auths-sdk/src/workflows/transparency.rs +569 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/allowed_signers.rs +176 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/artifact.rs +191 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/audit.rs +109 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/ci_setup.rs +93 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/device.rs +148 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/diagnostics.rs +97 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/helpers.rs +125 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/mod.rs +13 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/org.rs +572 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/pairing.rs +123 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/rotation.rs +302 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/setup.rs +124 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/signing.rs +219 -0
- auths_python-0.1.0/crates/auths-sdk/tests/cases/ssh_key_upload.rs +115 -0
- auths_python-0.1.0/crates/auths-sdk/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-sdk/tests/sign_commit_attestation.rs +221 -0
- auths_python-0.1.0/crates/auths-storage/Cargo.toml +59 -0
- auths_python-0.1.0/crates/auths-storage/README.md +44 -0
- auths_python-0.1.0/crates/auths-storage/benches/registry.rs +334 -0
- auths_python-0.1.0/crates/auths-storage/src/git/adapter.rs +4206 -0
- auths_python-0.1.0/crates/auths-storage/src/git/approval.rs +233 -0
- auths_python-0.1.0/crates/auths-storage/src/git/attestation_adapter.rs +341 -0
- auths_python-0.1.0/crates/auths-storage/src/git/config.rs +121 -0
- auths_python-0.1.0/crates/auths-storage/src/git/identity_adapter.rs +427 -0
- auths_python-0.1.0/crates/auths-storage/src/git/mod.rs +21 -0
- auths_python-0.1.0/crates/auths-storage/src/git/paths.rs +164 -0
- auths_python-0.1.0/crates/auths-storage/src/git/standalone_attestation.rs +227 -0
- auths_python-0.1.0/crates/auths-storage/src/git/standalone_export.rs +162 -0
- auths_python-0.1.0/crates/auths-storage/src/git/standalone_identity.rs +185 -0
- auths_python-0.1.0/crates/auths-storage/src/git/tree_ops.rs +607 -0
- auths_python-0.1.0/crates/auths-storage/src/git/vfs.rs +247 -0
- auths_python-0.1.0/crates/auths-storage/src/lib.rs +34 -0
- auths_python-0.1.0/crates/auths-storage/src/postgres/adapter.rs +149 -0
- auths_python-0.1.0/crates/auths-storage/src/postgres/mod.rs +3 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/batch_events.rs +115 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/concurrent_batch.rs +290 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/concurrent_writes.rs +181 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/mock_ed25519_keypairs.rs +261 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/mod.rs +6 -0
- auths_python-0.1.0/crates/auths-storage/tests/cases/registry_contract.rs +9 -0
- auths_python-0.1.0/crates/auths-storage/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-telemetry/Cargo.toml +40 -0
- auths_python-0.1.0/crates/auths-telemetry/src/config.rs +234 -0
- auths_python-0.1.0/crates/auths-telemetry/src/emitter.rs +79 -0
- auths_python-0.1.0/crates/auths-telemetry/src/event.rs +54 -0
- auths_python-0.1.0/crates/auths-telemetry/src/lib.rs +42 -0
- auths_python-0.1.0/crates/auths-telemetry/src/logging.rs +79 -0
- auths_python-0.1.0/crates/auths-telemetry/src/metrics.rs +22 -0
- auths_python-0.1.0/crates/auths-telemetry/src/ports.rs +26 -0
- auths_python-0.1.0/crates/auths-telemetry/src/sinks/composite.rs +90 -0
- auths_python-0.1.0/crates/auths-telemetry/src/sinks/http.rs +236 -0
- auths_python-0.1.0/crates/auths-telemetry/src/sinks/mod.rs +6 -0
- auths_python-0.1.0/crates/auths-telemetry/src/sinks/stdout.rs +48 -0
- auths_python-0.1.0/crates/auths-telemetry/src/testing.rs +139 -0
- auths_python-0.1.0/crates/auths-telemetry/telemetry-schema.md +88 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/composite.rs +96 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/config.rs +168 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/emitter.rs +55 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/http_sink.rs +202 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/mod.rs +6 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/cases/schema.rs +49 -0
- auths_python-0.1.0/crates/auths-telemetry/tests/integration.rs +9 -0
- auths_python-0.1.0/crates/auths-transparency/Cargo.toml +48 -0
- auths_python-0.1.0/crates/auths-transparency/clippy.toml +21 -0
- auths_python-0.1.0/crates/auths-transparency/src/bundle.rs +363 -0
- auths_python-0.1.0/crates/auths-transparency/src/checkpoint.rs +146 -0
- auths_python-0.1.0/crates/auths-transparency/src/entry.rs +256 -0
- auths_python-0.1.0/crates/auths-transparency/src/error.rs +43 -0
- auths_python-0.1.0/crates/auths-transparency/src/fs_store.rs +178 -0
- auths_python-0.1.0/crates/auths-transparency/src/lib.rs +132 -0
- auths_python-0.1.0/crates/auths-transparency/src/merkle.rs +603 -0
- auths_python-0.1.0/crates/auths-transparency/src/note.rs +232 -0
- auths_python-0.1.0/crates/auths-transparency/src/proof.rs +125 -0
- auths_python-0.1.0/crates/auths-transparency/src/s3_store.rs +176 -0
- auths_python-0.1.0/crates/auths-transparency/src/store.rs +30 -0
- auths_python-0.1.0/crates/auths-transparency/src/tile.rs +149 -0
- auths_python-0.1.0/crates/auths-transparency/src/types.rs +202 -0
- auths_python-0.1.0/crates/auths-transparency/src/verify.rs +797 -0
- auths_python-0.1.0/crates/auths-transparency/src/witness.rs +554 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/merkle.rs +113 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/mod.rs +6 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/note.rs +85 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/tile.rs +70 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/verify.rs +276 -0
- auths_python-0.1.0/crates/auths-transparency/tests/cases/witness.rs +239 -0
- auths_python-0.1.0/crates/auths-transparency/tests/integration.rs +2 -0
- auths_python-0.1.0/crates/auths-utils/Cargo.toml +15 -0
- auths_python-0.1.0/crates/auths-utils/src/lib.rs +2 -0
- auths_python-0.1.0/crates/auths-utils/src/path.rs +35 -0
- auths_python-0.1.0/crates/auths-utils/src/url.rs +19 -0
- auths_python-0.1.0/crates/auths-utils/tests/cases/mod.rs +2 -0
- auths_python-0.1.0/crates/auths-utils/tests/cases/path.rs +30 -0
- auths_python-0.1.0/crates/auths-utils/tests/cases/url.rs +13 -0
- auths_python-0.1.0/crates/auths-utils/tests/integration.rs +1 -0
- auths_python-0.1.0/crates/auths-verifier/Cargo.toml +64 -0
- auths_python-0.1.0/crates/auths-verifier/README.md +205 -0
- auths_python-0.1.0/crates/auths-verifier/cbindgen.toml +6 -0
- auths_python-0.1.0/crates/auths-verifier/src/action.rs +194 -0
- auths_python-0.1.0/crates/auths-verifier/src/clock.rs +41 -0
- auths_python-0.1.0/crates/auths-verifier/src/commit.rs +271 -0
- auths_python-0.1.0/crates/auths-verifier/src/commit_error.rs +102 -0
- auths_python-0.1.0/crates/auths-verifier/src/core.rs +1905 -0
- auths_python-0.1.0/crates/auths-verifier/src/error.rs +180 -0
- auths_python-0.1.0/crates/auths-verifier/src/ffi.rs +552 -0
- auths_python-0.1.0/crates/auths-verifier/src/keri.rs +1329 -0
- auths_python-0.1.0/crates/auths-verifier/src/lib.rs +290 -0
- auths_python-0.1.0/crates/auths-verifier/src/ssh_sig.rs +356 -0
- auths_python-0.1.0/crates/auths-verifier/src/testing.rs +257 -0
- auths_python-0.1.0/crates/auths-verifier/src/types.rs +911 -0
- auths_python-0.1.0/crates/auths-verifier/src/verifier.rs +225 -0
- auths_python-0.1.0/crates/auths-verifier/src/verify.rs +1987 -0
- auths_python-0.1.0/crates/auths-verifier/src/wasm.rs +460 -0
- auths_python-0.1.0/crates/auths-verifier/src/witness.rs +333 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/capability_fromstr.rs +83 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/commit_verify.rs +116 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/did_parsing.rs +311 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/expiration_skew.rs +290 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/ffi_smoke.rs +333 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/kel_verification.rs +165 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/mod.rs +12 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/newtypes.rs +209 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/proptest_core.rs +256 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/revocation_adversarial.rs +145 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/serialization_pinning.rs +305 -0
- auths_python-0.1.0/crates/auths-verifier/tests/cases/ssh_sig.rs +60 -0
- auths_python-0.1.0/crates/auths-verifier/tests/fixtures/payload.txt +5 -0
- auths_python-0.1.0/crates/auths-verifier/tests/fixtures/pubkey.hex +1 -0
- auths_python-0.1.0/crates/auths-verifier/tests/fixtures/signature.pem +6 -0
- auths_python-0.1.0/crates/auths-verifier/tests/fixtures/signed_commit.txt +11 -0
- auths_python-0.1.0/crates/auths-verifier/tests/integration.rs +10 -0
- auths_python-0.1.0/crates/auths-verifier/tests/wasm_bindings.rs +73 -0
- auths_python-0.1.0/packages/auths-python/Cargo.lock +4870 -0
- auths_python-0.1.0/packages/auths-python/Cargo.toml +41 -0
- auths_python-0.1.0/packages/auths-python/README.md +124 -0
- auths_python-0.1.0/packages/auths-python/docs/releases.md +29 -0
- auths_python-0.1.0/packages/auths-python/examples/quickstart.py +14 -0
- auths_python-0.1.0/packages/auths-python/src/artifact_publish.rs +129 -0
- auths_python-0.1.0/packages/auths-python/src/artifact_sign.rs +271 -0
- auths_python-0.1.0/packages/auths-python/src/attestation_query.rs +168 -0
- auths_python-0.1.0/packages/auths-python/src/audit.rs +143 -0
- auths_python-0.1.0/packages/auths-python/src/commit_sign.rs +98 -0
- auths_python-0.1.0/packages/auths-python/src/commit_verify.rs +114 -0
- auths_python-0.1.0/packages/auths-python/src/device_ext.rs +125 -0
- auths_python-0.1.0/packages/auths-python/src/diagnostics.rs +108 -0
- auths_python-0.1.0/packages/auths-python/src/git_integration.rs +51 -0
- auths_python-0.1.0/packages/auths-python/src/identity.rs +631 -0
- auths_python-0.1.0/packages/auths-python/src/identity_sign.rs +331 -0
- auths_python-0.1.0/packages/auths-python/src/lib.rs +138 -0
- auths_python-0.1.0/packages/auths-python/src/org.rs +432 -0
- auths_python-0.1.0/packages/auths-python/src/pairing.rs +451 -0
- auths_python-0.1.0/packages/auths-python/src/policy.rs +192 -0
- auths_python-0.1.0/packages/auths-python/src/rotation.rs +128 -0
- auths_python-0.1.0/packages/auths-python/src/runtime.rs +12 -0
- auths_python-0.1.0/packages/auths-python/src/sign.rs +176 -0
- auths_python-0.1.0/packages/auths-python/src/token.rs +94 -0
- auths_python-0.1.0/packages/auths-python/src/trust.rs +209 -0
- auths_python-0.1.0/packages/auths-python/src/types.rs +195 -0
- auths_python-0.1.0/packages/auths-python/src/verify.rs +596 -0
- auths_python-0.1.0/packages/auths-python/src/witness.rs +136 -0
- auths_python-0.1.0/packages/auths-python/tests/conftest.py +87 -0
- auths_python-0.1.0/packages/auths-python/tests/test_agent.py +65 -0
- auths_python-0.1.0/packages/auths-python/tests/test_artifact_sign.py +183 -0
- auths_python-0.1.0/packages/auths-python/tests/test_attestation_query.py +108 -0
- auths_python-0.1.0/packages/auths-python/tests/test_audit.py +119 -0
- auths_python-0.1.0/packages/auths-python/tests/test_client.py +57 -0
- auths_python-0.1.0/packages/auths-python/tests/test_commit_sign.py +54 -0
- auths_python-0.1.0/packages/auths-python/tests/test_device_ext.py +57 -0
- auths_python-0.1.0/packages/auths-python/tests/test_doctor.py +30 -0
- auths_python-0.1.0/packages/auths-python/tests/test_git.py +323 -0
- auths_python-0.1.0/packages/auths-python/tests/test_identity.py +65 -0
- auths_python-0.1.0/packages/auths-python/tests/test_identity_sign.py +45 -0
- auths_python-0.1.0/packages/auths-python/tests/test_imports.py +56 -0
- auths_python-0.1.0/packages/auths-python/tests/test_jwt.py +105 -0
- auths_python-0.1.0/packages/auths-python/tests/test_org.py +162 -0
- auths_python-0.1.0/packages/auths-python/tests/test_org_debug.py +59 -0
- auths_python-0.1.0/packages/auths-python/tests/test_pairing.py +163 -0
- auths_python-0.1.0/packages/auths-python/tests/test_policy.py +283 -0
- auths_python-0.1.0/packages/auths-python/tests/test_rotation.py +87 -0
- auths_python-0.1.0/packages/auths-python/tests/test_sign.py +131 -0
- auths_python-0.1.0/packages/auths-python/tests/test_trust.py +52 -0
- auths_python-0.1.0/packages/auths-python/tests/test_verify.py +118 -0
- auths_python-0.1.0/packages/auths-python/tests/test_verify_at_time.py +102 -0
- auths_python-0.1.0/packages/auths-python/tests/test_verify_capability.py +60 -0
- auths_python-0.1.0/packages/auths-python/tests/test_verify_witnesses.py +98 -0
- auths_python-0.1.0/packages/auths-python/tests/test_witness.py +37 -0
- auths_python-0.1.0/packages/auths-python/uv.lock +577 -0
- auths_python-0.1.0/pyproject.toml +47 -0
- auths_python-0.1.0/python/auths/__init__.py +147 -0
- auths_python-0.1.0/python/auths/__init__.pyi +486 -0
- auths_python-0.1.0/python/auths/_client.py +713 -0
- auths_python-0.1.0/python/auths/_errors.py +80 -0
- auths_python-0.1.0/python/auths/agent.py +55 -0
- auths_python-0.1.0/python/auths/artifact.py +60 -0
- auths_python-0.1.0/python/auths/attestation_query.py +141 -0
- auths_python-0.1.0/python/auths/audit.py +226 -0
- auths_python-0.1.0/python/auths/commit.py +28 -0
- auths_python-0.1.0/python/auths/devices.py +162 -0
- auths_python-0.1.0/python/auths/doctor.py +109 -0
- auths_python-0.1.0/python/auths/git.py +473 -0
- auths_python-0.1.0/python/auths/identity.py +221 -0
- auths_python-0.1.0/python/auths/jwt.py +253 -0
- auths_python-0.1.0/python/auths/org.py +310 -0
- auths_python-0.1.0/python/auths/pairing.py +216 -0
- auths_python-0.1.0/python/auths/policy.py +382 -0
- auths_python-0.1.0/python/auths/py.typed +0 -0
- auths_python-0.1.0/python/auths/rotation.py +30 -0
- auths_python-0.1.0/python/auths/sign.py +5 -0
- auths_python-0.1.0/python/auths/trust.py +169 -0
- auths_python-0.1.0/python/auths/verify.py +111 -0
- auths_python-0.1.0/python/auths/witness.py +91 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "3"
|
|
3
|
+
members = [
|
|
4
|
+
"crates/auths",
|
|
5
|
+
"crates/auths-core",
|
|
6
|
+
"crates/auths-cli",
|
|
7
|
+
"crates/auths-id",
|
|
8
|
+
"crates/auths-index",
|
|
9
|
+
"crates/auths-policy",
|
|
10
|
+
"crates/auths-verifier",
|
|
11
|
+
"crates/auths-telemetry",
|
|
12
|
+
"crates/auths-crypto",
|
|
13
|
+
"crates/auths-sdk",
|
|
14
|
+
"crates/auths-infra-git",
|
|
15
|
+
"crates/auths-infra-http",
|
|
16
|
+
"crates/auths-storage",
|
|
17
|
+
"crates/auths-transparency",
|
|
18
|
+
"crates/auths-keri",
|
|
19
|
+
"crates/auths-jwt",
|
|
20
|
+
"crates/auths-mcp-server",
|
|
21
|
+
"crates/auths-pairing-daemon",
|
|
22
|
+
"crates/auths-pairing-protocol",
|
|
23
|
+
"crates/auths-radicle",
|
|
24
|
+
"crates/auths-scim",
|
|
25
|
+
"crates/auths-utils",
|
|
26
|
+
"crates/auths-oidc-port",
|
|
27
|
+
"crates/xtask", "crates/auths-api",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[workspace.package]
|
|
31
|
+
version = "0.0.1-rc.10"
|
|
32
|
+
license = "Apache-2.0"
|
|
33
|
+
rust-version = "1.93"
|
|
34
|
+
repository = "https://github.com/auths-dev/auths"
|
|
35
|
+
homepage = "https://github.com/auths-dev/auths"
|
|
36
|
+
|
|
37
|
+
[workspace.dependencies]
|
|
38
|
+
tokio = { version = "1", features = ["full"] }
|
|
39
|
+
bs58 = "0.5.1"
|
|
40
|
+
ring = "0.17.14"
|
|
41
|
+
base64 = "0.22.1"
|
|
42
|
+
thiserror = "2"
|
|
43
|
+
uuid = { version = "1", features = ["v4"] }
|
|
44
|
+
git2 = { version = "0.20.4", default-features = false, features = ["vendored-libgit2"] }
|
|
45
|
+
glob = "0.3"
|
|
46
|
+
parking_lot = "0.12"
|
|
47
|
+
schemars = "0.8"
|
|
48
|
+
subtle = "2.6"
|
|
49
|
+
zeroize = { version = "1.8.1", features = ["serde", "derive"] }
|
|
50
|
+
# Exact pin: canonicalization changes silently break all existing attestation signatures.
|
|
51
|
+
json-canon = "=0.1.3"
|
|
52
|
+
|
|
53
|
+
auths-core = { path = "crates/auths-core", version = "0.0.1-rc.9" }
|
|
54
|
+
auths-id = { path = "crates/auths-id", version = "0.0.1-rc.9" }
|
|
55
|
+
auths-verifier = { path = "crates/auths-verifier", version = "0.0.1-rc.9", default-features = false }
|
|
56
|
+
auths-policy = { path = "crates/auths-policy", version = "0.0.1-rc.9" }
|
|
57
|
+
auths-index = { path = "crates/auths-index", version = "0.0.1-rc.9" }
|
|
58
|
+
auths-telemetry = { path = "crates/auths-telemetry", version = "0.0.1-rc.9" }
|
|
59
|
+
auths-crypto = { path = "crates/auths-crypto", version = "0.0.1-rc.9", default-features = false }
|
|
60
|
+
auths-sdk = { path = "crates/auths-sdk", version = "0.0.1-rc.9" }
|
|
61
|
+
auths-infra-git = { path = "crates/auths-infra-git", version = "0.0.1-rc.9" }
|
|
62
|
+
auths-infra-http = { path = "crates/auths-infra-http", version = "0.0.1-rc.9" }
|
|
63
|
+
auths-jwt = { path = "crates/auths-jwt", version = "0.0.1-rc.9" }
|
|
64
|
+
auths-pairing-daemon = { path = "crates/auths-pairing-daemon", version = "0.0.1-rc.9" }
|
|
65
|
+
auths-pairing-protocol = { path = "crates/auths-pairing-protocol", version = "0.0.1-rc.9" }
|
|
66
|
+
auths-storage = { path = "crates/auths-storage", version = "0.0.1-rc.9" }
|
|
67
|
+
auths-transparency = { path = "crates/auths-transparency", version = "0.0.1-rc.9", default-features = false }
|
|
68
|
+
auths-utils = { path = "crates/auths-utils", version = "0.0.1-rc.9" }
|
|
69
|
+
insta = { version = "1", features = ["json"] }
|
|
70
|
+
|
|
71
|
+
# Compile crypto-heavy crates with optimizations even in dev/test builds.
|
|
72
|
+
# Without this, Argon2id key derivation (m=64 MiB, t=3) takes ~5-10s per
|
|
73
|
+
# call in unoptimized builds, causing E2E test timeouts on CI runners.
|
|
74
|
+
|
|
75
|
+
[profile.dev.package.argon2]
|
|
76
|
+
opt-level = 3
|
|
77
|
+
[profile.dev.package.chacha20poly1305]
|
|
78
|
+
opt-level = 3
|
|
79
|
+
[profile.dev.package.aes-gcm]
|
|
80
|
+
opt-level = 3
|
|
81
|
+
[profile.dev.package.ring]
|
|
82
|
+
opt-level = 3
|
|
83
|
+
|
|
84
|
+
[workspace.lints.clippy]
|
|
85
|
+
unwrap_used = "deny"
|
|
86
|
+
expect_used = "deny"
|
|
87
|
+
print_stdout = "deny"
|
|
88
|
+
print_stderr = "deny"
|
|
89
|
+
exit = "deny"
|
|
90
|
+
dbg_macro = "deny"
|
|
91
|
+
disallowed_methods = "deny"
|
|
92
|
+
|
|
93
|
+
[workspace.lints.rustdoc]
|
|
94
|
+
broken_intra_doc_links = "deny"
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: auths-python
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Classifier: Development Status :: 4 - Beta
|
|
5
|
+
Classifier: Programming Language :: Python :: 3
|
|
6
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
7
|
+
Classifier: Programming Language :: Rust
|
|
8
|
+
Classifier: Operating System :: MacOS
|
|
9
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
10
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Typing :: Typed
|
|
13
|
+
Classifier: Topic :: Security :: Cryptography
|
|
14
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
15
|
+
Requires-Dist: pyjwt>=2.0 ; extra == 'jwt'
|
|
16
|
+
Requires-Dist: cryptography>=3.0 ; extra == 'jwt'
|
|
17
|
+
Provides-Extra: jwt
|
|
18
|
+
Summary: Auths Python SDK - decentralized identity for developers and AI agents
|
|
19
|
+
Keywords: identity,cryptography,did,signing,verification,git,keri
|
|
20
|
+
License: Apache-2.0
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
23
|
+
Project-URL: Bug Tracker, https://github.com/auths-dev/auths/issues
|
|
24
|
+
Project-URL: Documentation, https://docs.auths.dev
|
|
25
|
+
Project-URL: Homepage, https://auths.dev
|
|
26
|
+
Project-URL: Repository, https://github.com/auths-dev/auths
|
|
27
|
+
|
|
28
|
+
# Auths Python SDK
|
|
29
|
+
|
|
30
|
+
Decentralized identity for developers and AI agents. Sign, verify, and manage cryptographic identities with Git-native storage.
|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install auths-python
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Quick start
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from auths import Auths
|
|
42
|
+
|
|
43
|
+
auths = Auths()
|
|
44
|
+
|
|
45
|
+
# Verify an attestation
|
|
46
|
+
result = auths.verify(attestation_json=data, issuer_key=public_key_hex)
|
|
47
|
+
print(result.valid) # True
|
|
48
|
+
|
|
49
|
+
# Sign bytes
|
|
50
|
+
signature = auths.sign(b"hello world", private_key=secret_key_hex)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Identity management
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
from auths import Auths
|
|
57
|
+
|
|
58
|
+
auths = Auths(repo_path="~/.auths")
|
|
59
|
+
|
|
60
|
+
# Create a cryptographic identity
|
|
61
|
+
identity = auths.identities.create(label="laptop")
|
|
62
|
+
print(identity.did) # did:keri:EBfd...
|
|
63
|
+
|
|
64
|
+
# Provision an agent (for CI, MCP servers, etc.)
|
|
65
|
+
agent = auths.identities.provision_agent(
|
|
66
|
+
identity.did,
|
|
67
|
+
name="deploy-bot",
|
|
68
|
+
capabilities=["sign"],
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Sign using the keychain-stored identity key
|
|
72
|
+
sig = auths.sign_as(b"hello world", identity=identity.did)
|
|
73
|
+
|
|
74
|
+
# Link and manage devices
|
|
75
|
+
device = auths.devices.link(identity_did=identity.did, capabilities=["sign"])
|
|
76
|
+
auths.devices.revoke(device.did, identity_did=identity.did, note="replaced")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Git commit verification
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from auths.git import verify_commit_range
|
|
83
|
+
|
|
84
|
+
result = verify_commit_range("HEAD~5..HEAD")
|
|
85
|
+
for commit in result.commits:
|
|
86
|
+
print(f"{commit.commit_sha}: {'valid' if commit.is_valid else commit.error}")
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Capability-aware verification
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
# Verify an attestation grants a specific capability
|
|
93
|
+
result = auths.verify(attestation_json=data, issuer_key=key, required_capability="sign_commit")
|
|
94
|
+
|
|
95
|
+
# Verify an entire chain grants a capability
|
|
96
|
+
report = auths.verify_chain(chain, root_key, required_capability="deploy")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Agent auth for MCP / AI frameworks
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from auths.agent import AgentAuth
|
|
103
|
+
|
|
104
|
+
auth = AgentAuth(
|
|
105
|
+
bridge_url="https://bridge.example.com",
|
|
106
|
+
attestation_chain_path=".auths/agent-chain.json",
|
|
107
|
+
)
|
|
108
|
+
token = auth.get_token(capabilities=["read", "write"])
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Error handling
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
from auths import Auths, VerificationError, NetworkError
|
|
115
|
+
|
|
116
|
+
auths = Auths()
|
|
117
|
+
try:
|
|
118
|
+
result = auths.verify(attestation_json=data, issuer_key=key)
|
|
119
|
+
except VerificationError as e:
|
|
120
|
+
print(e.code) # "expired_attestation"
|
|
121
|
+
print(e.message) # "Attestation expired at 2024-01-15T..."
|
|
122
|
+
except NetworkError as e:
|
|
123
|
+
if e.should_retry:
|
|
124
|
+
pass # safe to retry
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
All errors inherit from `AuthsError` and carry `.code`, `.message`, and `.context`.
|
|
128
|
+
|
|
129
|
+
## Configuration
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
# Auto-discover (uses ~/.auths)
|
|
133
|
+
auths = Auths()
|
|
134
|
+
|
|
135
|
+
# Explicit repo path
|
|
136
|
+
auths = Auths(repo_path="/path/to/identity-repo")
|
|
137
|
+
|
|
138
|
+
# With passphrase (or set AUTHS_PASSPHRASE env var)
|
|
139
|
+
auths = Auths(passphrase="my-secret")
|
|
140
|
+
|
|
141
|
+
# Headless / CI mode
|
|
142
|
+
# Set AUTHS_KEYCHAIN_BACKEND=file for environments without a system keychain
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## API reference
|
|
146
|
+
|
|
147
|
+
Type stubs are bundled (`py.typed` + `__init__.pyi`). Your editor will show full signatures, docstrings, and return types for all methods.
|
|
148
|
+
|
|
149
|
+
## License
|
|
150
|
+
|
|
151
|
+
Apache-2.0
|
|
152
|
+
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Auths Python SDK
|
|
2
|
+
|
|
3
|
+
Decentralized identity for developers and AI agents. Sign, verify, and manage cryptographic identities with Git-native storage.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install auths-python
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from auths import Auths
|
|
15
|
+
|
|
16
|
+
auths = Auths()
|
|
17
|
+
|
|
18
|
+
# Verify an attestation
|
|
19
|
+
result = auths.verify(attestation_json=data, issuer_key=public_key_hex)
|
|
20
|
+
print(result.valid) # True
|
|
21
|
+
|
|
22
|
+
# Sign bytes
|
|
23
|
+
signature = auths.sign(b"hello world", private_key=secret_key_hex)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Identity management
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
from auths import Auths
|
|
30
|
+
|
|
31
|
+
auths = Auths(repo_path="~/.auths")
|
|
32
|
+
|
|
33
|
+
# Create a cryptographic identity
|
|
34
|
+
identity = auths.identities.create(label="laptop")
|
|
35
|
+
print(identity.did) # did:keri:EBfd...
|
|
36
|
+
|
|
37
|
+
# Provision an agent (for CI, MCP servers, etc.)
|
|
38
|
+
agent = auths.identities.provision_agent(
|
|
39
|
+
identity.did,
|
|
40
|
+
name="deploy-bot",
|
|
41
|
+
capabilities=["sign"],
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# Sign using the keychain-stored identity key
|
|
45
|
+
sig = auths.sign_as(b"hello world", identity=identity.did)
|
|
46
|
+
|
|
47
|
+
# Link and manage devices
|
|
48
|
+
device = auths.devices.link(identity_did=identity.did, capabilities=["sign"])
|
|
49
|
+
auths.devices.revoke(device.did, identity_did=identity.did, note="replaced")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Git commit verification
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from auths.git import verify_commit_range
|
|
56
|
+
|
|
57
|
+
result = verify_commit_range("HEAD~5..HEAD")
|
|
58
|
+
for commit in result.commits:
|
|
59
|
+
print(f"{commit.commit_sha}: {'valid' if commit.is_valid else commit.error}")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Capability-aware verification
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
# Verify an attestation grants a specific capability
|
|
66
|
+
result = auths.verify(attestation_json=data, issuer_key=key, required_capability="sign_commit")
|
|
67
|
+
|
|
68
|
+
# Verify an entire chain grants a capability
|
|
69
|
+
report = auths.verify_chain(chain, root_key, required_capability="deploy")
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Agent auth for MCP / AI frameworks
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
from auths.agent import AgentAuth
|
|
76
|
+
|
|
77
|
+
auth = AgentAuth(
|
|
78
|
+
bridge_url="https://bridge.example.com",
|
|
79
|
+
attestation_chain_path=".auths/agent-chain.json",
|
|
80
|
+
)
|
|
81
|
+
token = auth.get_token(capabilities=["read", "write"])
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Error handling
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from auths import Auths, VerificationError, NetworkError
|
|
88
|
+
|
|
89
|
+
auths = Auths()
|
|
90
|
+
try:
|
|
91
|
+
result = auths.verify(attestation_json=data, issuer_key=key)
|
|
92
|
+
except VerificationError as e:
|
|
93
|
+
print(e.code) # "expired_attestation"
|
|
94
|
+
print(e.message) # "Attestation expired at 2024-01-15T..."
|
|
95
|
+
except NetworkError as e:
|
|
96
|
+
if e.should_retry:
|
|
97
|
+
pass # safe to retry
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
All errors inherit from `AuthsError` and carry `.code`, `.message`, and `.context`.
|
|
101
|
+
|
|
102
|
+
## Configuration
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
# Auto-discover (uses ~/.auths)
|
|
106
|
+
auths = Auths()
|
|
107
|
+
|
|
108
|
+
# Explicit repo path
|
|
109
|
+
auths = Auths(repo_path="/path/to/identity-repo")
|
|
110
|
+
|
|
111
|
+
# With passphrase (or set AUTHS_PASSPHRASE env var)
|
|
112
|
+
auths = Auths(passphrase="my-secret")
|
|
113
|
+
|
|
114
|
+
# Headless / CI mode
|
|
115
|
+
# Set AUTHS_KEYCHAIN_BACKEND=file for environments without a system keychain
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## API reference
|
|
119
|
+
|
|
120
|
+
Type stubs are bundled (`py.typed` + `__init__.pyi`). Your editor will show full signatures, docstrings, and return types for all methods.
|
|
121
|
+
|
|
122
|
+
## License
|
|
123
|
+
|
|
124
|
+
Apache-2.0
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "auths-core"
|
|
3
|
+
version.workspace = true
|
|
4
|
+
edition = "2024"
|
|
5
|
+
authors = ["bordumb <bordumbb@gmail.com>"]
|
|
6
|
+
description = "Core cryptography and keychain integration for Auths"
|
|
7
|
+
publish = true
|
|
8
|
+
license.workspace = true
|
|
9
|
+
repository.workspace = true
|
|
10
|
+
homepage.workspace = true
|
|
11
|
+
documentation = "https://docs.rs/auths-core"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
keywords = ["cryptography", "keychain", "ed25519", "ssh", "identity"]
|
|
14
|
+
categories = ["cryptography", "authentication"]
|
|
15
|
+
|
|
16
|
+
[lib]
|
|
17
|
+
crate-type = ["rlib", "staticlib"]
|
|
18
|
+
|
|
19
|
+
[dependencies]
|
|
20
|
+
chacha20poly1305 = { version = "0.10", features = ["std"] }
|
|
21
|
+
log = "0.4"
|
|
22
|
+
once_cell = "1.19"
|
|
23
|
+
serde = { version = "1.0", features = ["derive"] }
|
|
24
|
+
serde_json = "1.0"
|
|
25
|
+
toml = "1.0"
|
|
26
|
+
ssh-agent-lib = "0.5.1"
|
|
27
|
+
ssh-key = { version = "0.6.7", features = ["ed25519"] }
|
|
28
|
+
thiserror.workspace = true
|
|
29
|
+
tokio = { version = "1", features = ["full"] }
|
|
30
|
+
async-trait = "0.1"
|
|
31
|
+
zeroize.workspace = true
|
|
32
|
+
aes-gcm = "0.10.3"
|
|
33
|
+
sha2 = "0.10.8"
|
|
34
|
+
argon2 = "0.5"
|
|
35
|
+
libc = "0.2.171"
|
|
36
|
+
rand = "0.8"
|
|
37
|
+
base64.workspace = true
|
|
38
|
+
byteorder = "1.5.0"
|
|
39
|
+
dirs = "6.0.0"
|
|
40
|
+
multibase = "0.9.1"
|
|
41
|
+
auths-crypto = { workspace = true, features = ["native"] }
|
|
42
|
+
auths-pairing-protocol = { workspace = true }
|
|
43
|
+
blake3 = "1.5"
|
|
44
|
+
parking_lot.workspace = true
|
|
45
|
+
subtle.workspace = true
|
|
46
|
+
pkcs8 = "0.10.2"
|
|
47
|
+
hex = "0.4.3"
|
|
48
|
+
tempfile = "3.19.1"
|
|
49
|
+
chrono = { version = "0.4", features = ["serde"] }
|
|
50
|
+
qrcode = "0.14"
|
|
51
|
+
schemars.workspace = true
|
|
52
|
+
x25519-dalek = { version = "2", features = ["static_secrets"] }
|
|
53
|
+
|
|
54
|
+
auths-verifier = { workspace = true, features = ["native"] }
|
|
55
|
+
url = { version = "2", features = ["serde"] }
|
|
56
|
+
uuid.workspace = true
|
|
57
|
+
|
|
58
|
+
# Optional secp256k1/BIP340 Schnorr support for Nostr
|
|
59
|
+
k256 = { version = "0.13", features = ["schnorr"], optional = true }
|
|
60
|
+
|
|
61
|
+
# Optional PKCS#11 HSM support
|
|
62
|
+
cryptoki = { version = "0.12", optional = true }
|
|
63
|
+
|
|
64
|
+
# Optional witness server dependencies
|
|
65
|
+
axum = { version = "0.8", optional = true }
|
|
66
|
+
tower = { version = "0.5", features = ["util"], optional = true }
|
|
67
|
+
tower-http = { version = "0.6", features = ["trace"], optional = true }
|
|
68
|
+
sqlite = { version = "0.32", features = ["bundled"], optional = true }
|
|
69
|
+
axum-server = { version = "0.7", features = ["tls-rustls"], optional = true }
|
|
70
|
+
|
|
71
|
+
# macOS/iOS keychain dependencies
|
|
72
|
+
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies]
|
|
73
|
+
core-foundation = "0.9"
|
|
74
|
+
security-framework = { version = "2.10", features = ["OSX_10_15"] }
|
|
75
|
+
security-framework-sys = "2.9"
|
|
76
|
+
|
|
77
|
+
[target.'cfg(target_os = "linux")'.dependencies]
|
|
78
|
+
secret-service = { version = "5.0", features = ["rt-tokio-crypto-rust"], optional = true }
|
|
79
|
+
|
|
80
|
+
[target.'cfg(target_os = "windows")'.dependencies]
|
|
81
|
+
windows = { version = "0.58", features = ["Security_Credentials", "Foundation_Collections"], optional = true }
|
|
82
|
+
|
|
83
|
+
[dev-dependencies]
|
|
84
|
+
ring.workspace = true
|
|
85
|
+
anyhow = "1.0"
|
|
86
|
+
assert_matches = "1.5.0"
|
|
87
|
+
auths-verifier = { workspace = true, features = ["test-utils"] }
|
|
88
|
+
criterion = { version = "0.5", features = ["html_reports"] }
|
|
89
|
+
mockall = "0.13.1"
|
|
90
|
+
rand = "0.8"
|
|
91
|
+
tokio = { version = "1", features = ["full"] }
|
|
92
|
+
[[bench]]
|
|
93
|
+
name = "crypto"
|
|
94
|
+
harness = false
|
|
95
|
+
|
|
96
|
+
[features]
|
|
97
|
+
default = []
|
|
98
|
+
test-utils = ["auths-crypto/test-utils"]
|
|
99
|
+
keychain-linux-secretservice = ["dep:secret-service"]
|
|
100
|
+
keychain-windows = ["dep:windows"]
|
|
101
|
+
keychain-file-fallback = []
|
|
102
|
+
crypto-secp256k1 = ["dep:k256"]
|
|
103
|
+
keychain-pkcs11 = ["dep:cryptoki"]
|
|
104
|
+
witness-server = ["dep:axum", "dep:tower", "dep:tower-http", "dep:sqlite"]
|
|
105
|
+
tls = ["dep:axum-server", "witness-server"]
|
|
106
|
+
|
|
107
|
+
[lints]
|
|
108
|
+
workspace = true
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# auths-core
|
|
2
|
+
|
|
3
|
+
Core cryptography and keychain integration for Auths.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Ed25519 key generation and signing
|
|
8
|
+
- Platform keychain support (macOS, Linux, Windows)
|
|
9
|
+
- Secure key storage with encryption
|
|
10
|
+
|
|
11
|
+
## Platform Support
|
|
12
|
+
|
|
13
|
+
- macOS/iOS: Security Framework
|
|
14
|
+
- Linux: Secret Service (optional)
|
|
15
|
+
- Windows: Credential Manager (optional)
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```rust
|
|
20
|
+
use auths_core::{Keychain, KeyPair};
|
|
21
|
+
|
|
22
|
+
let keychain = Keychain::new()?;
|
|
23
|
+
let keypair = KeyPair::generate()?;
|
|
24
|
+
keychain.store("my-key", &keypair)?;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
MIT OR Apache-2.0
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
//! Benchmarks for cryptographic operations in auths-core.
|
|
2
|
+
//!
|
|
3
|
+
//! Run with: cargo bench --package auths_core
|
|
4
|
+
#![allow(clippy::unwrap_used, clippy::expect_used)]
|
|
5
|
+
|
|
6
|
+
use auths_core::crypto::signer::{SeedSignerKey, SignerKey, decrypt_keypair, encrypt_keypair};
|
|
7
|
+
use criterion::{BenchmarkId, Criterion, Throughput, black_box, criterion_group, criterion_main};
|
|
8
|
+
use ring::rand::SystemRandom;
|
|
9
|
+
use ring::signature::{Ed25519KeyPair, KeyPair};
|
|
10
|
+
|
|
11
|
+
/// Generate a test Ed25519 keypair for benchmarking (ring, for encrypt/decrypt benches).
|
|
12
|
+
fn generate_test_keypair() -> Ed25519KeyPair {
|
|
13
|
+
let rng = SystemRandom::new();
|
|
14
|
+
let pkcs8 = Ed25519KeyPair::generate_pkcs8(&rng).expect("key generation should succeed");
|
|
15
|
+
Ed25519KeyPair::from_pkcs8(pkcs8.as_ref()).expect("parsing should succeed")
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/// Generate a SeedSignerKey for benchmarking the SignerKey trait.
|
|
19
|
+
fn generate_test_signer() -> SeedSignerKey {
|
|
20
|
+
let (seed, pubkey) = auths_core::crypto::provider_bridge::generate_ed25519_keypair_sync()
|
|
21
|
+
.expect("keypair generation should succeed");
|
|
22
|
+
SeedSignerKey::new(seed, pubkey)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// Benchmark Ed25519 keypair generation.
|
|
26
|
+
fn bench_key_generation(c: &mut Criterion) {
|
|
27
|
+
let rng = SystemRandom::new();
|
|
28
|
+
|
|
29
|
+
c.bench_function("ed25519_key_generation", |b| {
|
|
30
|
+
b.iter(|| {
|
|
31
|
+
let pkcs8 =
|
|
32
|
+
Ed25519KeyPair::generate_pkcs8(&rng).expect("key generation should succeed");
|
|
33
|
+
Ed25519KeyPair::from_pkcs8(pkcs8.as_ref()).expect("parsing should succeed")
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// Benchmark Ed25519 signing with different message sizes.
|
|
39
|
+
fn bench_sign(c: &mut Criterion) {
|
|
40
|
+
let keypair = generate_test_keypair();
|
|
41
|
+
|
|
42
|
+
let mut group = c.benchmark_group("ed25519_sign");
|
|
43
|
+
|
|
44
|
+
for size in [64, 256, 1024, 4096, 16384].iter() {
|
|
45
|
+
let data = vec![0u8; *size];
|
|
46
|
+
|
|
47
|
+
group.throughput(Throughput::Bytes(*size as u64));
|
|
48
|
+
group.bench_with_input(BenchmarkId::from_parameter(size), size, |b, _| {
|
|
49
|
+
b.iter(|| keypair.sign(black_box(&data)))
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
group.finish();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/// Benchmark Ed25519 signature verification with different message sizes.
|
|
57
|
+
fn bench_verify(c: &mut Criterion) {
|
|
58
|
+
use ring::signature::{ED25519, UnparsedPublicKey};
|
|
59
|
+
|
|
60
|
+
let keypair = generate_test_keypair();
|
|
61
|
+
let public_key_bytes = keypair.public_key().as_ref();
|
|
62
|
+
|
|
63
|
+
let mut group = c.benchmark_group("ed25519_verify");
|
|
64
|
+
|
|
65
|
+
for size in [64, 256, 1024, 4096, 16384].iter() {
|
|
66
|
+
let data = vec![0u8; *size];
|
|
67
|
+
let signature = keypair.sign(&data);
|
|
68
|
+
|
|
69
|
+
group.throughput(Throughput::Bytes(*size as u64));
|
|
70
|
+
group.bench_with_input(BenchmarkId::from_parameter(size), size, |b, _| {
|
|
71
|
+
b.iter(|| {
|
|
72
|
+
let public_key = UnparsedPublicKey::new(&ED25519, public_key_bytes);
|
|
73
|
+
public_key
|
|
74
|
+
.verify(black_box(&data), black_box(signature.as_ref()))
|
|
75
|
+
.expect("verification should succeed")
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
group.finish();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/// Benchmark key encryption (encrypt_keypair).
|
|
84
|
+
fn bench_key_encryption(c: &mut Criterion) {
|
|
85
|
+
// Generate a sample PKCS#8 key
|
|
86
|
+
let rng = SystemRandom::new();
|
|
87
|
+
let pkcs8 = Ed25519KeyPair::generate_pkcs8(&rng).expect("key generation should succeed");
|
|
88
|
+
let passphrase = "Bench-P@ss12345!";
|
|
89
|
+
|
|
90
|
+
c.bench_function("key_encryption", |b| {
|
|
91
|
+
b.iter(|| encrypt_keypair(black_box(pkcs8.as_ref()), black_box(passphrase)))
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/// Benchmark key decryption (decrypt_keypair).
|
|
96
|
+
fn bench_key_decryption(c: &mut Criterion) {
|
|
97
|
+
// Generate and encrypt a sample key
|
|
98
|
+
let rng = SystemRandom::new();
|
|
99
|
+
let pkcs8 = Ed25519KeyPair::generate_pkcs8(&rng).expect("key generation should succeed");
|
|
100
|
+
let passphrase = "Bench-P@ss12345!";
|
|
101
|
+
let encrypted = encrypt_keypair(pkcs8.as_ref(), passphrase).expect("encryption should succeed");
|
|
102
|
+
|
|
103
|
+
c.bench_function("key_decryption", |b| {
|
|
104
|
+
b.iter(|| decrypt_keypair(black_box(&encrypted), black_box(passphrase)))
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/// Benchmark signing through the SignerKey trait.
|
|
109
|
+
fn bench_signer_trait(c: &mut Criterion) {
|
|
110
|
+
let signer = generate_test_signer();
|
|
111
|
+
let data = vec![0u8; 1024];
|
|
112
|
+
|
|
113
|
+
c.bench_function("signer_trait_sign_1kb", |b| {
|
|
114
|
+
b.iter(|| SignerKey::sign(&signer, black_box(&data)))
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
criterion_group!(
|
|
119
|
+
benches,
|
|
120
|
+
bench_key_generation,
|
|
121
|
+
bench_sign,
|
|
122
|
+
bench_verify,
|
|
123
|
+
bench_key_encryption,
|
|
124
|
+
bench_key_decryption,
|
|
125
|
+
bench_signer_trait,
|
|
126
|
+
);
|
|
127
|
+
criterion_main!(benches);
|