├── .circleci ├── config.yml └── requirements.txt ├── .github ├── dependabot.yml └── workflows │ └── publish-site.yml ├── .gitignore ├── 0000-template-protocol.md ├── 0000-template.md ├── LICENSE ├── MAINTAINERS.md ├── README.md ├── SECURITY.md ├── code ├── aipUpdates.py ├── check_links.py ├── cpAIPs.sh ├── genSite.sh ├── generate_index.py ├── generate_mkdocs_index.py ├── link_tags.py ├── rfcs.py └── test_rfcs.py ├── collateral ├── Hyperledger_Aries_Logo_Black.eps ├── Hyperledger_Aries_Logo_Black.jpg ├── Hyperledger_Aries_Logo_Black.png ├── Hyperledger_Aries_Logo_Black.svg ├── Hyperledger_Aries_Logo_Color.eps ├── Hyperledger_Aries_Logo_Color.jpg ├── Hyperledger_Aries_Logo_Color.png ├── Hyperledger_Aries_Logo_Color.svg ├── Hyperledger_Aries_Logo_White.eps ├── Hyperledger_Aries_Logo_White.png ├── Hyperledger_Aries_Logo_White.svg ├── aries-rfcs-logo.png ├── favicon.ico └── lifecycle-wordart.docx ├── concepts ├── 0003-protocols │ ├── README.md │ ├── adoption.png │ ├── co-protocols.png │ ├── dance.jpg │ ├── mturi-structure.png │ ├── notification.png │ ├── piuri-structure.png │ ├── protocol.png │ ├── request-response.png │ ├── roles-participants-etc.md │ ├── state-machine-thumbnail.png │ ├── super-sub.png │ ├── template-sections.png │ ├── tictactoe │ │ ├── README.md │ │ ├── ai.py │ │ ├── banner.png │ │ ├── catalog.json │ │ ├── catalog.png │ │ ├── game.py │ │ ├── handler.py │ │ ├── move-1.json │ │ ├── move-1.png │ │ ├── move-2.json │ │ ├── move-2.png │ │ ├── move-3.json │ │ ├── move-3.png │ │ ├── move-4.json │ │ ├── move-4.png │ │ ├── outcome.json │ │ ├── outcome.png │ │ ├── player-state-machine.png │ │ ├── state_machine.py │ │ ├── test_state_machine.py │ │ ├── test_tictactoe.py │ │ ├── tictactoe.png │ │ ├── tile.png │ │ ├── ~l10n.json │ │ └── ~l10n.png │ └── version-negotiation-matrix.png ├── 0004-agents │ ├── README.md │ ├── agent.png │ └── agents-by-complexity.png ├── 0005-didcomm │ └── README.md ├── 0006-ssi-notation │ ├── README.md │ └── expression.png ├── 0008-message-id-and-threading │ └── README.md ├── 0011-decorators │ └── README.md ├── 0013-overlays │ ├── README.md │ ├── figure-1.png │ ├── figure-2.png │ ├── figure-3.png │ ├── figure-4.png │ ├── figure-5.png │ ├── figure-6.png │ ├── figure-7.png │ └── figure-8.png ├── 0017-attachments │ ├── 3-approaches-comparison.png │ ├── README.md │ ├── appended.png │ ├── crime-scene-links.json │ ├── crime-scene-links.png │ ├── crime-scene.json │ ├── embedded-json.json │ ├── embedded-json.png │ ├── embedded.png │ ├── ids.json │ ├── ids.png │ ├── inlined.png │ ├── photo-share.json │ └── rendezvous.json ├── 0020-message-types │ └── README.md ├── 0021-didcomm-message-anatomy │ └── README.md ├── 0029-message-trust-contexts │ ├── README.md │ ├── dbc.py │ ├── mtc.py │ └── mtc_test.py ├── 0046-mediators-and-relays │ ├── README.md │ ├── scenario1.png │ ├── scenario2.png │ ├── scenario3.png │ ├── scenario4.png │ ├── scenario5.png │ ├── scenario5b.png │ ├── scenario6.png │ ├── scenario7.png │ └── scenario8.png ├── 0047-json-ld-compatibility │ └── README.md ├── 0049-repudiation │ ├── README.md │ └── whisper-secret.jpg ├── 0050-wallets │ ├── README.md │ ├── alice.png │ ├── composition.png │ ├── ebola.png │ ├── enclave-wrapping.png │ ├── encryption-schema.png │ ├── faber.png │ ├── identity-wallet.png │ ├── not-crypto-wallet.png │ ├── not-vault.png │ ├── one-owner-multiple-wallets.png │ ├── physical-wallet.png │ ├── risk-continuum.png │ ├── size-richness.png │ ├── trust-hub.png │ ├── wallet-encryption.puml │ └── wallet-encryption.svg ├── 0051-dkms │ ├── README.md │ ├── agent-authz-policy-ledger-interactions.md │ ├── dkms-v4.md │ ├── images │ │ ├── 01-edge-agent-start.png │ │ ├── 02-provision-new-agent.png │ │ ├── 03-first-edge-agent.png │ │ ├── 04-update-agent-policy-registry.png │ │ ├── 05-add-cloud-agent-01.png │ │ ├── 05-add-cloud-agent-02.png │ │ ├── 06-add-new-edge-agent.png │ │ ├── 07-add-connection-public-did-01.png │ │ ├── 07-add-connection-public-did-02.png │ │ ├── 08-add-connection-private-did-provisioned-01.png │ │ ├── 08-add-connection-private-did-provisioned-02.png │ │ ├── 09-add-connection-private-did-unprovisioned-01.png │ │ ├── 09-add-connection-private-did-unprovisioned-02.png │ │ ├── 10-rotate-did-key-01.png │ │ ├── 10-rotate-did-key-02.png │ │ ├── 11-revoke-did.png │ │ ├── 12-revoke-edge-agent.png │ │ ├── 13-recovery-setup.png │ │ ├── 14-add-recovery-trustee.png │ │ ├── 15-recovery-update.png │ │ ├── 16-offline-recovery.png │ │ ├── 17-social-recovery-01.png │ │ ├── 17-social-recovery-02.png │ │ ├── agents-and-agencies.png │ │ ├── blockchain-type-matrix.png │ │ ├── image_0.png │ │ ├── image_3.png │ │ └── verifiable-creds.png │ ├── pdf │ │ ├── aap.pdf │ │ ├── report-30-june-2017.pdf │ │ ├── requirements-text.pdf │ │ └── spreadsheet.pdf │ ├── puml │ │ ├── 01-edge-agent-start.puml │ │ ├── 02-provision-new-agent.puml │ │ ├── 03-first-edge-agent.puml │ │ ├── 04-update-agent-policy-registry.puml │ │ ├── 05-add-cloud-agent.puml │ │ ├── 06-add-new-edge-agent.puml │ │ ├── 07-add-connection-public-did.puml │ │ ├── 08-add-connection-private-did-provisioned.puml │ │ ├── 09-add-connection-private-did-unprovisioned.puml │ │ ├── 10-rotate-did-key.puml │ │ ├── 11-revoke-did.puml │ │ ├── 12-revoke-edge-agent.puml │ │ ├── 13-recovery-setup.puml │ │ ├── 14-add-recovery-trustee.puml │ │ ├── 15-recovery-update.puml │ │ ├── 16-offline-recovery.puml │ │ ├── 17-social-recovery.puml │ │ ├── agency-migration.puml │ │ ├── burn-identity-with-agents.puml │ │ ├── failure-modes.puml │ │ ├── overview.puml │ │ ├── recover-agent-policy-registry.puml │ │ ├── recover-connection.puml │ │ ├── revoke-edge-agent-success.puml │ │ └── revoke-rogue-edge-agent.puml │ ├── shamir_secret.md │ └── trustee_protocols.md ├── 0074-didcomm-best-practices │ └── README.md ├── 0094-cross-domain-messaging │ ├── README.md │ ├── domains.jpg │ └── forwarding.jpg ├── 0103-indirect-identity-control │ ├── 3-modes.png │ ├── README.md │ ├── controllership-details.md │ ├── controllership.png │ ├── delegation-details.md │ ├── delegation.png │ ├── eval-guardian.png │ ├── guardianship-details.md │ ├── guardianship-risk.png │ ├── guardianship-sample │ │ ├── mya.jpg │ │ ├── schema-thumbnail.png │ │ ├── schema.json │ │ ├── schema.md │ │ └── trust-framework.md │ ├── guardianship.png │ ├── matrix.png │ └── proxy-cred-name-pat.png ├── 0104-chained-credentials │ ├── README.md │ ├── chains.png │ ├── contrast-zcap-ld.md │ ├── delegation-proofs.png │ ├── provenanced-authz.png │ ├── provenanced-name.png │ └── use-case.png ├── 0167-data-consent-lifecycle │ ├── README.md │ ├── media │ │ ├── consent_actors_overview.png │ │ ├── consent_flow.png │ │ └── proof_flow.png │ └── reference-implementation │ │ ├── consent-flow.ipynb │ │ └── docker-compose.yml ├── 0207-credential-fraud-threat-model │ ├── 4d-locus.png │ ├── README.md │ ├── data-flow.html │ └── data-flow.png ├── 0217-linkable-message-paths │ └── README.md ├── 0231-biometric-service-provider │ ├── README.md │ └── images │ │ ├── bsp_2x2.png │ │ ├── bsp_aadhaar.png │ │ ├── bsp_arch1.png │ │ ├── bsp_arch2.png │ │ ├── bsp_arch_proofing1.png │ │ ├── bsp_arch_recovery1.png │ │ └── bsp_nist_idproofing.png ├── 0250-rich-schemas │ ├── README.md │ ├── rich-schema-objects.png │ ├── zkp-cred-pres.png │ └── zkp-cred-pres.svg ├── 0257-private-credential-issuance │ └── README.md ├── 0268-unified-didcomm-agent-deeplinking │ └── README.md ├── 0270-interop-test-suite │ ├── README.md │ └── channels.png ├── 0289-toip-stack │ ├── README.md │ └── img │ │ ├── fig-1-toip-full-stack-2020-05-06.png │ │ ├── fig-2-urn-and-did-syntax.png │ │ ├── fig-3-agent-ecosystem.png │ │ ├── fig-4-vc-trust-triangle-2020-05-31.png │ │ ├── fig-5-gov-frameworks-2020-05-31.png │ │ ├── fig-6-governance-framework-model.png │ │ └── src │ │ └── diagrams.key ├── 0302-aries-interop-profile │ └── README.md ├── 0345-community-coordinated-update │ └── README.md ├── 0346-didcomm-between-two-mobile-agents │ └── README.md ├── 0420-rich-schemas-common │ ├── README.md │ ├── relationship-diagram.png │ └── relationship-diagram.puml ├── 0430-machine-readable-governance-frameworks │ ├── README.md │ ├── about-diploma.png │ ├── about-diploma.svg │ ├── about-tf.png │ ├── about-tf.svg │ ├── context.jsonld │ ├── gov-fw-covid-19.md │ ├── guy-wires.jpg │ ├── issuer-not-ok.png │ ├── issuer-not-ok.svg │ ├── issuer-ok.png │ ├── issuer-ok.svg │ ├── tos.png │ ├── tos.svg │ ├── ux-accept-tf.png │ ├── ux-accept-tf.svg │ ├── ux-upgrade-tf.png │ ├── ux-upgrade-tf.svg │ ├── verifier-not-ok.png │ └── verifier-ok.png ├── 0440-kms-architectures │ ├── README.md │ ├── keychain_auth.png │ ├── kms_architecture.png │ ├── password_auth.png │ └── session_management.png ├── 0441-present-proof-best-practices │ └── README.md ├── 0478-coprotocols │ ├── README.md │ ├── as_coprotocol.png │ ├── as_coprotocol.puml │ ├── icon.png │ ├── payment-coprotocol.png │ ├── payment-protocol.puml │ └── payment_protocol.png ├── 0519-goal-codes │ └── README.md ├── 0530-goal-human-readable-verified-identifer │ └── README.md ├── 0535-email-access-governance-framework │ ├── README.md │ └── data.json ├── 0559-pppu │ ├── README.md │ ├── anonymous-issuance.png │ ├── identified-issuance.png │ └── linked-creds.png ├── 0566-issuer-hosted-custodidal-agents │ └── README.md ├── 0700-oob-through-redirect │ ├── ExampleQRCode1.svg │ ├── ExampleQRCode2.svg │ ├── README.md │ ├── oob-redirect-mediated.png │ └── oob-redirect.png ├── 0757-push-notification │ └── README.md ├── 0781-trust-input-protocol │ ├── README.md │ ├── Test │ ├── trust-input-states.png │ └── trust-inputs-flow.png ├── 0799-long-term-support │ └── README.md └── 0812-compression-dictionary │ ├── README.md │ ├── YlU3M52.png │ └── b9y8VTC.png ├── contributing.md ├── features ├── 0015-acks │ └── README.md ├── 0019-encryption-envelope │ ├── README.md │ ├── domains.jpg │ └── schema.md ├── 0023-did-exchange │ ├── README.md │ └── did-exchange-states.png ├── 0024-didcomm-over-xmpp │ ├── README.md │ └── XMPP_architecture.jpg ├── 0025-didcomm-transports │ └── README.md ├── 0028-introduce │ ├── README.md │ ├── any-identity-owner-type.png │ ├── double-opt-in.png │ ├── introducer-no-did.png │ ├── public-invitation.png │ ├── scenario.png │ ├── states.png │ └── uneven.png ├── 0030-sync-connection │ ├── README.md │ ├── abandon-connection-protocol │ │ ├── README.md │ │ └── announce.json │ ├── sync_state.json │ └── test_cases.md ├── 0031-discover-features │ ├── README.md │ ├── catalog.json │ ├── disclose.json │ ├── protocol-discovery~l10n.json │ ├── query.json │ ├── simpler-response.json │ └── state-machines.png ├── 0032-message-timing │ └── README.md ├── 0034-message-tracing │ ├── README.md │ ├── certified-mail.jpg │ ├── msg-with-trace.json │ ├── msg-with-trace.png │ ├── trace-report.json │ ├── trace-report.png │ └── trace-xyz.png ├── 0035-report-problem │ └── README.md ├── 0036-issue-credential │ ├── README.md │ ├── credential-issuance.html │ └── credential-issuance.png ├── 0037-present-proof │ ├── README.md │ ├── credential-presentation.html │ └── credential-presentation.png ├── 0042-lox │ ├── Keyring.png │ ├── LoxWalletProcess.png │ ├── README.md │ ├── WalletBegin.png │ ├── keyring.puml │ └── reference_code │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── lox-cli │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ │ └── lox │ │ ├── Cargo.toml │ │ └── src │ │ ├── keyring │ │ ├── linux.rs │ │ ├── macos.rs │ │ ├── mod.rs │ │ └── windows.rs │ │ └── lib.rs ├── 0043-l10n │ ├── README.md │ ├── catalog-callout.png │ ├── catalog.json │ ├── catalog.png │ ├── field-scope.json │ ├── field-scope.png │ ├── google-translate.png │ ├── localizable-in-message.json │ ├── localizable-in-message.png │ ├── localization-callout.png │ ├── localization-section.json │ ├── localization-section.md │ ├── localization-section.png │ ├── localized-keys-record.json │ ├── localized-keys-record.png │ ├── localized-keys.png │ ├── message-catalog-section.md │ ├── message-scope.json │ ├── message-scope.png │ ├── no-way-to-tell.json │ ├── no-way-to-tell.png │ ├── sample1.json │ ├── sample1.png │ ├── with-code.json │ └── with-code.png ├── 0044-didcomm-file-and-mime-types │ ├── README.md │ ├── dee-big.png │ ├── dee-small.png │ ├── dm-big.png │ ├── dm-small.png │ ├── dse-big.png │ ├── dse-small.png │ ├── msg-in-envelope.png │ └── small-msg-in-envelope.png ├── 0048-trust-ping │ └── README.md ├── 0056-service-decorator │ └── README.md ├── 0066-non-repudiable-cryptographic-envelope │ ├── README.md │ └── demo.py ├── 0067-didcomm-diddoc-conventions │ ├── README.md │ └── domains.jpg ├── 0075-payment-decorators │ ├── README.md │ ├── payment-request-api-flow.png │ └── payment-request-api-flow.puml ├── 0092-transport-return-route │ └── README.md ├── 0095-basic-message │ └── README.md ├── 0113-question-answer │ └── README.md ├── 0114-predefined-identities │ └── README.md ├── 0116-evidence-exchange │ ├── README.md │ ├── digital_notary_usecase.md │ ├── eep_glossary.md │ └── img │ │ ├── clm_examiner.png │ │ ├── conceptual_doc_transformation.png │ │ ├── ddn_concept.png │ │ ├── digital_doc_flow.png │ │ ├── digital_identity_lifecycle.png │ │ ├── examine_flow.png │ │ ├── issue_cred_flow.png │ │ ├── src │ │ ├── diagrams.key │ │ ├── digital_identity_lifecycle.puml │ │ ├── examine_flow.puml │ │ ├── issue_cred_flow.puml │ │ └── verify_cred_flow.puml │ │ └── verify_cred_flow.png ├── 0124-did-resolution-protocol │ ├── README.md │ └── binding-chained.png ├── 0160-connection-protocol │ ├── README.md │ ├── chrome_2019-01-29_07-59-38.png │ └── exampleqr.png ├── 0183-revocation-notification │ └── README.md ├── 0193-coin-flip │ ├── README.md │ ├── coin-flip.html │ └── coin-flip.png ├── 0211-route-coordination │ └── README.md ├── 0212-pickup │ └── README.md ├── 0213-transfer-policy │ └── README.md ├── 0214-help-me-discover │ └── README.md ├── 0234-signature-decorator │ ├── README.md │ └── ed25519sha256_single.md ├── 0249-rich-schema-contexts │ └── README.md ├── 0281-rich-schemas │ └── README.md ├── 0303-v01-credential-exchange │ └── README.md ├── 0309-didauthz │ ├── README.md │ ├── did-authz-chain-delegation.png │ ├── did-authz-delegation.png │ ├── did-authz-flow.png │ └── did-authz-revocation.png ├── 0317-please-ack │ └── README.md ├── 0327-crypto-service │ └── README.md ├── 0334-jwe-envelope │ ├── README.md │ ├── anoncrypt-examples.md │ └── authcrypt-examples.md ├── 0335-http-over-didcomm │ ├── README.md │ ├── client-server-didcomm-domains.png │ ├── client-server-didcomm.png │ ├── client-server.drawio │ └── client-server.png ├── 0347-proof-negotiation │ └── README.md ├── 0348-transition-msg-type-to-https │ └── README.md ├── 0351-purpose-decorator │ └── README.md ├── 0360-use-did-key │ └── README.md ├── 0418-rich-schema-encoding │ └── README.md ├── 0428-prepare-issue-rich-credential │ ├── README.md │ ├── rich_credential_prereqs.png │ └── rich_credential_prereqs.puml ├── 0429-prepare-req-rich-pres │ ├── README.md │ ├── rich_presentation_prereqs.png │ └── rich_presentation_prereqs.puml ├── 0434-outofband │ ├── ExampleQRCode.png │ ├── README.md │ ├── state-machine-receiver.png │ └── state-machine-sender.png ├── 0445-rich-schema-mapping │ └── README.md ├── 0446-rich-schema-cred-def │ └── README.md ├── 0453-issue-credential-v2 │ ├── README.md │ ├── credential-issuance.html │ └── credential-issuance.png ├── 0454-present-proof-v2 │ ├── README.md │ ├── present-proof-states.png │ ├── presentation-choreography.html │ └── presentation-choreography.png ├── 0482-coprotocol-protocol │ ├── README.md │ └── state-machines.png ├── 0496-transition-to-oob-and-did-exchange │ └── README.md ├── 0509-action-menu │ ├── README.md │ └── state-machines.png ├── 0510-dif-pres-exch-attach │ └── README.md ├── 0511-dif-cred-manifest-attach │ └── README.md ├── 0557-discover-features-v2 │ ├── README.md │ ├── requester.png │ ├── requester.puml │ ├── responder.png │ └── responder.puml ├── 0587-encryption-envelope-v2 │ └── README.md ├── 0592-indy-attachments │ └── README.md ├── 0593-json-ld-cred-attach │ └── README.md ├── 0627-static-peer-dids │ └── README.md ├── 0641-linking-binary-objects-to-credentials │ └── README.md ├── 0646-bbs-credentials │ └── README.md ├── 0685-pickup-v2 │ └── README.md ├── 0693-credential-representation │ └── README.md ├── 0699-push-notifications-apns │ └── README.md ├── 0721-revocation-notification-v2 │ └── README.md ├── 0728-device-binding-attachments │ └── README.md ├── 0734-push-notifications-fcm │ └── README.md ├── 0745-push-notifications-expo │ └── README.md ├── 0748-n-wise-did-exchange │ ├── README.md │ └── add_participant.png ├── 0755-oca-for-aries │ ├── OCA4Aries.xlsx │ ├── OCA4AriesBundle.json │ ├── OCA4AriesExcel.json │ ├── README.md │ ├── assets │ │ ├── Sample-use-of-Branding-Overlay.png │ │ └── bifold-oca-example.jpg │ ├── best-bc-background-image-slice.png │ ├── best-bc-background-image.jpg │ ├── best-bc-logo.png │ ├── branding.json │ └── sample_oca_for_aries_oca_bundle.json ├── 0756-oca-for-aries-style-guide │ ├── README.md │ ├── image4_1.png │ └── images │ │ ├── image 4_1.png │ │ ├── image1.png │ │ ├── image10.png │ │ ├── image10_1.png │ │ ├── image11.png │ │ ├── image11_1.png │ │ ├── image12.png │ │ ├── image12_1.png │ │ ├── image13.png │ │ ├── image13_1.png │ │ ├── image14.png │ │ ├── image14_1.png │ │ ├── image15.png │ │ ├── image15_1.png │ │ ├── image16.png │ │ ├── image16_1.png │ │ ├── image17.png │ │ ├── image17_1.png │ │ ├── image18.png │ │ ├── image18_1.png │ │ ├── image19.png │ │ ├── image19_1.png │ │ ├── image1_1.png │ │ ├── image2.png │ │ ├── image20.png │ │ ├── image20_1.png │ │ ├── image2_1.png │ │ ├── image3.png │ │ ├── image3_1.png │ │ ├── image4.png │ │ ├── image4_1.png │ │ ├── image5.png │ │ ├── image5_1.png │ │ ├── image6.jpg │ │ ├── image6_1.png │ │ ├── image7.png │ │ ├── image7_1.png │ │ ├── image8.png │ │ ├── image8_1.png │ │ ├── image9.png │ │ └── image9_1.png ├── 0771-anoncreds-attachments │ └── README.md ├── 0780-data-urls-images │ ├── README.md │ └── photo.png ├── 0793-unqualfied-dids-transition │ └── README.md ├── 0794-did-rotate │ └── README.md ├── 0804-didcomm-rpc │ └── README.md ├── 0809-w3c-data-integrity-credential-attachment │ └── README.md └── 0829-VDR-Proxy │ └── README.md ├── github-issues.md ├── index.md ├── lifecycle.png ├── mkdocs-requirements.txt ├── mkdocs.yml └── tags.md /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Python CircleCI 2.0 configuration file 2 | # 3 | # Check https://circleci.com/docs/2.0/language-python/ for more details 4 | # 5 | version: 2 6 | jobs: 7 | build: 8 | docker: 9 | # specify the version you desire here 10 | # use `-browsers` prefix for selenium tests, e.g. `3.6.1-browsers` 11 | - image: circleci/python:3.6.1 12 | 13 | # Specify service dependencies here if necessary 14 | # CircleCI maintains a library of pre-built images 15 | # documented at https://circleci.com/docs/2.0/circleci-images/ 16 | # - image: circleci/postgres:9.4 17 | 18 | working_directory: ~/repo 19 | 20 | steps: 21 | - checkout 22 | 23 | # Download and cache dependencies 24 | - restore_cache: 25 | keys: 26 | - v1-dependencies-{{ checksum ".circleci/requirements.txt" }} 27 | # fallback to using the latest cache if no exact match is found 28 | - v1-dependencies- 29 | 30 | - run: 31 | name: install dependencies 32 | command: | 33 | python3 -m venv venv 34 | . venv/bin/activate 35 | pip install -r .circleci/requirements.txt 36 | 37 | - save_cache: 38 | paths: 39 | - ./venv 40 | key: v1-dependencies-{{ checksum ".circleci/requirements.txt" }} 41 | 42 | # run tests! 43 | # this example uses Django's built-in test-runner 44 | # other common Python testing frameworks include pytest and nose 45 | # https://pytest.org 46 | # https://nose.readthedocs.io 47 | - run: 48 | name: run tests 49 | command: | 50 | . venv/bin/activate 51 | pytest code 52 | 53 | - store_artifacts: 54 | path: test-reports 55 | destination: test-reports 56 | -------------------------------------------------------------------------------- /.circleci/requirements.txt: -------------------------------------------------------------------------------- 1 | pytest>=4.0 2 | requests>=2.7 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # For details on how this file works refer to: 2 | # - https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 3 | version: 2 4 | updates: 5 | # Maintain dependencies for GitHub Actions 6 | # - Check for updates once a week 7 | # - Group all updates into a single PR 8 | - package-ecosystem: "github-actions" 9 | directory: "/" 10 | schedule: 11 | interval: "weekly" 12 | groups: 13 | all-actions: 14 | patterns: [ "*" ] 15 | 16 | # Maintain dependencies for Python Packages 17 | - package-ecosystem: "pip" 18 | directory: "/" 19 | schedule: 20 | interval: "weekly" 21 | day: "monday" 22 | time: "04:00" 23 | timezone: "Canada/Pacific" 24 | ignore: 25 | - dependency-name: "*" 26 | update-types: ["version-update:semver-major"] 27 | 28 | # Maintain dependencies for Python Packages 29 | - package-ecosystem: "pip" 30 | directory: "/.circleci" 31 | schedule: 32 | interval: "weekly" 33 | day: "monday" 34 | time: "04:00" 35 | timezone: "Canada/Pacific" 36 | ignore: 37 | - dependency-name: "*" 38 | update-types: ["version-update:semver-major"] 39 | 40 | -------------------------------------------------------------------------------- /.github/workflows/publish-site.yml: -------------------------------------------------------------------------------- 1 | name: publish-docs 2 | 3 | on: 4 | push: 5 | # Publish `main` as latest, and when pushes are done to branches with "v-doc" prefix 6 | branches: 7 | - main 8 | 9 | permissions: 10 | contents: write 11 | 12 | jobs: 13 | deploy: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | fetch-depth: 0 # fetch all commits/branches 19 | - uses: actions/setup-python@v5 20 | with: 21 | python-version: 3.x 22 | - uses: actions/cache@v4 23 | with: 24 | key: ${{ github.ref }} 25 | path: .cache 26 | - name: Install Python dependencies 27 | run: pip install -r ./mkdocs-requirements.txt 28 | - name: Configure git user 29 | run: | 30 | git config --local user.email "github-actions[bot]@users.noreply.github.com" 31 | git config --local user.name "github-actions[bot]" 32 | 33 | - name: Deploy docs 34 | run: | 35 | python --version 36 | # Generate the content into the docs folder 37 | code/genSite.sh 38 | mike deploy --push --update-aliases main latest 39 | mike set-default latest 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode 3 | .DS_Store 4 | __pycache__ 5 | *.pyc 6 | *.tmp 7 | .pytest_cache 8 | docs -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Hyperledger Security Policy 2 | 3 | ## Reporting a Security Bug 4 | 5 | If you think you have discovered a security issue in any of the Hyperledger 6 | projects, we'd love to hear from you. We will take all security bugs 7 | seriously and if confirmed upon investigation we will patch it within a 8 | reasonable amount of time and release a public security bulletin discussing 9 | the impact and credit the discoverer. 10 | 11 | There are two ways to report a security bug. The easiest is to email a 12 | description of the flaw and any related information (e.g. reproduction 13 | steps, version) to 14 | [security at hyperledger dot org](mailto:security@hyperledger.org). 15 | 16 | The other way is to file a confidential security bug in our 17 | [JIRA bug tracking system](https://jira.hyperledger.org). 18 | Be sure to set the “Security Level” to “Security issue”. 19 | 20 | The process by which the Hyperledger Security Team handles security bugs 21 | is documented further in our 22 | [Defect Response](https://wiki.hyperledger.org/display/HYP/Defect+Response) 23 | page on our [wiki](https://wiki.hyperledger.org). 24 | -------------------------------------------------------------------------------- /code/cpAIPs.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | # Usage: Given an RFC name and a commit, retrieve all the files of the RFC into the AIP RFC at the right commit. 4 | # Example: code/cpAIP.sh concepts/0003-protocols c3b0e2120ad24810598375663b6922b980f85d00 5 | # Designed to fetch files in subdirectories, although it is not clear how to add them to the documentatioon 6 | 7 | PROTOCOL=$1 8 | COMMIT=$2 9 | AIP2=aip2 10 | 11 | # echo Getting AIP docs for RFC $PROTOCOL, Commit $COMMIT 12 | cd docs 13 | for i in $(find $PROTOCOL -type f); do 14 | AIPFile=$(echo $i | sed -r "s#(features|concepts)/#${AIP2}/#") 15 | # echo $i $AIPFile 16 | mkdir -p $(dirname $AIPFile) 17 | curl -s https://raw.githubusercontent.com/hyperledger/aries-rfcs/${COMMIT}/$i -o $AIPFile 18 | done 19 | cd .. 20 | -------------------------------------------------------------------------------- /code/generate_index.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from operator import itemgetter 3 | import os 4 | from pathlib import Path 5 | import sys 6 | 7 | import rfcs 8 | 9 | 10 | def update(fname, tmp_fname): 11 | if not os.path.exists(fname): 12 | os.rename(tmp_fname, fname) 13 | print('Generated %s.' % fname) 14 | return 15 | with open(fname, encoding='utf-8', mode='rt') as f: 16 | old = f.read() 17 | with open(tmp_fname, encoding='utf-8', mode='rt') as f: 18 | new = f.read() 19 | if old == new: 20 | print('No change to %s.' % fname) 21 | return 22 | os.remove(fname) 23 | os.rename(tmp_fname, fname) 24 | print('Updated %s.' % fname) 25 | 26 | 27 | def main(fname = None): 28 | if not fname: 29 | fname = os.path.join(rfcs.root_folder, 'index.md') 30 | # Load all metadata 31 | all = [rfc for rfc in rfcs.walk()] 32 | all.sort(key=lambda x: x.num) 33 | tmp_fname = fname + '.tmp' 34 | with open(tmp_fname, 'w', encoding='utf-8') as out: 35 | out.write("# Aries RFCs by Status\n") 36 | for status in rfcs.status_list: 37 | out.write(f"\n## [{status}](README.md#{status.lower()})\n") 38 | with_status = [rfc for rfc in all if rfc.status == status] 39 | for rfc in with_status: 40 | line = f"* [{rfc.num}: {rfc.title}]({rfc.relpath})" 41 | tags = [f"[`{x}`](/tags.md#{x})" for x in rfc.tags] 42 | line += f" ({rfc.since}" 43 | if rfc.impl_count: 44 | line += f", [{rfc.impl_count} impl" 45 | if rfc.impl_count > 1: 46 | line += 's' 47 | line += '](' + rfc.relpath + '#implementations)' 48 | line += ' — ' + ' '.join(tags) + ')' 49 | out.write(line + '\n') 50 | out.write("\n\n>(This file is machine-generated; see [code/generate_index.py](code/generate_index.py).)\n") 51 | update(fname, tmp_fname) 52 | 53 | 54 | if __name__ == '__main__': 55 | ap = argparse.ArgumentParser('Genrate index') 56 | ap.add_argument('altpath', metavar='PATH', nargs='?', default=None, help='override where index is generated') 57 | args = ap.parse_args() 58 | main(args.altpath) 59 | -------------------------------------------------------------------------------- /code/generate_mkdocs_index.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from operator import itemgetter 3 | import os 4 | from pathlib import Path 5 | import sys 6 | 7 | import rfcs 8 | 9 | def update(fname, tmp_fname): 10 | if not os.path.exists(fname): 11 | os.rename(tmp_fname, fname) 12 | # print('Generated %s.' % fname) 13 | return 14 | with open(fname, encoding='utf-8', mode='rt') as f: 15 | old = f.read() 16 | with open(tmp_fname, encoding='utf-8', mode='rt') as f: 17 | new = f.read() 18 | if old == new: 19 | # print('No change to %s.' % fname) 20 | return 21 | os.remove(fname) 22 | os.rename(tmp_fname, fname) 23 | # print('Updated %s.' % fname) 24 | 25 | 26 | def main(fname = None): 27 | if not fname: 28 | fname = os.path.join(rfcs.root_folder, 'mkdocs_index.yml') 29 | # Load all metadata 30 | all = [rfc for rfc in rfcs.walk()] 31 | all.sort(key=lambda x: x.num) 32 | tmp_fname = fname + '.tmp' 33 | with open(tmp_fname, 'w', encoding='utf-8') as out: 34 | for status in rfcs.status_list: 35 | out.write(f"- {status}:\n") 36 | with_status = [rfc for rfc in all if rfc.status == status] 37 | for rfc in with_status: 38 | out.write(f" - {rfc.num} {rfc.title}: {rfc.relpath}\n") 39 | update(fname, tmp_fname) 40 | 41 | 42 | if __name__ == '__main__': 43 | ap = argparse.ArgumentParser('Generate index') 44 | ap.add_argument('altpath', metavar='PATH', nargs='?', default=None, help='override where index is generated') 45 | args = ap.parse_args() 46 | main(args.altpath) 47 | -------------------------------------------------------------------------------- /code/link_tags.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import re 3 | 4 | tag_line_pat = re.compile(r'^\s*-\s*[Tt]ags\s*:\s*(.*?)$', re.M) 5 | 6 | def link_tags(fname): 7 | changed = False 8 | with open(fname, 'rt') as f: 9 | txt = f.read() 10 | m = tag_line_pat.search(txt) 11 | if m: 12 | update = False 13 | tags = [t.strip() for t in m.group(1).split(',')] 14 | for i in range(len(tags)): 15 | tag = tags[i] 16 | if tag[0] != '[': 17 | changed = True 18 | tags[i] = '[' + tag + '](/tags.md#' + tag + ')' 19 | if changed: 20 | tags = ', '.join(tags) 21 | txt = txt[:m.start(1)] + tags + txt[m.end(1):] 22 | with open(fname, 'wt') as f: 23 | f.write(txt) 24 | print('Updated ' + fname) 25 | 26 | 27 | if __name__ == '__main__': 28 | for fname in sys.argv[1:]: 29 | link_tags(fname) 30 | -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Black.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Black.eps -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Black.jpg -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Black.png -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Color.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Color.eps -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Color.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Color.jpg -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_Color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_Color.png -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_White.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_White.eps -------------------------------------------------------------------------------- /collateral/Hyperledger_Aries_Logo_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/Hyperledger_Aries_Logo_White.png -------------------------------------------------------------------------------- /collateral/aries-rfcs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/aries-rfcs-logo.png -------------------------------------------------------------------------------- /collateral/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/favicon.ico -------------------------------------------------------------------------------- /collateral/lifecycle-wordart.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/collateral/lifecycle-wordart.docx -------------------------------------------------------------------------------- /concepts/0003-protocols/adoption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/adoption.png -------------------------------------------------------------------------------- /concepts/0003-protocols/co-protocols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/co-protocols.png -------------------------------------------------------------------------------- /concepts/0003-protocols/dance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/dance.jpg -------------------------------------------------------------------------------- /concepts/0003-protocols/mturi-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/mturi-structure.png -------------------------------------------------------------------------------- /concepts/0003-protocols/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/notification.png -------------------------------------------------------------------------------- /concepts/0003-protocols/piuri-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/piuri-structure.png -------------------------------------------------------------------------------- /concepts/0003-protocols/protocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/protocol.png -------------------------------------------------------------------------------- /concepts/0003-protocols/request-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/request-response.png -------------------------------------------------------------------------------- /concepts/0003-protocols/state-machine-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/state-machine-thumbnail.png -------------------------------------------------------------------------------- /concepts/0003-protocols/super-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/super-sub.png -------------------------------------------------------------------------------- /concepts/0003-protocols/template-sections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/template-sections.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/banner.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/catalog.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "not-your-turn": { 4 | "en": "You moved when it was my turn." 5 | }, 6 | "already-occupied": { 7 | "en": "You can't place a mark in cell {where}. It is already occupied." 8 | }, 9 | "bad-move": { 10 | "en": "Move \"{move}\" makes no sense. Expected a string like \"X:A1\" or \"O:C3\"." 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/catalog.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/handler.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | import game 4 | import ai 5 | 6 | MOVE_MSG_TYPE = 'did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move' 7 | RESULTS_MSG_TYPE = 'did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/results' 8 | 9 | TYPES = [ 10 | MOVE_MSG_TYPE, 11 | RESULTS_MSG_TYPE 12 | ] 13 | 14 | def load_game(moves): 15 | 16 | 17 | def handle(wc, agent): 18 | try: 19 | t = wc.obj['@type'] 20 | if t == MOVE_MSG_TYPE: 21 | them = wc.obj.get('ill_be', '') 22 | if them and isinstance(them, str) and len(them) == 1 and them in 'XO': 23 | them = them.strip().upper() 24 | else: 25 | raise Exception('Expected "ill_be" to contain either "X" or "O".') 26 | moves = wc.obj.get('moves', []) 27 | if not isinstance(moves, list) or len(moves) > 9: 28 | raise Exception('Expected "moves" to be a list of at most 9 items.') 29 | g = game.Game() 30 | g.load(moves) 31 | w = g.winner() 32 | if w: 33 | agent.trans.send('{"@type": "result", "outcome": "%s won."}') 34 | me = game.other_player(them) 35 | if g.whose_turn() 36 | 37 | if them == 'X': 38 | g.load(wc.obj['moves']) 39 | choice = ai.next_move(g, me) 40 | g[choice] = me 41 | agent.trans.send('{"@type": "%s"}' % MOVE_MSG_TYPE, wc.sender) 42 | except Exception as e: 43 | agent.trans.send('{"@type": "problem-report", "explain_ltxt": "%s"}', wc.sender) 44 | return True -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-1.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", 4 | "@id": "518be002-de8e-456e-b3d5-8fe472477a86", 5 | "me": "X", 6 | "moves": ["X:B2"], 7 | "comment": "Let's play tic-tac-toe. I'll be X. I pick cell B2." 8 | } 9 | 10 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/move-1.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-2.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", 4 | "~thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "sender_order": 0 }, 5 | "moves": ["X:B2", "O:A1"], 6 | "me": "O" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/move-2.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-3.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", 4 | "~thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "sender_order": 1 }, 5 | "moves": ["X:B2", "O:A1", "X:A2"], 6 | "me": "X" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/move-3.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-4.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "ddid:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", 4 | "~thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "sender_order": 1 }, 5 | "moves": ["X:B2", "O:A1", "X:A2", "O:B1"], 6 | "me": "O" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/move-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/move-4.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/outcome.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/outcome", 4 | "~thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 3 }, 5 | "winner": "X", 6 | "comment": "You won!" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/outcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/outcome.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/player-state-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/player-state-machine.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/state_machine.py: -------------------------------------------------------------------------------- 1 | # Define states and events, including symbolic (numeric) constants and their friendly names. 2 | STATE_NAMES = ['my-move', 'their-move', 'wrap-up', 'done'] 3 | for i in range(len(STATE_NAMES)): 4 | globals()[STATE_NAMES[i].replace('-', '_').upper() + '_STATE'] = i 5 | 6 | EVENT_NAMES = ['send move', 'receive move', 'send outcome', 'receive outcome'] 7 | for i in range(len(EVENT_NAMES)): 8 | globals()[EVENT_NAMES[i].upper().replace(' ', '_') + '_EVENT'] = i 9 | 10 | 11 | class StateMachine: 12 | def __init__(self, logic, pre=None, post=None, on_error=None): 13 | self.state = None 14 | self.logic = logic 15 | self.pre = pre 16 | self.post = post 17 | self.on_error = on_error 18 | 19 | def handle(self, event): 20 | s = self.state 21 | if event == SEND_MOVE_EVENT: 22 | if s in [None, MY_MOVE_STATE]: 23 | self._transition_to(WRAP_UP_STATE if self.logic.is_done() else THEIR_MOVE_STATE, event) 24 | else: 25 | raise AssertionError(f"Programmer error; I can't move when state = {STATE_NAMES[s]}.") 26 | elif event == RECEIVE_MOVE_EVENT: 27 | if s in [None, THEIR_MOVE_STATE]: 28 | self._transition_to(WRAP_UP_STATE if self.logic.is_done() else MY_MOVE_STATE, event) 29 | else: 30 | self._on_error(f"Other party can't move when state = {STATE_NAMES[s]}") 31 | elif event in [SEND_OUTCOME_EVENT, RECEIVE_OUTCOME_EVENT]: 32 | if s != DONE_STATE: 33 | self._transition_to(DONE_STATE, event) 34 | else: 35 | raise AssertionError("Illegal event %d." % event) 36 | 37 | def _on_error(self, msg): 38 | if self.on_error: 39 | self.on_error(msg) 40 | 41 | def _transition_to(self, state, event): 42 | if self.pre: 43 | # Ask permission before transitioning 44 | if not self.pre(state, event): 45 | return 46 | self.state = state 47 | if self.post: 48 | self.post(state, event) -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/tictactoe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/tictactoe.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/tile.png -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/~l10n.json: -------------------------------------------------------------------------------- 1 | { 2 | "~l10n": { 3 | "locales": [{"locale": "en", "fields": ["comment"]}], 4 | "catalogs": [ 5 | "https://github.com/hyperledger/indy-hipe/blob/a0d57d1f/text/protocols/catalog.json" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /concepts/0003-protocols/tictactoe/~l10n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/tictactoe/~l10n.png -------------------------------------------------------------------------------- /concepts/0003-protocols/version-negotiation-matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0003-protocols/version-negotiation-matrix.png -------------------------------------------------------------------------------- /concepts/0004-agents/agent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0004-agents/agent.png -------------------------------------------------------------------------------- /concepts/0004-agents/agents-by-complexity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0004-agents/agents-by-complexity.png -------------------------------------------------------------------------------- /concepts/0006-ssi-notation/expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0006-ssi-notation/expression.png -------------------------------------------------------------------------------- /concepts/0013-overlays/README.md: -------------------------------------------------------------------------------- 1 | # Aries RFC 0013: Overlays 2 | 3 | - Authors: Paul Knowles, The Human Colossus Foundation 4 | - Status: [RETIRED](/README.md#retired) 5 | - Since: 2023-01-15 6 | - Status Note: Although this RFP is in the **retired** status, the use of overlays and the Overlays Capture Architecture (OCA) is active in Aries. This RFP is an early of the OCA specification, and its content is replaced by the [Overlays Capture Architecture Specification](https://oca.colossi.network/specification/). The use of OCA in Aries is described in [RFC 0755: OCA for Aries](../../features/0755-oca-for-aries/README.md). 7 | - Start Date: 2018-10-01 8 | - Tags: [concept](/tags.md#concept) 9 | -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-1.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-2.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-3.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-4.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-5.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-6.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-7.png -------------------------------------------------------------------------------- /concepts/0013-overlays/figure-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0013-overlays/figure-8.png -------------------------------------------------------------------------------- /concepts/0017-attachments/3-approaches-comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/3-approaches-comparison.png -------------------------------------------------------------------------------- /concepts/0017-attachments/appended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/appended.png -------------------------------------------------------------------------------- /concepts/0017-attachments/crime-scene-links.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "https://lawenforcement.org/messages/csi/2.0/evidence", 3 | "location": "40.4973268,-111.9041778", 4 | "case_num": 12345, 5 | "~attach": [ 6 | { 7 | "@id": "view-1", 8 | "mime-type": "image/jpeg", 9 | "filename": "doorway.jpg", 10 | "byte_count": 98112, 11 | "lastmod_time": "2018-12-21 18:24:07Z", 12 | "description": "view from doorway, facing east, with lights off", 13 | "data": { 14 | "sha256": "f8dca1d901d18c802e6a8ce1956d4b0d17f03d9dc5e4e1f618b6a022153ef373", 15 | "links": ["https://ibb.co/TtgKkZY"] 16 | } 17 | } 18 | ] 19 | } 20 | 21 | -------------------------------------------------------------------------------- /concepts/0017-attachments/crime-scene-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/crime-scene-links.png -------------------------------------------------------------------------------- /concepts/0017-attachments/crime-scene.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "https://lawenforcement.org/messages/csi/2.0/evidence", 3 | "location": "40.4973268,-111.9041778", 4 | "case_num": 12345, 5 | "notes": "I took a shot matching what the witness reported. See `#view-1`.", 6 | "": " The other shot matches what the victim remembers. See `#view-2`.", 7 | "~attach": [ 8 | { 9 | "@id": "view-1", 10 | "mime-type": "image/png", 11 | "filename": "IMG1092348.png", 12 | "lastmod_time": "2018-12-24 18:24:07Z", 13 | "description": "view from doorway, facing east, with lights off", 14 | "data": { 15 | "base64": "aGVsbG8sIHl ...(many bytes omitted)... Ugd29ybGQ=" 16 | } 17 | }, 18 | { 19 | "@id": "view-2", 20 | "mime-type": "image/png", 21 | "filename": "IMG1092349.png", 22 | "lastmod_time": "2018-12-24 18:25:49Z", 23 | "description": "view with lamp in the background", 24 | "data": { 25 | "base64": "29yVsbG8GQs ...(many bytes omitted)... aGUgdbIHl=" 26 | } 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /concepts/0017-attachments/embedded-json.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://lawenforcement.org/messages/csi/2.0/evidence", 4 | "location": "40.4973268,-111.9041778", 5 | "diagram~attach": { 6 | "@id": "lobby-diagram", 7 | "mime-type": "application/geo+json", 8 | "filename": "lobby.geo", 9 | "data": { 10 | "json": { 11 | "type": "FeatureCollection", 12 | "features": [ 13 | { 14 | "type": "Feature", 15 | "geometry": { 16 | "type": "LineString", 17 | "coordinates": [ 18 | [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] 19 | ] 20 | }, 21 | "properties": { 22 | "prop0": "value0", 23 | "prop1": 0.0 24 | } 25 | } 26 | ] 27 | } 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /concepts/0017-attachments/embedded-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/embedded-json.png -------------------------------------------------------------------------------- /concepts/0017-attachments/embedded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/embedded.png -------------------------------------------------------------------------------- /concepts/0017-attachments/ids.json: -------------------------------------------------------------------------------- 1 | { 2 | "A_pic": "#image1", 3 | "B_pic": "#image1", 4 | "C_pic": "#image2", 5 | ... 6 | "~attach": [ 7 | { 8 | "@id": "image1", 9 | "data": { 10 | "base64": "Ugd29ybIHl ...(many bytes omitted)... GQaGVsbG8s=" 11 | } 12 | }, 13 | { 14 | "@id": "image2", 15 | "data": { 16 | "base64": "GQaGV29yU ...(many bytes omitted)... bIsbG8sgdHl=" 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /concepts/0017-attachments/ids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/ids.png -------------------------------------------------------------------------------- /concepts/0017-attachments/inlined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0017-attachments/inlined.png -------------------------------------------------------------------------------- /concepts/0017-attachments/photo-share.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "https://github.com/foo/bar/blob/master/abczyx/pix/1.0/favshare", 3 | "comment": "I love this picture of the lake.", 4 | "fav_photo~attach": { 5 | "description": "Lake Titicaca at sunset, early April, 2019.", 6 | "mime-type": "image/png", 7 | "filename": "lake-shot.png", 8 | "lastmod_time": "2018-12-24 18:24:07Z", 9 | "content": { 10 | "base64": "aGVsbG8sIHl ...(many bytes omitted)... Ugd29ybGQ=" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /concepts/0017-attachments/rendezvous.json: -------------------------------------------------------------------------------- 1 | { 2 | "@id": "5678876542345", 3 | "@type": "https://didcomm.org/xrendezvous/1.0/request", 4 | "comment": "Shall we discuss the merger?", 5 | "candidate_locations": [ 6 | { 7 | "name": "Rixos The Palm Dubai", 8 | "position": [ 9 | 25.1212, 10 | 55.1535 11 | ] 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /concepts/0029-message-trust-contexts/dbc.py: -------------------------------------------------------------------------------- 1 | """ 2 | Implements design-by-contract utilities. 3 | """ 4 | 5 | class PreconditionViolation(Exception): 6 | def __init__(self, comment): 7 | super().__init__(f"Precondition violated -- {comment}") 8 | 9 | class PostconditionViolation(Exception): 10 | def __init__(self, comment): 11 | super().__init__(f"Postcondition violated -- {comment}") 12 | 13 | class InvariantViolation(Exception): 14 | def __init__(self, comment): 15 | super().__init__(f"Invariant violated -- {comment}") 16 | 17 | def precondition(expr, comment): 18 | if not expr: 19 | raise PreconditionViolation(comment) 20 | 21 | def postcondition(expr, comment): 22 | if not expr: 23 | raise PostconditionViolation(comment) 24 | 25 | class Postcondition: 26 | def __init__(self, postchecker, comment): 27 | self.postchecker = postchecker 28 | self.comment = comment 29 | 30 | def __enter__(self): 31 | return self 32 | 33 | def __exit__(self, *args): 34 | if not self.postchecker(): 35 | raise PostconditionViolation(comment) 36 | -------------------------------------------------------------------------------- /concepts/0029-message-trust-contexts/mtc_test.py: -------------------------------------------------------------------------------- 1 | from mtc import * 2 | 3 | UNDEFINED = MessageTrustContext() 4 | ZERO = MessageTrustContext(denied=-1) 5 | PARTIAL = MessageTrustContext(INTEGRITY | CONFIDENTIALITY) 6 | 7 | 8 | def test_undefined_trust(): 9 | assert '?' == UNDEFINED.abbrevs 10 | assert '?' == str(UNDEFINED) 11 | assert '?' == UNDEFINED.labels 12 | 13 | def test_zero_trust(): 14 | x = ZERO.abbrevs 15 | assert '+' not in x 16 | assert len(x.split('-')) > 8 17 | 18 | def test_partial_trust(): 19 | assert '+c+i' == PARTIAL.abbrevs 20 | assert '+c+i' == str(PARTIAL) 21 | assert '+confidentiality +integrity' == PARTIAL.labels 22 | 23 | 24 | def test_flag_changes(): 25 | x = MessageTrustContext() 26 | assert x.trust_for(SIZE_OK) is None 27 | assert '?' == x.abbrevs 28 | x.affirm(SIZE_OK | VALUES_OK) 29 | assert x.trust_for(SIZE_OK | VALUES_OK) == True 30 | assert '+s+v' == x.abbrevs 31 | assert '+size +values' == x.labels 32 | x.deny(SIZE_OK) 33 | assert x.trust_for(SIZE_OK) == False 34 | assert x.trust_for(VALUES_OK) == True 35 | assert '+v-s' == x.abbrevs 36 | assert '+values -size' == x.labels 37 | 38 | def test_from_text(): 39 | x = MessageTrustContext.from_text("+s+A --n +x") 40 | assert x.affirmed == (SIZE_OK | AUTHENTICATED_ORIGIN) 41 | assert x.denied == NONREPUDIATION 42 | x = MessageTrustContext.from_text("+Integrity -Confidentiality") 43 | assert x.affirmed == INTEGRITY 44 | assert x.denied == CONFIDENTIALITY 45 | -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario1.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario2.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario3.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario4.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario5.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario5b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario5b.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario6.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario7.png -------------------------------------------------------------------------------- /concepts/0046-mediators-and-relays/scenario8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0046-mediators-and-relays/scenario8.png -------------------------------------------------------------------------------- /concepts/0049-repudiation/whisper-secret.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0049-repudiation/whisper-secret.jpg -------------------------------------------------------------------------------- /concepts/0050-wallets/alice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/alice.png -------------------------------------------------------------------------------- /concepts/0050-wallets/composition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/composition.png -------------------------------------------------------------------------------- /concepts/0050-wallets/ebola.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/ebola.png -------------------------------------------------------------------------------- /concepts/0050-wallets/enclave-wrapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/enclave-wrapping.png -------------------------------------------------------------------------------- /concepts/0050-wallets/encryption-schema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/encryption-schema.png -------------------------------------------------------------------------------- /concepts/0050-wallets/faber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/faber.png -------------------------------------------------------------------------------- /concepts/0050-wallets/identity-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/identity-wallet.png -------------------------------------------------------------------------------- /concepts/0050-wallets/not-crypto-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/not-crypto-wallet.png -------------------------------------------------------------------------------- /concepts/0050-wallets/not-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/not-vault.png -------------------------------------------------------------------------------- /concepts/0050-wallets/one-owner-multiple-wallets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/one-owner-multiple-wallets.png -------------------------------------------------------------------------------- /concepts/0050-wallets/physical-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/physical-wallet.png -------------------------------------------------------------------------------- /concepts/0050-wallets/risk-continuum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/risk-continuum.png -------------------------------------------------------------------------------- /concepts/0050-wallets/size-richness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/size-richness.png -------------------------------------------------------------------------------- /concepts/0050-wallets/trust-hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0050-wallets/trust-hub.png -------------------------------------------------------------------------------- /concepts/0050-wallets/wallet-encryption.puml: -------------------------------------------------------------------------------- 1 | @startuml wallet-encryption 2 | 3 | interface Tag { 4 | +name 5 | +value 6 | } 7 | 8 | class EncryptedTag { 9 | +name: XChaCha20-Poly1305(data=tag_name, key=k5, iv=HMAC-SHA256(data=tag_name, key=k7)) 10 | +value: XChaCha20-Poly1305(data=tag_value, key=k6, iv=HMAC-SHA256(data=tag_value, key=k7)) 11 | } 12 | Tag <|-- EncryptedTag 13 | 14 | class UnencryptedTag { 15 | +name: XChaCha20-Poly1305(data=tag_name, key=k5, iv=HMAC-SHA256(data=tag_name, key=k7)) 16 | +value: plain(data=tag_value) 17 | } 18 | Tag <|-- UnencryptedTag 19 | 20 | 21 | class Record { 22 | +type: XChaCha20-Poly1305(data=type, key=k1, iv=HMAC-SHA256(data=type, key=k4)) 23 | +name: XChaCha20-Poly1305(data=name, key=k2, iv=HMAC-SHA256(data=name, key=k4)) 24 | +value: XChaCha20-Poly1305(data=value_key, key=k3, iv=rand())||XChaCha20-Poly1305(data=value, key=value_key, iv=rand()) 25 | } 26 | Record "1" --* "*" Tag : tags 27 | 28 | class Metadata { 29 | +keys: XChaCha20-Poly1305(data=k1||k2||k3||k4||k5||k6||k7, key=master_key, iv=rand()) 30 | } 31 | 32 | @enduml -------------------------------------------------------------------------------- /concepts/0051-dkms/images/01-edge-agent-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/01-edge-agent-start.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/02-provision-new-agent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/02-provision-new-agent.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/03-first-edge-agent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/03-first-edge-agent.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/04-update-agent-policy-registry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/04-update-agent-policy-registry.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/05-add-cloud-agent-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/05-add-cloud-agent-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/05-add-cloud-agent-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/05-add-cloud-agent-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/06-add-new-edge-agent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/06-add-new-edge-agent.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/07-add-connection-public-did-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/07-add-connection-public-did-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/07-add-connection-public-did-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/07-add-connection-public-did-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/08-add-connection-private-did-provisioned-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/08-add-connection-private-did-provisioned-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/08-add-connection-private-did-provisioned-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/08-add-connection-private-did-provisioned-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/09-add-connection-private-did-unprovisioned-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/09-add-connection-private-did-unprovisioned-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/09-add-connection-private-did-unprovisioned-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/09-add-connection-private-did-unprovisioned-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/10-rotate-did-key-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/10-rotate-did-key-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/10-rotate-did-key-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/10-rotate-did-key-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/11-revoke-did.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/11-revoke-did.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/12-revoke-edge-agent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/12-revoke-edge-agent.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/13-recovery-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/13-recovery-setup.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/14-add-recovery-trustee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/14-add-recovery-trustee.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/15-recovery-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/15-recovery-update.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/16-offline-recovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/16-offline-recovery.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/17-social-recovery-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/17-social-recovery-01.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/17-social-recovery-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/17-social-recovery-02.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/agents-and-agencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/agents-and-agencies.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/blockchain-type-matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/blockchain-type-matrix.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/image_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/image_0.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/image_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/image_3.png -------------------------------------------------------------------------------- /concepts/0051-dkms/images/verifiable-creds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/images/verifiable-creds.png -------------------------------------------------------------------------------- /concepts/0051-dkms/pdf/aap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/pdf/aap.pdf -------------------------------------------------------------------------------- /concepts/0051-dkms/pdf/report-30-june-2017.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/pdf/report-30-june-2017.pdf -------------------------------------------------------------------------------- /concepts/0051-dkms/pdf/requirements-text.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/pdf/requirements-text.pdf -------------------------------------------------------------------------------- /concepts/0051-dkms/pdf/spreadsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0051-dkms/pdf/spreadsheet.pdf -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/01-edge-agent-start.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 200 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Edge\nAgent" as ag 20 | al -> ag: installs software and starts it 21 | 22 | ag -> al: New or existing identity wallet? 23 | alt new 24 | al -> ag: new 25 | note over al, ag #77ccff 26 | include First Edge Agent diagram 27 | end note 28 | else existing 29 | al -> ag: existing 30 | ag -> al: Add a new device or recover a lost wallet? 31 | alt add 32 | al -> ag: add 33 | note over al, ag #77ccff 34 | include Add New Edge Agent diagram 35 | end note 36 | else recover 37 | al -> ag: recover 38 | 39 | ag -> al: How would you like to recover? 40 | 41 | alt 42 | al -> ag: offline 43 | note over al, ag #77ccff 44 | include Offline Recovery diagram 45 | end note 46 | else 47 | al -> ag: social 48 | note over al, ag #77ccff 49 | include Social Recovery diagram 50 | end note 51 | end 52 | end 53 | end 54 | 55 | 56 | @enduml 57 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/02-provision-new-agent.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | participant "Agent" as ea 19 | participant "Secure Element" as se 20 | participant "Wallet" as w 21 | 22 | ea -> ea: create secure element credential 23 | note right 24 | This can be a PIN or a 25 | biometric that can be used 26 | to securely access keys stored in 27 | the secure element. Multiple 28 | factors may be used as desired. 29 | end note 30 | 31 | ea -> se: request the agent policy commitment 32 | se -> se: create agent policy secret value 33 | note right 34 | create Ap1-sv and 35 | encrypt with SE credential 36 | end note 37 | 38 | se -> se: create commitment to agent policy secret value 39 | note right 40 | create Ap1-svc 41 | end note 42 | 43 | se -> ea: Ap1-svc 44 | 45 | ea -> w: Store Ap1-svc 46 | 47 | ea -> se: request agent-to-agent communication keypair 48 | se -> se: create agent-to-agent keys 49 | note right 50 | create AA1-vk and AA1-sk and 51 | encrypt with SE credential. 52 | These keys allow this agent to talk to other 53 | agents within Alice's domain. 54 | end note 55 | 56 | ea -> ea: create agent-to-agent ID AA1-ID 57 | ea -> w: store AA1-ID 58 | ea -> se: request for new wallet encryption key 59 | se -> se: create wallet encryption key 60 | note right 61 | create AW1-k and encrypt 62 | with SE credential 63 | end note 64 | 65 | se -> ea: AW1-k 66 | 67 | ea -> w: encrypt wallet with AW1-k 68 | 69 | @enduml 70 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/03-first-edge-agent.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 200 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor "Alice" as a 19 | participant "Edge\nAgent" as ea 20 | participant Wallet as w 21 | 22 | note over a, w #f0f0e0 23 | Referenced from Edge Agent Start diagram. 24 | 25 | Wallet encrypted with key from secure element. 26 | end note 27 | 28 | == initial setup == 29 | note over a, w #77ccff 30 | include Provision New Agent diagram 31 | end note 32 | 33 | == create link secret and policy registry == 34 | 35 | ea -> ea: create link secret (ALS) 36 | ea -> w: store ALS 37 | 38 | ea -> ea: generate policy registry address **//P//** 39 | ea -> w: store **//P//** 40 | 41 | note over a, w #77ccff 42 | include Update Agent Policy Registry diagram 43 | (with all authorizations) 44 | end note 45 | 46 | == create cloud agent == 47 | 48 | note over a, w #77ccff 49 | include Add Cloud Agent diagram 50 | end note 51 | 52 | @enduml 53 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/04-update-agent-policy-registry.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | participant "Agent" as ag 19 | participant "Ledger" as le 20 | 21 | ag -> ag: create policy address commitment 22 | note right 23 | create commitment Ap1-ac 24 | for policy address **//P//** and Ap1-svc 25 | end note 26 | 27 | ag -> le: send Ap1-svc to policy at **//P//**\n\ 28 | with authorizations and policy updates along with Ap1-ac 29 | note right 30 | Authorizations include: 31 | PROVE,REVOKE_PROVE,PROVISION_PROVE,ADMIN 32 | end note 33 | le -> le: add Ap1-svc to policy at **//P//**\n\ 34 | 35 | le --> le: add Ap1-acc to prover registry 36 | note right 37 | Ap1-ac is added to prover registry if it was 38 | added to **//P//** with PROVE authorization. 39 | end note 40 | le -> ag: result 41 | 42 | @enduml 43 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/05-add-cloud-agent.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Edge\nAgent" as ea 20 | box "Agency" 21 | participant "Agency\nAgent" as ai 22 | participant "Provisioning\nExtension" as ape 23 | participant "Routing\nExtension" as are 24 | end box 25 | 26 | note over al, are #f0f0e0 27 | Precondition: Alice's agency is chosen by the edge agent software. 28 | Alice can change the default agency later. 29 | Alice has setup her initial edge agent (see First Edge Agent). 30 | end note 31 | 32 | == create cloud agent Part 1 == 33 | 34 | ea -[#blue]> ai: register for cloud agent 35 | note right 36 | The Agency Agent initiates new cloud agents. 37 | end note 38 | 39 | ai -[#blue]> ea: request for consent 40 | ea -> al: request for consent 41 | note right 42 | Consent required may vary by legal jurisdiction and agency 43 | end note 44 | al -> ea: consent 45 | ea -> al: request for authorizations be granted to cloud agent 46 | note right 47 | As a general rule, cloud agents will have a subset of 48 | the authorizations granted to edge agents. 49 | end note 50 | al -> ea: selected authorizations 51 | ea -[#blue]> ai: consent, authorizations\nAA1-ID, AA1-vk 52 | 53 | newpage 54 | 55 | == create cloud agent Part 2 == 56 | 57 | ai -> ape: provision cloud agent for Alice 58 | note over al, are #77ccff 59 | include Provision New Agent diagram 60 | end note 61 | 62 | ai -> are: create agent endpoint for Alice 63 | 64 | ai -[#blue]> ea: AA2-ID, AA2-vk\nAp2-svc, endpoint 65 | ea -> ea: Store AA2-ID, AA2-vk, endpoint in wallet 66 | note over al, are #77ccff 67 | include Update Agent Policy Registry diagram 68 | end note 69 | 70 | @enduml 71 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/06-add-new-edge-agent.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Edge\nAgent 2" as a2 20 | participant "Edge\nAgent 1" as a1 21 | 22 | note over al, a1 #f0f0e0 23 | Assumptions: Alice has chosen **existing | add new device** from options in Edge Agent Start. 24 | Edge Agent 2 has been provisioned as described in the Provision New Agent diagram. 25 | end note 26 | 27 | == add new edge agent == 28 | 29 | al -> a2: add 30 | a2 -> al: instructions for adding Agent 2 and selecting authorizations 31 | note right 32 | Multiple methods can be used for 33 | adding and authorizing a new agent 34 | end note 35 | 36 | al -> a1: add agent\n\ 37 | with selected authorizations 38 | note right 39 | This may work in either direction 40 | between the two agents 41 | end note 42 | a1 -> a1: display provisioning code for adding agent 2 43 | note left 44 | QR code, barcode, or passcode entered into agent 2 45 | end note 46 | a1 -> al: show code 47 | al -> a2: scan code from agent 1 48 | 49 | a2 -[#blue]> a1: add request, sends Ap2-svc, AA2-vk 50 | a1 -> a1: store AA2-vk in wallet 51 | a1 -> al: confirm agent 2 52 | al -> a1: yes 53 | note over a1, a2 54 | Agent 1 adds keys and authorizations for agent 2 to policy registry 55 | end note 56 | note over al, a1 #77ccff 57 | include Update Agent Policy Registry diagram 58 | end note 59 | a1 -[#blue]> a2: ALS, token data, claims 60 | note right 61 | sync data to agent 2 62 | end note 63 | a2 -> a2: store data in wallet 64 | 65 | @enduml 66 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/07-add-connection-public-did.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | actor Alice as al 18 | participant "Alice's\nEdge Agent" as aea 19 | participant "Alice's\nCloud Agent" as aca 20 | participant "Org's\nCloud Agent" as oca 21 | participant "Org's\nEdge Agent" as org 22 | 23 | note over al, org #f0f0e0 24 | Private entity Alice creates a relationship with public entity Org. 25 | Preconditions: Org has a well known DID O0 registered on a public ledger 26 | and Alice's Edge Agent has this DID. 27 | end note 28 | 29 | == Connect with Public Organization Part 1 == 30 | 31 | al -> aea: add connection to Org 32 | aea -> aea: create DID, keys, and microledger (AODID, AO1-vk, AO1-sk) 33 | aea -[#blue]> aca: request cloud agent DID verification key for AODID 34 | aca->aca: create keys (AO2-vk,AO2-sk) 35 | aca-[#blue]>aea: AO2-vk 36 | aea->aea: add cloud agent DID verification key AO2-vk to microledger 37 | 38 | newpage 39 | 40 | == Connect with Public Organization Part 2 == 41 | 42 | par2 43 | aea -[#blue]> aca: connection invitation\n\ 44 | AODID, AO1-vk 45 | else 46 | aca-[#blue]>oca: \n\n\n 47 | else 48 | oca-[#blue]>org: \n\n\n 49 | 50 | org->org: create DID, keys, and microledger (OADID, OA1, OAml) 51 | org-[#blue]>oca: request agent DID verification key for OADID 52 | 53 | oca->oca: create DID keypair (OA2) 54 | oca-[#blue]>org: OA2-vk 55 | org->org: add cloud agent DID verification key OA2-vk to microledger 56 | 57 | par2 58 | org-[#blue]>oca: success with microledger deltas 59 | else 60 | oca-[#blue]>aca: \n\n success 61 | else 62 | aca-[#blue]>aea: \n\n 63 | else 64 | aea->al: \n\n 65 | 66 | @enduml 67 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/08-add-connection-private-did-provisioned.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Alice\nEdge Agent" as aea 20 | participant "Alice\nCloud Agent" as aca 21 | participant "Bob\nCloud Agent" as bca 22 | participant "Bob\nEdge Agent" as bea 23 | actor Bob as bob 24 | 25 | note over al, bob #f0f0e0 26 | Alice and Bob know each other and want to connect. 27 | Alice and Bob both already have agents. 28 | Alice knows Bob's invitation address (at his cloud agent). 29 | end note 30 | 31 | == add connection to private DID (provisioned) Part 1 == 32 | 33 | al -> aea: add connection to Bob 34 | aea -> aea: create DID, keypair, and microledger (ABDID, AB1, ABml) 35 | aea -[#blue]> aca: request agent DID verification key for ABDID 36 | aca -> aca: create keypair and endpoint for connection with Bob (AB2) 37 | 38 | note right 39 | This registration will be revoked 40 | if the invitation expires. 41 | end note 42 | 43 | aca -[#blue]> aea: AB2-vk 44 | 45 | aea->aea: add cloud agent DID verification key AB2-vk and endpoint to microledger 46 | aea->aea: create complete connection invitation 47 | note right 48 | this includes the microledger ABml 49 | end note 50 | 51 | newpage 52 | 53 | == add connection to private DID (provisioned) Part 2 == 54 | 55 | par2 56 | aea -[#blue]> aca: connection invitation 57 | else 58 | aca -[#blue]> bca: \n 59 | else 60 | bca -[#blue]> bea: \n 61 | bea -> bob: display connection invitation 62 | 63 | bob -> bea: accept connection invitation 64 | bea -> bea: create DID, keypair, and microledger (BADID, BA1, BAml) 65 | bea -[#blue]> bca: request agent DID verification key for BAml 66 | bca -> bca: create keypair BA2 67 | bca -[#blue]> bea: endpoint and BA2-vk 68 | bea->bea: add cloud agent DID verification key and endpoint BA2-vk to microledger 69 | 70 | par2 71 | bea-[#blue]>bca: success and microledger deltas 72 | else 73 | bca-[#blue]>aca: \n\nsuccess 74 | else 75 | aca-[#blue]>aea: \n\n 76 | else 77 | aea->al: \n\n 78 | 79 | @enduml 80 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/11-revoke-did.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor "Alice" as al 19 | participant "Alice's\nEdge Agent" as aea 20 | participant "Alice's\nCloud Agent" as aca 21 | participant "Bob's\nCloud Agent" as bca 22 | participant "Bob's\nEdge Agent" as bea 23 | 24 | note over al, bea #f0f0e0 25 | Alice is ending her relationship with Bob. 26 | end note 27 | 28 | al -> aea: delete Bob from connections 29 | 30 | aea -> aea: add DISABLE event to microledger ABml, signed by AB1-sk 31 | 32 | aea -[#blue]> aca: ABml deltas 33 | 34 | aca -> aca: applies deltas to local ABml 35 | 36 | aea <-[#blue] aca: ack 37 | 38 | opt if Alice chooses to notify Bob... 39 | par2 40 | aea -[#blue]> aca: ABml deltas 41 | else 42 | aca -[#blue]> bca: \n 43 | else 44 | bca -[#blue]> bea: \n 45 | end 46 | 47 | bea -> bea: applies deltas to local ABml 48 | note left 49 | Propagation of the microledger is a 50 | general solution for messages related 51 | to the connection state. Bob knows 52 | his relationship with Alice is disabled. 53 | end note 54 | 55 | par2 56 | bea -[#blue]> bca: ack 57 | else 58 | bca -[#blue]> aca: 59 | else 60 | aca -[#blue]> aea: 61 | end 62 | 63 | end 64 | 65 | aea -> al: success 66 | 67 | 68 | 69 | @enduml 70 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/12-revoke-edge-agent.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Edge\nAgent 2" as ea 20 | participant "Ledger" as le 21 | 22 | note over al, le #f0f0e0 23 | Alice wishes to revoke edge agent 1. 24 | Alice has previously provisioned edge agent 2. 25 | end note 26 | 27 | == Revoking Agent 1 == 28 | 29 | al -> ea: revoke agent 1 30 | ea -> le: remove agent 1 policy keys 31 | le -> le: update agent policy registry 32 | ea -> ea: remove agent 1 DID keys 33 | 34 | note over al, le #77ccff 35 | include Rotate DID Key diagram 36 | end note 37 | 38 | ea -> al: success 39 | 40 | @enduml 41 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/13-recovery-setup.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Alice's\nEdge Agent" as aea 20 | participant "Alice's\nCloud Agent" as aca 21 | participant "Recovery Buddy\nCloud Agent" as rb1 22 | 23 | note over aca #f0f0e0 24 | Assumptions: Cloud agent automatically stores encrypted backup of Alice's edge wallets 25 | end note 26 | 27 | == recovery setup == 28 | 29 | aea -> al: select options for recovery? 30 | note right 31 | Edge agent recommends Alice sets up a recovery policy 32 | end note 33 | al -> aea: yes 34 | aea -> al: options 35 | note right 36 | Offers offline and social recovery options 37 | end note 38 | al -> aea: choice 39 | aea -> aea: create backup encryption/decryption keypair AR 40 | note right 41 | The backup is encrypted using public key 42 | encryption. The public key is stored in the 43 | wallet and used for encryption. The private key 44 | is used for decryption and is sharded and distributed. 45 | end note 46 | 47 | aea -> aea: encrypt backup 48 | note right 49 | Will continue as background process 50 | end note 51 | aea -[#blue]> aca: encrypted backup 52 | alt chooses recovery buddies (minimum of 3) 53 | note over al, rb1 #77ccff 54 | Each recovery buddy completes Add Recovery Buddy diagram 55 | end note 56 | group Each recovery buddy 57 | aea -[#blue]> aca: recovery data share 58 | note right 59 | Includes backup encryption key ARsk, 60 | claim link secret ALS, and recovery endpoint 61 | end note 62 | aca -[#blue]> rb1: forward share 63 | rb1 -> rb1: store share 64 | par2 65 | rb1 -[#blue]> aca: \nack 66 | else 67 | aca -[#blue]> aea: \n 68 | end 69 | end 70 | else chooses paper wallet backup 71 | aea -> aea: create paper wallet with recovery data 72 | note right 73 | Includes same recovery data as above 74 | end note 75 | aea -> al: display paper wallet 76 | al -> al: save paper wallet 77 | end 78 | 79 | @enduml 80 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/14-add-recovery-trustee.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | participant "Alice's\nEdge Agent" as aea 19 | participant "Alice's\nCloud Agent" as aca 20 | participant "Recovery Buddy\nCloud Agent" as rca 21 | participant "Recovery Buddy\nEdge Agent" as rea 22 | actor "Recovery\nBuddy" as rb1 23 | 24 | == add trustee == 25 | 26 | aea -[#blue]> aca: create recovery buddy invitation 27 | aca -> aca: assign recovery endpoint 28 | note right 29 | This is a unique URL known only to Alice's cloud agent; 30 | it will be used only for a specific recovery invitation 31 | end note 32 | aca -[#blue]> aea: return recovery buddy invitation 33 | aea -> aea: create recovery data share 34 | note right 35 | This is a share of the recovery data - see **Recovery Setup** 36 | end note 37 | 38 | alt connection exists 39 | par2 40 | aea -[#blue]> aca: recovery buddy invitation 41 | else 42 | aca -[#blue]> rca: \nforward 43 | else 44 | rca -[#blue]> rea: \n 45 | end 46 | rea -> rb1: notify pending recovery buddy invitation 47 | else connection does not exist 48 | aea --> rb1: recovery buddy invitation 49 | note right 50 | Out of band 51 | end note 52 | note over aea, rb1 #f0f0e0 53 | Some time later 54 | end note 55 | alt If Buddy doesn't have software installed 56 | note over aea, rb1 #77ccff 57 | include Add Connection to Private DID (Unprovisioned) diagram 58 | end note 59 | else If Buddy does not already have a connection with Alice 60 | note over aea, rb1 #77ccff 61 | include Add Connection to Private DID (Provisioned) diagram 62 | end note 63 | end 64 | end 65 | rb1 -> rea: accepts recovery buddy invitation 66 | par2 67 | rea -[#blue]> rca: accept recovery buddy invitation 68 | else 69 | rca -[#blue]> aca: \n\nforward 70 | else 71 | aca -[#blue]> aea: \n\n 72 | end 73 | 74 | @enduml 75 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/15-recovery-update.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Alice's\nEdge Agent" as aea 20 | participant "Alice's\nCloud Agent" as aca 21 | participant "Recovery Buddy\nCloud Agent" as rca 22 | participant "Recovery Buddy\nEdge Agent" as rea 23 | actor "Recovery\nBuddy" as rb1 24 | 25 | note over al, rb1 #f0f0e0 26 | Assumptions: Recovery Setup diagram has happened 27 | end note 28 | 29 | == recovery update == 30 | 31 | al -> aea: update recovery options 32 | opt Add more recovery buddies 33 | al -> aea: select another recovery buddy 34 | 35 | aea -> aea: create new backup keypair 36 | 37 | note over al, rb1 #77ccff 38 | include Add Recovery Buddy diagram (for each recovery buddy) 39 | end note 40 | 41 | par2 42 | aea -[#blue]> aca: PREPARE msg for share 43 | else 44 | aca -[#blue]> rca: \nforward 45 | else 46 | rca -[#blue]> rea: \n 47 | end 48 | 49 | rea -> rea: store new share with pending status 50 | 51 | par2 52 | rea -[#blue]> rca: \nack 53 | else 54 | rca -[#blue]> aca: \n 55 | else 56 | aca -[#blue]> aea:\n 57 | end 58 | 59 | aea -> aea: wait for enough responses 60 | 61 | par2 62 | aea -[#blue]> aca: COMMIT msg for new share 63 | else 64 | aca -[#blue]> rca: \nforward 65 | else 66 | rca -[#blue]> rea: \n 67 | end 68 | 69 | rea -> rea: delete old share; replace with new share 70 | 71 | par2 72 | rea -[#blue]> rca: \nack 73 | else 74 | rca -[#blue]> aca: \n 75 | else 76 | aca -[#blue]> aea: \n 77 | end 78 | 79 | aea -> al: success 80 | 81 | else Adding or changing to offline recovery 82 | al -> aea: select paper wallet backup 83 | aea -> aea: create paper wallet 84 | note right 85 | Includes private recovery key ARsk 86 | link secret ALS, and agency's DID for Alice 87 | end note 88 | aea -> al: display paper wallet 89 | al -> al: save paper wallet 90 | 91 | end 92 | 93 | @enduml 94 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/16-offline-recovery.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Alice\nEdge Agent" as aea 20 | participant "Alice\nCloud Agent" as aca 21 | participant "Ledger" as led 22 | 23 | note over aca #f0f0e0 24 | Assumptions: Cloud agent automatically stores encrypted backup of Alice's edge wallets 25 | end note 26 | 27 | note over al, led #77ccff 28 | include Provision New Agent diagram 29 | end note 30 | == offline recovery process == 31 | 32 | aea -> al: please scan paper wallet 33 | al -> aea: scan paper wallet 34 | aea -> aea: extract recovery endpoint 35 | aea -[#blue]> aca: request encrypted backup 36 | 37 | aca -[#blue]> aea: encrypted backup 38 | aea -> aea: decrypt and restore backup data 39 | aea -> aea: replace old agent keys with new agent keys 40 | 41 | note over al, led #77ccff 42 | include Update Agent Policy Registry diagram 43 | end note 44 | note over al, led #77ccff 45 | include Rotate DID Key diagram 46 | end note 47 | 48 | @enduml 49 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/agency-migration.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Alice's\nEdge Agent" as aea 20 | participant "Alice's Old\nCloud Agent" as aoca 21 | participant "Alice's New\nCloud Agent" as anca 22 | 23 | 24 | == == 25 | 26 | al -> aea: change agency 27 | note right 28 | Alice enters the new agency information 29 | and completes Add Cloud Agent 30 | with the new agency 31 | end note 32 | 33 | note over al, bob #77ccff 34 | include Add Cloud Agent diagram 35 | end note 36 | 37 | note over al, bob 38 | When rotating DID keys, the deltas will include 39 | the new agency service endpoint 40 | end note 41 | 42 | note over al, bob #77ccff 43 | include Rotate DID Key diagram 44 | end note 45 | 46 | note over al, bob 47 | Recovery update will need to be updated 48 | to point to the new agency 49 | end note 50 | 51 | note over al, bob #77ccff 52 | include Recovery Update diagram 53 | end note 54 | 55 | 56 | @enduml 57 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/burn-identity-with-agents.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | 18 | actor Alice as al 19 | participant "Issuers" as IS 20 | participant "Ledger" as le 21 | 22 | note over al, le #f0f0e0 23 | Assumptions: 24 | end note 25 | 26 | @enduml 27 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/failure-modes.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam roundcorner 15 3 | skinparam maxmessagesize 100 4 | skinparam state { 5 | ArrowColor grey 6 | BorderColor grey 7 | FontSize 17 8 | } 9 | 10 | state Oblivious { 11 | state "Stolen" as stdk 12 | state "Lurk" as lkdk 13 | state "Lost" as ltdk 14 | state "Misuse" as imdk 15 | } 16 | Oblivious: Mitigation by prevention, reducing impact\nand attacker benefit 17 | 18 | state Cognizant { 19 | state Stolen 20 | state Lurk 21 | state Lost 22 | state Misuse 23 | } 24 | Cognizant: Mitigation by prevention, quick recovery,\nreducing impact and attacker benefit 25 | 26 | 27 | Functional --> Cognizant 28 | Functional --> Oblivious 29 | Oblivious --> stdk 30 | Oblivious --> lkdk 31 | Oblivious --> ltdk 32 | Oblivious --> imdk 33 | Cognizant --> Stolen 34 | Cognizant --> Lurk 35 | Cognizant --> Lost 36 | Cognizant --> Misuse 37 | 38 | stdk --> Stolen 39 | lkdk --> Lurk 40 | ltdk --> Lost 41 | 42 | Lost --> stdk 43 | lkdk -right-> imdk 44 | Lurk -right-> Misuse 45 | 46 | @enduml 47 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/overview.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam roundcorner 15 3 | skinparam maxmessagesize 100 4 | skinparam state { 5 | ArrowColor grey 6 | BorderColor grey 7 | FontSize 17 8 | } 9 | 10 | state "Identity" as id 11 | state "Link Secret" as cls: Used in all claims 12 | state "Payment Keys" as payks 13 | state "Policy Keys" as polks 14 | state "DID Keys" as didks 15 | state "Claims" as clm { 16 | state "Claim 1" 17 | state "Claim 2" 18 | } 19 | state "Ledger" as le { 20 | state "Identity\nPolicy\nAddress" as ipa 21 | state "Prover\nRegistry\nAccumulator" as ga 22 | state "Token\nAccumulator" as ta 23 | le --> ga: Push\nUpdates 24 | } 25 | 26 | id --> cls 27 | id --> didks 28 | id --> polks 29 | id --> payks 30 | 31 | id --> clm 32 | cls --> clm 33 | polks --> ipa: CRUD for ACL 34 | payks --> ta: Spend 35 | 36 | @enduml 37 | -------------------------------------------------------------------------------- /concepts/0051-dkms/puml/revoke-edge-agent-success.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam sequenceArrowThickness 2 3 | skinparam roundcorner 15 4 | skinparam maxmessagesize 100 5 | skinparam sequence { 6 | ArrowColor grey 7 | LifeLineBorderColor grey 8 | ParticipantBorderColor grey 9 | boxbordercolor white 10 | ParticipantFontSize 17 11 | actorfontsize 17 12 | boxfontsize 17 13 | boxfontcolor grey 14 | ActorBorderColor grey 15 | Actorbackgroundcolor white 16 | } 17 | actor "Alice" as al 18 | participant "Edge\nAgent 2" as ea 19 | participant "Ledger" as le 20 | 21 | note over al, le #f0f0e0 22 | Alice's only edge agent 1 becomes 23 | unavailable to her. It's stolen, lost, 24 | malfunctioning, physically gone or it's hacked 25 | and she no longer trusts using that agent. 26 | end note 27 | 28 | == Setup new agent == 29 | note over al, le 30 | Alice follows process in 31 | recover-offline.puml or recover-social.puml. 32 | After that former agent 1 is revoked. 33 | Attacker is halted at that point. 34 | end note 35 | 36 | @enduml 37 | -------------------------------------------------------------------------------- /concepts/0051-dkms/shamir_secret.md: -------------------------------------------------------------------------------- 1 | # Shamir secret API (indy-crypto and indy-sdk) 2 | **Objective**: `indy-crypto` exposes the low level API for generating and reconstructing secrets. `indy-sdk` uses the underlying `indy-crypto` and exposes an API to shard a JSON message, store the shards and reconstitute the secret. 3 | 4 | ## Indy-crypto 5 | 1. `shard_secret(secret: bytes, m: u8, n: u8, sign_shares: Option) -> Result, IndyCryptoError>`. 6 | Splits the bytes of the secret `secret` in `n` different shares and `m-of-n` shares are required to reconstitute the secret. `sign_shares` if provided, all shards are signed. 7 | 1. `recover_secret(shards: Vec, verify_signatures: Option) -> Result, IndyCryptoError>`. 8 | Recover the secret from the given `shards`. `verify_signatures` if given verifies the signatures. 9 | 10 | ## Indy-sdk 11 | 1. `shard_JSON(msg: String, m: u8, n: u8, sign_shares: Option) -> Result, IndyError>` 12 | Takes the message as a JSON string and serialises it to bytes and passes it to `shard_secret` of `indy-crypto`. The serialisation has to be deterministic, i.e the same JSON should always serialise to same bytes everytime. The resulting `Share` given by `indy-crypto` is converted to JSON before returning. 13 | 1. `shard_JSON_with_wallet_data(wallet_handle: i32, msg: String, wallet_keys:Vec<&str>, m: u8, n: u8, sign_shares: Option) -> Result, IndyError>` 14 | Takes the message as a JSON string, updates the JSON with key-values from wallet given by handle `wallet_handle`, keys present in the vector `wallet_keys` and passes the resulting JSON to `shard_JSON`. 15 | 1. `recover_secret(shards: Vec, verify_signatures: Option) -> Result` 16 | Takes a collection of shards each encoded as JSON, deserialises them into `Share`s and passes them to `recover_secret` from `indy-crypto`. It converts the resulting secret back to JSON before returning it. 17 | 1. `shard_JSON_and_store_shards(wallet_handle: i32, msg: String, m: u8, n: u8, sign_shares: Option) -> Result` 18 | Shards the given JSON using `shard_JSON` and store shards as a JSON array (each shard is an object in itself) in the wallet given by `wallet_handle`. Returns the wallet key used to store the shards. 19 | -------------------------------------------------------------------------------- /concepts/0094-cross-domain-messaging/domains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0094-cross-domain-messaging/domains.jpg -------------------------------------------------------------------------------- /concepts/0094-cross-domain-messaging/forwarding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0094-cross-domain-messaging/forwarding.jpg -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/3-modes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/3-modes.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/controllership-details.md: -------------------------------------------------------------------------------- 1 | # Controllership Details 2 | 3 | * How controlled things can undermine privacy 4 | * controllership and delegation 5 | * Ethical considerations and the duty continuum 6 | * Informal controllership by owner 7 | * How controllership becomes transparent 8 | * sample trust framework (DignifID?) -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/controllership.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/controllership.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/delegation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/delegation.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/eval-guardian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/eval-guardian.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-details.md: -------------------------------------------------------------------------------- 1 | # Guardianship Details 2 | 3 | For a complete walkthrough or demo of how guardianship works, see 4 | [this demo script](https://docs.google.com/document/d/1F997KatmPe_rUCYFR4Ga9gJPKcmrN5czlx4K_qMdiJs/edit). 5 | 6 | ## Use Cases 7 | See https://docs.google.com/presentation/d/1qUYQa7U1jczEFun3a7sB3lKHIprlwd7brfOU9hEJ34U/edit?usp=sharing 8 | 9 | ## Who appoints a guardian (rationales) 10 | See https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_0 11 | 12 | ## Transparent vs. Opaque 13 | See https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_46 14 | 15 | ## Modes of Guardianship 16 | Holding-Based, Impersonation, Doc-based 17 | 18 | See https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_265 19 | 20 | See also https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_280, 21 | https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_295, 22 | https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_307 23 | 24 | ## Guardians and Wallets 25 | Need to work on "wallets" term 26 | See https://docs.google.com/presentation/d/1aq45aUHTOK_WhFEICboXQrp7dalpLm9-MGg77Nsn50s/edit#slide=id.g59fffee7a0_0_365 27 | 28 | ## Guardians and Delegation 29 | TODO 30 | 31 | ## Privacy Considerations 32 | 33 | ## Diffuse Trust 34 | 35 | -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-risk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/guardianship-risk.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-sample/mya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/guardianship-sample/mya.jpg -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-sample/schema-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/guardianship-sample/schema-thumbnail.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-sample/schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | "@context", //JSON array where first = uri w3.org/2018/credentials/v1 3 | "id", // optional 4 | "type", //"[\",VerifiableCredential\", \"Guardaniship/1.0\"]", 5 | "credentialSchema", // points to cred def 6 | "issuanceDate", // standard in VCs RFC3339 Date-Time string 7 | "expirationDate", 8 | "credentialStatus", { "id" /*points to rev reg*/, "type": "sovrin rev reg 1.0" } 9 | "issuer", // 10 | "trustFramework", // uri to a website 11 | "auditURI", // constrained by trust framework, but a URI 12 | "appealURI", // same 13 | "credentialSubject.holder.type", // uri to schema for a holder 14 | "credentialSubject.holder.role", // "parent" or "grandparent" 15 | "credentialSubject.holder.rationaleURI", // uri from trust framework that defines which rationale justifies the guardianship 16 | "credentialSubject.holder.firstName", 17 | "credentialSubject.holder.constraints.boundaries", 18 | "credentialSubject.holder.constraints.pointOfOrigin", 19 | "credentialSubject.holder.constraints.radiusKM", 20 | "credentialSubject.holder.constraints.jurisdictions", 21 | "credentialSubject.holder.constraints.trigger", 22 | "credentialSubject.holder.constraints.circumstances", 23 | "credentialSubject.holder.constraints.startTime", 24 | "credentialSubject.holder.constraints.endTime", 25 | "credentialSubject.proxied.type", // uri to schema for a dependent 26 | "credentialSubject.proxied.permissions", // string of JSON array of grants 27 | "credentialSubject.proxied.firstName", 28 | "credentialSubject.proxied.lastName", 29 | "credentialSubject.proxied.birthDate", 30 | "credentialSubject.proxied.gender", 31 | "credentialSubject.proxied.nativeLanguage", 32 | "credentialSubject.proxied.identifyingMarks", 33 | "credentialSubject.proxied.photo", 34 | "credentialSubject.proxied.iris", 35 | "credentialSubject.proxied.fingerprint" 36 | ] 37 | -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship-sample/schema.md: -------------------------------------------------------------------------------- 1 | # Sample Guardianship Schema 2 | 3 | [![mya](mya.jpg)](https://docs.google.com/presentation/d/1qUYQa7U1jczEFun3a7sB3lKHIprlwd7brfOU9hEJ34U/edit#slide=id.p7) 4 | 5 | This document presents a sample schema for a guardian credential appropriate to the [IRC-as-guardian-of-Mya-in-a-refugee-camp use case]( https://docs.google.com/presentation/d/1qUYQa7U1jczEFun3a7sB3lKHIprlwd7brfOU9hEJ34U/edit#slide=id.p7). It is accompanied by a [sample trust framework](trust-framework.md). 6 | 7 | The raw schema is here: 8 | 9 | [![schema thumbnail](schema-thumbnail.png)](schema.json) 10 | 11 | For general background on guardianship and its associated credentials, see [this slide presentation]( http://bit.ly/2vZGJoK). 12 | 13 | ### How to Use 14 | 15 | The schema documented here could be passed as the `attrs` arg to the [`indy_issuer_create_schema()` method in libindy](https://github.com/hyperledger/indy-sdk/blob/af6ebf4d9c7b4b04ac0bf313c3a9805965e50e92/libindy/src/api/anoncreds.rs#L55). The "1.0" in this document's name refers to the fact that we are using Indy 1.0-style schemas; we aren't trying to use the rich schema constructs that will be available to us when the ["schema 2.0" effort]( https://github.com/hyperledger/indy-hipe/pull/119) is mature. 16 | 17 | The actual JSON you would need to pass to the `indy_issuer_create_schema()` method is given in the attached [schema.json](schema.json) file. In code, if you place that file's content in a string variable and pass the variable as the `attrs` arg, the schema will be registered on the ledger. You might use values like "Red Cross Vulnerable Populations Guardianship Cred" and "1.0" as the `name` and `version` args to that same function. You can see an example of how to make the call by looking at the ["Save Schema and Credential Definition" How-To in Indy SDK]( https://github.com/hyperledger/indy-sdk/blob/master/docs/how-tos/save-schema-and-cred-def/README.md). 18 | 19 | See the [accompanying trust framework](trust-framework.md) for an explanation of individual fields. -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/guardianship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/guardianship.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/matrix.png -------------------------------------------------------------------------------- /concepts/0103-indirect-identity-control/proxy-cred-name-pat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0103-indirect-identity-control/proxy-cred-name-pat.png -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/chains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0104-chained-credentials/chains.png -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/contrast-zcap-ld.md: -------------------------------------------------------------------------------- 1 | ### Why not ZCAP-LD? 2 | 3 | The object capability model is great, and ZCAP-LD is an interesting solution that exposes that goodness to the VC ecosystem. However, we had the following concerns when we first encountered its spec (originally entitled "OCAP-LD"): 4 | 5 | * It invents a new document format type, with associated new parsing and validation logic. We wondered whether a VC itself, instead of a new type of doc, could convey an object capability. Using a VC to convey delegation, instead of a new doc type, would minimize new code and possibly give a natural adaptation path for all VC ecosystems. (In fairness to ZCAP-LD, the reuse is fairly substantial with ZCAP-LD if your VC impl is JSON-LD centric. So this concern mainly resonates for people coming from a JWT- or ZKP-centric world.) 6 | 7 | * ZCAP-LD's mechanism for validating the non-revocation status of each credential in the delegation chain seemed to follow the same revocation checking pattern as traditional non-ZKP credentials. This results in a workflow where everyone upstream in a delegated credential chain finds out each time a credential is used, which is a privacy concern. 8 | 9 | * We had concerns about fragility. When issuers are massive institutions that are online 24x7x365, this may not be deeply problematic, but we wanted a solution that could be used by issuers that are regularly offline. 10 | 11 | * It wasn't obvious to us how to use ZCAP-LD when ZKPs are a desirable feature. 12 | 13 | * We needed to integrate delegation with the concepts of guardianship and controllership (e.g., so a guardian could delegate and a delegate could be a guardian). This required some commonality among the 3 modes of proxy identity control that was not modeled in ZCAP-LD. 14 | 15 | * We wanted to use delegation features to faciliate issuance by private individuals, while short-circuiting the relatively demanding setup that normal VC issuance requires. 16 | 17 | For these reasons, we spent some time working out a somewhat similar mechanism. We hope we can reconcile the two at some point. For now, though, this doc just describes our alternative path. 18 | 19 | -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/delegation-proofs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0104-chained-credentials/delegation-proofs.png -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/provenanced-authz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0104-chained-credentials/provenanced-authz.png -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/provenanced-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0104-chained-credentials/provenanced-name.png -------------------------------------------------------------------------------- /concepts/0104-chained-credentials/use-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0104-chained-credentials/use-case.png -------------------------------------------------------------------------------- /concepts/0167-data-consent-lifecycle/media/consent_actors_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0167-data-consent-lifecycle/media/consent_actors_overview.png -------------------------------------------------------------------------------- /concepts/0167-data-consent-lifecycle/media/consent_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0167-data-consent-lifecycle/media/consent_flow.png -------------------------------------------------------------------------------- /concepts/0167-data-consent-lifecycle/media/proof_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0167-data-consent-lifecycle/media/proof_flow.png -------------------------------------------------------------------------------- /concepts/0167-data-consent-lifecycle/reference-implementation/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | indy_pool: 4 | build: 5 | context: ../../ci/ 6 | dockerfile: indy-pool.dockerfile 7 | args: 8 | pool_ip: '10.0.0.2' 9 | image: indy_pool 10 | container_name: indy_pool 11 | working_dir: /home/indy 12 | ports: 13 | - "9701:9701" 14 | - "9702:9702" 15 | - "9703:9703" 16 | - "9704:9704" 17 | - "9705:9705" 18 | - "9706:9706" 19 | - "9707:9707" 20 | - "9708:9708" 21 | networks: 22 | pool_network: 23 | ipv4_address: 10.0.0.2 24 | volumes: 25 | - sandbox:/var/lib/indy/sandbox/ 26 | jupyter: 27 | build: 28 | context: . 29 | dockerfile: getting-started.dockerfile 30 | command: jupyter notebook --ip=0.0.0.0 31 | image: getting-started 32 | container_name: getting_started 33 | working_dir: /home/indy 34 | volumes: 35 | - ./:/home/indy 36 | - sandbox:/home/indy/sandbox 37 | ports: 38 | - "8888:8888" 39 | networks: 40 | - pool_network 41 | links: 42 | - indy_pool 43 | networks: 44 | pool_network: 45 | driver: bridge 46 | ipam: 47 | driver: default 48 | config: 49 | - 50 | subnet: 10.0.0.0/24 51 | volumes: 52 | sandbox: 53 | -------------------------------------------------------------------------------- /concepts/0207-credential-fraud-threat-model/4d-locus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0207-credential-fraud-threat-model/4d-locus.png -------------------------------------------------------------------------------- /concepts/0207-credential-fraud-threat-model/data-flow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Data Flow for Credential Fraud 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /concepts/0207-credential-fraud-threat-model/data-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0207-credential-fraud-threat-model/data-flow.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_2x2.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_aadhaar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_aadhaar.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_arch1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_arch1.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_arch2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_arch2.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_arch_proofing1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_arch_proofing1.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_arch_recovery1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_arch_recovery1.png -------------------------------------------------------------------------------- /concepts/0231-biometric-service-provider/images/bsp_nist_idproofing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0231-biometric-service-provider/images/bsp_nist_idproofing.png -------------------------------------------------------------------------------- /concepts/0250-rich-schemas/rich-schema-objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0250-rich-schemas/rich-schema-objects.png -------------------------------------------------------------------------------- /concepts/0250-rich-schemas/zkp-cred-pres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0250-rich-schemas/zkp-cred-pres.png -------------------------------------------------------------------------------- /concepts/0270-interop-test-suite/channels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0270-interop-test-suite/channels.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-1-toip-full-stack-2020-05-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-1-toip-full-stack-2020-05-06.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-2-urn-and-did-syntax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-2-urn-and-did-syntax.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-3-agent-ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-3-agent-ecosystem.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-4-vc-trust-triangle-2020-05-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-4-vc-trust-triangle-2020-05-31.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-5-gov-frameworks-2020-05-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-5-gov-frameworks-2020-05-31.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/fig-6-governance-framework-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/fig-6-governance-framework-model.png -------------------------------------------------------------------------------- /concepts/0289-toip-stack/img/src/diagrams.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0289-toip-stack/img/src/diagrams.key -------------------------------------------------------------------------------- /concepts/0420-rich-schemas-common/relationship-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0420-rich-schemas-common/relationship-diagram.png -------------------------------------------------------------------------------- /concepts/0420-rich-schemas-common/relationship-diagram.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | object "Presentation definition" as pres_def { 3 | } 4 | object "Presentation" as pres { 5 | } 6 | object "Mapping" as map { 7 | } 8 | object "Encoding" as enc { 9 | } 10 | object "Credential definition" as cred_def { 11 | } 12 | object "Verifiable credential" as verif_cred { 13 | } 14 | object "Rich Schema" as rich_schema { 15 | } 16 | 17 | pres "1" --> "0..n" pres_def 18 | pres "1..n" --> "0..n" verif_cred 19 | 20 | pres_def "\n0..n" --> "0..n" rich_schema 21 | pres_def "0..n" --> "0..n" map 22 | pres_def "0..n" --> "0..n" cred_def 23 | 24 | verif_cred "1" --> "0..n" cred_def 25 | verif_cred "1" --> "0..n" rich_schema 26 | 27 | cred_def "1" --> "0..n" map 28 | 29 | map "1" --> "0..n" rich_schema 30 | map "1..n" --> "0..n" enc 31 | 32 | rich_schema "0..n" -up-> rich_schema 33 | 34 | @enduml -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/about-diploma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/about-diploma.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/about-tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/about-tf.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/context.jsonld: -------------------------------------------------------------------------------- 1 | { 2 | "@context": { 3 | "name": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#name", 4 | "version": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#version", 5 | "logo": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#logo", 6 | "description": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#description", 7 | "docs_uri": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#docs_uri", 8 | "topics": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#topics", 9 | "geos": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#geos", 10 | "jurisdictions": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#jurisdictions", 11 | "roles": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#roles", 12 | "privileges": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#privileges", 13 | "duties": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#duties", 14 | "define": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#define", 15 | "rules": "https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0430-machine-readable-governance-frameworks/README.md#rules" 16 | } 17 | } -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/guy-wires.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/guy-wires.jpg -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/issuer-not-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/issuer-not-ok.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/issuer-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/issuer-ok.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/tos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/tos.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/ux-accept-tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/ux-accept-tf.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/ux-upgrade-tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/ux-upgrade-tf.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/verifier-not-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/verifier-not-ok.png -------------------------------------------------------------------------------- /concepts/0430-machine-readable-governance-frameworks/verifier-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0430-machine-readable-governance-frameworks/verifier-ok.png -------------------------------------------------------------------------------- /concepts/0440-kms-architectures/keychain_auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0440-kms-architectures/keychain_auth.png -------------------------------------------------------------------------------- /concepts/0440-kms-architectures/kms_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0440-kms-architectures/kms_architecture.png -------------------------------------------------------------------------------- /concepts/0440-kms-architectures/password_auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0440-kms-architectures/password_auth.png -------------------------------------------------------------------------------- /concepts/0440-kms-architectures/session_management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0440-kms-architectures/session_management.png -------------------------------------------------------------------------------- /concepts/0478-coprotocols/as_coprotocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0478-coprotocols/as_coprotocol.png -------------------------------------------------------------------------------- /concepts/0478-coprotocols/as_coprotocol.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam EntityBorderColor #505050 3 | 4 | title Simplified Coprotocol Interface 5 | autonumber 5 6 | hide footbox 7 | entity "Caller" as caller #red 8 | actor "Payee" as payee 9 | caller --> payee: invoke(amount, currency, bill_of_sale)\npayee state => requested 10 | alt continue or not 11 | autonumber 6.1 12 | payee --> payee: state =>\nwaiting for commit 13 | payee --> caller: preauth(code) 14 | alt commit or not 15 | autonumber 6.3.1 16 | caller --> payee: proceed(continue = true)\npayee state => finalizing 17 | payee --> caller: return(confirmation_code) 18 | else 19 | autonumber 6.3.0 20 | caller [#gray]--x payee: proceed(continue = false) 21 | end alt 22 | else 23 | autonumber 6.0 24 | caller [#gray]--x payee: proceed(continue = false) 25 | end alt 26 | 27 | @enduml -------------------------------------------------------------------------------- /concepts/0478-coprotocols/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0478-coprotocols/icon.png -------------------------------------------------------------------------------- /concepts/0478-coprotocols/payment-coprotocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0478-coprotocols/payment-coprotocol.png -------------------------------------------------------------------------------- /concepts/0478-coprotocols/payment-protocol.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | skinparam EntityBorderColor #505050 3 | 4 | title Imagined Payment Protocol: Gateway + Smart Contract 5 | autonumber 6 | hide footbox 7 | actor "Payee" as payee 8 | actor "Payer" as payer 9 | entity "Gateway" as gate #green 10 | entity "Blockchain" as chain #blue 11 | payee -> payer: Payment Request\n(payee state=requested\npayer state=requested) 12 | alt reject or cooperate 13 | autonumber 2.1 14 | payer -> gate: Payment Config\n(payer state=configured) 15 | gate --> chain: give desired txn info\nto smart contract 16 | chain --> chain: validate 17 | chain --> gate: handle to pending txn 18 | gate --> payer: handle to pending txn\n(payer state=pending) 19 | payer --> gate: commit\n(payer state=committed) 20 | gate --> chain: commit 21 | chain -> chain: transfer via\nsmart contract 22 | chain -> gate: txn hash 23 | gate -> payer: txn hash\n(payer state=done) 24 | payer -> payee: txn hash\n(payee state=done) 25 | else 26 | autonumber 2.0 27 | payer [#gray]-x payee: Reject\n(payer state=rejected\npayee state=abandoned) 28 | end alt 29 | 30 | @enduml -------------------------------------------------------------------------------- /concepts/0478-coprotocols/payment_protocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0478-coprotocols/payment_protocol.png -------------------------------------------------------------------------------- /concepts/0530-goal-human-readable-verified-identifer/README.md: -------------------------------------------------------------------------------- 1 | # Aries RFC 0530: Goal - Human Readable Verifiable Identifier 2 | 3 | - Authors: [Sam Curren](telegramsam@gmail.com) 4 | - Status: [PROPOSED](/README.md#proposed) 5 | - Since: 2020-08-26 6 | - Status Note: Early Proposal 7 | - Start Date: 2020-08-26 8 | - Tags: goalcode 9 | 10 | ## Summary 11 | 12 | DIDs are not human friendly. DIDComm provides a secure connection between two DIDs. This goal code seeks to provide a verifiable, human readable identifier from one party to another. 13 | 14 | ## Motivation 15 | 16 | Presenting a Human Readable Verifiable Identifier over a DIDComm connection aids the user in positive connection identification. It also plays a role in Man-in-the-Middle (MitM) attack prevention. 17 | 18 | ## Reference 19 | 20 | ### Goal Code 21 | 22 | `aries.receive.verifiable.identifier` 23 | 24 | ### Explanation 25 | 26 | The party presenting this goal code has a goal of receiving a human readable verifiable identifier from the party it presents it to. 27 | 28 | ### Key Concepts 29 | 30 | Human Readable implies that the identifier is meaningful to a human. This might be an identifier already used to communicate, such as an email address, phone number, website domain name, or social media account name. 31 | 32 | A Verifiable identifier requires that some level of assurance is provided that control has been proven over the identifier. 33 | 34 | Governance Frameworks that serve this goal code must provide details about which identifiers are acceptable, and how they are to be verified. 35 | 36 | ## Governance Frameworks 37 | 38 | The following Governance Frameworks are related to this goal code. 39 | 40 | - Domain Control 41 | - Email Ownership 42 | 43 | ## Unresolved questions 44 | 45 | - 46 | 47 | ## Implementations 48 | 49 | > NOTE: This section should remain in the RFC as is on first release. Remove this note and leave the rest of the text as is. Template text in all other sections should be removed before submitting your Pull Request. 50 | 51 | The following lists the implementations (if any) of this RFC. Please do a pull request to add your implementation. If the implementation is open source, include a link to the repo or to the implementation within the repo. Please be consistent in the "Name" field so that a mechanical processing of the RFCs can generate a list of all RFCs supported by an Aries implementation. 52 | 53 | *Implementation Notes* [may need to include a link to test results](README.md#accepted). 54 | 55 | Name / Link | Implementation Notes 56 | --- | --- 57 | | 58 | -------------------------------------------------------------------------------- /concepts/0535-email-access-governance-framework/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": ["https://github.com/hyperledger/aries-rfcs/blob/master/0430-machine-readable-governance-frameworks/context.jsonld"], 3 | "name": "Email Access" 4 | "version": "0.1", 5 | "description": "Proof of email access, useful for proving a common identifier and/or validating an email address without performing a live loop-back test." 6 | "last_updated": "2020-09-16", 7 | "docs_uri": "http://github.com/hyperledger/aries-rfcs/blob/master/", 8 | "data_uri": "", 9 | "schemas": ["schemaidhere"], 10 | "roles": ["issuer"], 11 | "rules": [ {"when": {"id": "did:example:abc123"}, "thus": "issuer"} ] 12 | } -------------------------------------------------------------------------------- /concepts/0559-pppu/anonymous-issuance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0559-pppu/anonymous-issuance.png -------------------------------------------------------------------------------- /concepts/0559-pppu/identified-issuance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0559-pppu/identified-issuance.png -------------------------------------------------------------------------------- /concepts/0559-pppu/linked-creds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0559-pppu/linked-creds.png -------------------------------------------------------------------------------- /concepts/0700-oob-through-redirect/oob-redirect-mediated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0700-oob-through-redirect/oob-redirect-mediated.png -------------------------------------------------------------------------------- /concepts/0700-oob-through-redirect/oob-redirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0700-oob-through-redirect/oob-redirect.png -------------------------------------------------------------------------------- /concepts/0781-trust-input-protocol/Test: -------------------------------------------------------------------------------- 1 | . 2 | -------------------------------------------------------------------------------- /concepts/0781-trust-input-protocol/trust-input-states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0781-trust-input-protocol/trust-input-states.png -------------------------------------------------------------------------------- /concepts/0781-trust-input-protocol/trust-inputs-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0781-trust-input-protocol/trust-inputs-flow.png -------------------------------------------------------------------------------- /concepts/0812-compression-dictionary/YlU3M52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0812-compression-dictionary/YlU3M52.png -------------------------------------------------------------------------------- /concepts/0812-compression-dictionary/b9y8VTC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/concepts/0812-compression-dictionary/b9y8VTC.png -------------------------------------------------------------------------------- /features/0019-encryption-envelope/domains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0019-encryption-envelope/domains.jpg -------------------------------------------------------------------------------- /features/0023-did-exchange/did-exchange-states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0023-did-exchange/did-exchange-states.png -------------------------------------------------------------------------------- /features/0024-didcomm-over-xmpp/XMPP_architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0024-didcomm-over-xmpp/XMPP_architecture.jpg -------------------------------------------------------------------------------- /features/0028-introduce/any-identity-owner-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/any-identity-owner-type.png -------------------------------------------------------------------------------- /features/0028-introduce/double-opt-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/double-opt-in.png -------------------------------------------------------------------------------- /features/0028-introduce/introducer-no-did.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/introducer-no-did.png -------------------------------------------------------------------------------- /features/0028-introduce/public-invitation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/public-invitation.png -------------------------------------------------------------------------------- /features/0028-introduce/scenario.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/scenario.png -------------------------------------------------------------------------------- /features/0028-introduce/states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/states.png -------------------------------------------------------------------------------- /features/0028-introduce/uneven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0028-introduce/uneven.png -------------------------------------------------------------------------------- /features/0030-sync-connection/abandon-connection-protocol/announce.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "https://didcomm.org/abandon_connection/1.0/announce", 3 | "@id": "c17147d2-ada6-4d3c-a489-dc1e1bf778ab" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /features/0030-sync-connection/sync_state.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "https://didcomm.org/sync-connection/1.0/sync_state", 3 | "@id": "e61586dd-f50e-4ed5-a389-716a49817207", 4 | "for": "did:peer:11-479cbc07c3f991725836a3aa2a581ca2029198aa420b9d99bc0e131d9f3e2cbe", 5 | "base_hash": "d48f058771956a305e12a3b062a3ac81bd8653d7b1a88dd07db8f663f37bf8e0", 6 | "base_hash_time": "2019-07-23 18:05:06.123Z", 7 | "deltas": [ 8 | { 9 | "id": "040aaa5e-1a27-40d8-8d53-13a00b82d235", 10 | "change": "ewogICJwdWJsaWNLZXkiOiBbCiAgICB...ozd1htcVBWcGZrY0pDd0R3biIKICAgIH0KICBdCn0=", 11 | "by": [ {"key": "H3C2AVvL", "sig": "if8ooA+32YZc4SQBvIDDY9tgTa...i4VvND87PUqq5/0vsNFEGIIEDA=="} ], 12 | "when": "2019-07-18T15:49:22.03Z" 13 | } 14 | ] 15 | } 16 | 17 | -------------------------------------------------------------------------------- /features/0030-sync-connection/test_cases.md: -------------------------------------------------------------------------------- 1 | # Test Cases for Sync Connection Protocol 2 | 3 | ### Given 4 | 5 | Let us assume that Alice and Bob each have 4 agents (A.1-A.4 and B.1-B.4, respectively), 6 | and that each of these agents possesses one key pair that's authorized to authenticate 7 | and do certain things in the DID Doc. 8 | 9 | A.1 and B.1 are routing (cloud) agents, where A.2-4 and B.2-4 run on edge devices 10 | that are imperfectly connected. A.1 and B.1 do not appear in the `authentication` 11 | section of their respective DID Docs, and thus cannot login on Alice and Bob's behalf. 12 | 13 | Let us further assume that Alice and Bob each have 14 | two "recovery keys": A.5 and A.6; B.5 and B.6. These keys are not held by agents, but 15 | are printed on paper and held in a vault, or are sharded to friends. They are 16 | highly privileged but very difficult to use, since they would have to be digitized or 17 | unsharded and given to an agent before they would be useful. 18 | 19 | "Admin" operations like adding keys and granting privileges to them require either 20 | one of the privileged recovery keys, or 2 of the other agent keys to agree. 21 | 22 | Let us further assume that the initial state of Alice's domain, as described above, 23 | is known as A.state[0], and that Bob's state is B.state[0]. 24 | 25 | These states may be represented by the following `authorization` section of each 26 | DID Doc: 27 | 28 | [TODO] 29 | 30 | ### Scenarios (each starts over at the initial conditions) 31 | 32 | 1. A.1 attempts to rotate its key by sending a `sync_state` message to A.2. 33 | __Expected outcome__: Should receive ACK, and A.2's state should be updated. 34 | Once A.1 receives the ACK, it should commit the pending change in its own 35 | key. Until it receives the ACK, it should NOT commit the pending change. 36 | 37 | 2. Like #1, except that message goes to B.1 and B.1's state is what should be 38 | updated. 39 | 40 | 3. A.1 attempts to send a message to B.1, using the `~relstate` decorator, claiming 41 | states with `hash(A.state[0])` and `hash(B.state[0])`. __Expected outcome__: 42 | B.1 accepts the message. 43 | 44 | 4. As #3, except that A.1 claims the current states are random hashes. __Expected 45 | outcome__: B.1 sends back a problem report, plus two `sync_state` messages (one 46 | with `who` = "me" and one with `who` = "you"). Each has an 47 | empty `deltas` array and `base_state` = the correct base state hash. 48 | 49 | 5. A.1 attempts to rotate the key for A.2 by sending a `sync_state` message to 50 | any other agent. __Expected outcome__: change is rejected with a __problem report__ 51 | that points out that A.1 is not authorized to rotate any key other than itself. 52 | 53 | -------------------------------------------------------------------------------- /features/0031-discover-features/catalog.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "query-too-intrusive": { 4 | "en": "Protocol query asked me to reveal too much information." 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /features/0031-discover-features/disclose.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/discover-features/1.0/disclose", 4 | "~thread": { "thid": "yWd8wfYzhmuXX3hmLNaV5bVbAjbWaU" }, 5 | "protocols": [ 6 | { 7 | "pid": "https://didcomm.org/tictactoe/1.0", 8 | "roles": ["player"] 9 | } 10 | ] 11 | } 12 | 13 | -------------------------------------------------------------------------------- /features/0031-discover-features/protocol-discovery~l10n.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "~l10n": { 4 | "locales": { "en": ["comment"] }, 5 | "catalogs": ["https://github.com/hyperledger/indy-hipe/blob/88352a55/text/agent-protocols/catalog.json"] 6 | } 7 | 8 | } -------------------------------------------------------------------------------- /features/0031-discover-features/query.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/discover-features/1.0/query", 4 | "@id": "yWd8wfYzhmuXX3hmLNaV5bVbAjbWaU", 5 | "query": "https://didcomm.org/tictactoe/1.*", 6 | "comment": "I'm wondering if we can play tic-tac-toe..." 7 | } 8 | 9 | -------------------------------------------------------------------------------- /features/0031-discover-features/simpler-response.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/discover-features/1.0/disclose", 4 | "~thread": { "thid": "yWd8wfYzhmuXX3hmLNaV5bVbAjbWaU" }, 5 | "protocols": [ 6 | {"pid": "https://didcomm.org/tictactoe/1.0"} 7 | ] 8 | } 9 | 10 | -------------------------------------------------------------------------------- /features/0031-discover-features/state-machines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0031-discover-features/state-machines.png -------------------------------------------------------------------------------- /features/0034-message-tracing/certified-mail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0034-message-tracing/certified-mail.jpg -------------------------------------------------------------------------------- /features/0034-message-tracing/msg-with-trace.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/route/1.0/forward", 4 | "@id": "98fd8d72-80f6-4419-abc2-c65ea39d0f38", 5 | "msg": "U2VlIHRoZSB3aXJlIG1lc3NhZ2VzIEhJUEUgZm9yIGRldGFpbHMgcGFja2luZyBhbmQgZW5jcnlwdGluZy4=", 6 | "~trace": "http://example.com/tracer" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /features/0034-message-tracing/msg-with-trace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0034-message-tracing/msg-with-trace.png -------------------------------------------------------------------------------- /features/0034-message-tracing/trace-report.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/trace/1.0/trace_report", 4 | "for_id": "98fd8d72-80f6-4419-abc2-c65ea39d0f38.1", 5 | "handler": "did:sov:1234abcd#3", 6 | "elapsed_milli": 27, 7 | "traced_type": "https://didcomm.org/route/1.0/forward", 8 | "report_time": "2018-05-27 18:23:16.123Z", 9 | "outcome": "OK (forwarded to did:sov:1234abcd#4)" 10 | } 11 | 12 | -------------------------------------------------------------------------------- /features/0034-message-tracing/trace-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0034-message-tracing/trace-report.png -------------------------------------------------------------------------------- /features/0034-message-tracing/trace-xyz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0034-message-tracing/trace-xyz.png -------------------------------------------------------------------------------- /features/0036-issue-credential/credential-issuance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0036-issue-credential/credential-issuance.png -------------------------------------------------------------------------------- /features/0037-present-proof/credential-presentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0037-present-proof/credential-presentation.png -------------------------------------------------------------------------------- /features/0042-lox/Keyring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0042-lox/Keyring.png -------------------------------------------------------------------------------- /features/0042-lox/LoxWalletProcess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0042-lox/LoxWalletProcess.png -------------------------------------------------------------------------------- /features/0042-lox/WalletBegin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0042-lox/WalletBegin.png -------------------------------------------------------------------------------- /features/0042-lox/keyring.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | par2 3 | User -> Process: Perform secure action 4 | else 5 | Process -> Keyring: Get secret 6 | end 7 | Keyring --> Process: Access denied - Pending authentication 8 | Keyring --> User: \nLocked - Authentication Request 9 | 10 | User -> Keyring: Authentication Response 11 | alt success 12 | Keyring --> Process: secret 13 | Process --> User: Action successful 14 | 15 | User -> Process: Perform secure action #2 16 | Process -> Keyring: Get another secret 17 | Keyring --> Process: another secret 18 | Process --> User: Action #2 successful 19 | else fail 20 | par2 21 | Keyring --> Process: Access Denied 22 | else 23 | Keyring --> User: Access Denied 24 | User -> Keyring: Authentication Response #2 25 | Keyring --> User: Access Denied 26 | User -> Keyring: Authentication Response #3 27 | Keyring --> User: Access Denied 28 | User -> Keyring: Authentication Response #4 29 | Keyring --> User: Lockout period. Please wait 30 | end 31 | 32 | @enduml 33 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/.gitignore: -------------------------------------------------------------------------------- 1 | Cargo.lock 2 | target/ 3 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "lox", 4 | "lox-cli" 5 | ] 6 | 7 | [profile.release] 8 | lto = true 9 | opt-level = "s" 10 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/lox-cli/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loxcli" 3 | version = "0.1.0" 4 | authors = ["Michael Lodder "] 5 | edition = "2018" 6 | 7 | [[bin]] 8 | bench = false 9 | path = "src/main.rs" 10 | name = "lox" 11 | 12 | [dependencies] 13 | clap = "2.33.0" 14 | colored = "1.8.0" 15 | liblox = { path = "../lox", version = "0.2.0", package = "lox" } 16 | zeroize = "0.9.3" 17 | rpassword = "3.0.2" 18 | atty = "0.2.13" 19 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/lox/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "lox" 3 | version = "0.2.0" 4 | authors = ["Michael Lodder "] 5 | edition = "2018" 6 | 7 | [lib] 8 | crate-type = ["staticlib", "rlib", "cdylib"] 9 | 10 | [dependencies] 11 | rand = "0.7.0" 12 | zeroize = "0.9.3" 13 | whoami = "0.5.3" 14 | 15 | [target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies] 16 | users = "0.9.1" 17 | 18 | [target.'cfg(target_os = "macos")'.dependencies] 19 | security-framework = "0.3.1" 20 | security-framework-sys = "0.3.1" 21 | core-foundation = "0.6.4" 22 | core-foundation-sys = "0.6.2" 23 | 24 | [target.'cfg(target_os = "linux")'.dependencies] 25 | secret-service = "1.0.0" 26 | 27 | [target.'cfg(target_os = "windows")'.dependencies] 28 | winapi = { version = "0.3.7", features = ["dpapi", "wincred", "winerror"] } 29 | byteorder = "1.3.2" 30 | 31 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/lox/src/keyring/mod.rs: -------------------------------------------------------------------------------- 1 | #[cfg(target_os = "linux")] 2 | pub mod linux; 3 | #[cfg(target_os = "macos")] 4 | pub mod macos; 5 | #[cfg(target_os = "windows")] 6 | pub mod windows; 7 | 8 | #[cfg(target_os = "macos")] 9 | pub(crate) use self::macos::MacOsKeyRing as OsKeyRing; 10 | 11 | #[cfg(target_os = "linux")] 12 | pub(crate) use self::linux::LinuxOsKeyRing as OsKeyRing; 13 | 14 | #[cfg(target_os = "windows")] 15 | pub(crate) use self::windows::WindowsOsKeyRing as OsKeyRing; 16 | 17 | use crate::base::Result; 18 | use crate::KeyRing; 19 | #[cfg(any( 20 | target_os = "linux", 21 | target_os = "macos" 22 | ))] 23 | use users::{get_effective_username, get_current_username}; 24 | 25 | pub fn get_os_keyring(service: &str) -> Result { 26 | OsKeyRing::new(service) 27 | } 28 | 29 | #[cfg(not(any( 30 | target_os = "linux", 31 | target_os = "macos", 32 | target_os = "windows" 33 | )))] 34 | compile_error!("no keyring implementation is available for this platform"); 35 | 36 | 37 | #[cfg(any( 38 | target_os = "linux", 39 | target_os = "macos" 40 | ))] 41 | fn get_username() -> String { 42 | fn get_current_user() -> String { 43 | match get_current_username() { 44 | Some(s) => match s.into_string() { 45 | Ok(r) => r, 46 | Err(_) => whoami::username() 47 | }, 48 | None => whoami::username() 49 | } 50 | } 51 | 52 | match get_effective_username() { 53 | Some(s) => { 54 | match s.into_string() { 55 | Ok(r) => r, 56 | Err(_) => get_current_user() 57 | } 58 | }, 59 | None => get_current_user() 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /features/0042-lox/reference_code/lox/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![deny( 2 | warnings, 3 | unused_import_braces, 4 | unused_qualifications, 5 | trivial_casts, 6 | trivial_numeric_casts 7 | )] 8 | 9 | #[cfg(target_os = "macos")] 10 | extern crate security_framework; 11 | #[cfg(target_os = "macos")] 12 | extern crate security_framework_sys; 13 | #[cfg(target_os = "macos")] 14 | extern crate core_foundation; 15 | #[cfg(target_os = "macos")] 16 | extern crate core_foundation_sys; 17 | #[cfg(target_os = "linux")] 18 | extern crate secret_service; 19 | #[cfg(target_os = "windows")] 20 | extern crate winapi; 21 | #[cfg(target_os = "windows")] 22 | extern crate byteorder; 23 | #[cfg(any(target_os = "macos", target_os="linux"))] 24 | extern crate users; 25 | 26 | #[cfg(any(target_os = "macos", target_os = "linux"))] 27 | use std::collections::HashMap; 28 | use std::collections::BTreeMap; 29 | use zeroize::Zeroize; 30 | 31 | pub mod base { 32 | pub type Result = std::result::Result; 33 | } 34 | 35 | pub trait KeyRing: Sized { 36 | fn new(service: &str) -> base::Result; 37 | 38 | fn get_secret(&mut self, id: &str) -> base::Result; 39 | 40 | fn set_secret(&mut self, id: &str, secret: &[u8]) -> base::Result<()>; 41 | 42 | fn delete_secret(&mut self, id: &str) -> base::Result<()>; 43 | 44 | fn peek_secret(id: &str) -> base::Result>; 45 | 46 | fn list_secrets() -> base::Result>>; 47 | } 48 | 49 | #[derive(Zeroize)] 50 | #[zeroize(drop)] 51 | pub struct KeyRingSecret(Vec); 52 | 53 | impl KeyRingSecret { 54 | pub fn as_slice(&self) -> &[u8] { 55 | self.0.as_slice() 56 | } 57 | 58 | pub fn to_vec(&self) -> Vec { 59 | self.0.to_vec() 60 | } 61 | } 62 | 63 | pub mod keyring; 64 | 65 | #[cfg(any(target_os = "macos", target_os = "linux"))] 66 | fn parse_peek_criteria(id: &str) -> HashMap { 67 | let mut result = HashMap::new(); 68 | if !id.is_empty() { 69 | for pair in id.split(",") { 70 | let s = pair.split("=").collect::>(); 71 | result.insert(s[0].to_string(), s[1].to_string()); 72 | } 73 | } 74 | result 75 | } 76 | 77 | #[cfg(test)] 78 | mod test { 79 | use super::*; 80 | 81 | #[test] 82 | fn parse_peek_criteria_test() { 83 | for pair in &[("", 0), ("kind=generic", 1), ("kind=internet,account=aws", 2), ("account=aws,service=lox", 2)] { 84 | let criteria = parse_peek_criteria(pair.0); 85 | assert_eq!(criteria.len(), pair.1); 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /features/0043-l10n/catalog-callout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/catalog-callout.png -------------------------------------------------------------------------------- /features/0043-l10n/catalog.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "cant-route-to-agent": { 4 | "en": "Unable to route to specified agent.", 5 | "es": "No se puede enrutar este mensaje al agente especificado." 6 | }, 7 | "remote-unsupported-encryption": { 8 | "en": "The remote party uses {algo} encryption that I do not support." 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /features/0043-l10n/catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/catalog.png -------------------------------------------------------------------------------- /features/0043-l10n/field-scope.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "did:example:12345...;spec/rendezvous/1.0/meeting_proposal", 3 | "proposed_location": "1010 Imaginary Street, Sydney, Nova Scotia, B2A 3L7", 4 | "note": "Let's have a picnic.", 5 | "note~l10n": { "locale": "en", "fr": "Faisons un pique-nique." } 6 | } 7 | -------------------------------------------------------------------------------- /features/0043-l10n/field-scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/field-scope.png -------------------------------------------------------------------------------- /features/0043-l10n/google-translate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/google-translate.png -------------------------------------------------------------------------------- /features/0043-l10n/localizable-in-message.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "did:example:12345...;spec/rendezvous/1.0/meeting_proposal", 3 | "~l10n": { "locales": {"en": ["note", "fallback_plan"] }}, 4 | "proposed_location": "1010 Imaginary Street, Sydney, Nova Scotia, B2A 3L7", 5 | "note": "Let's have a picnic.", 6 | "fallback_plan": "Call me on my cell phone." 7 | } 8 | -------------------------------------------------------------------------------- /features/0043-l10n/localizable-in-message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/localizable-in-message.png -------------------------------------------------------------------------------- /features/0043-l10n/localization-callout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/localization-callout.png -------------------------------------------------------------------------------- /features/0043-l10n/localization-section.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "~l10n": { 4 | "locales": {"en": ["note", "fallback_plan"]}, 5 | "catalogs": ["https://github.com/x/y/blob/dc525a27d3b75/text/myfamily/catalog.json"] 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /features/0043-l10n/localization-section.md: -------------------------------------------------------------------------------- 1 | ##### Localization 2 | 3 | By default, all instances of this message type carry [localization metadata]( 4 | https://github.com/hyperledger/indy-hipe/pull/64) in the form of an implicit 5 | `~l10n` decorator that looks like this: 6 | 7 | [![~l10n settings](localization-section.png)](myfamily~l10n.json) 8 | 9 | This `~l10n` JSON fragment is checked in next to the narrative content of 10 | this RFC as l10n.json. 11 | 12 | Individual messages can use the `~l10n` decorator to supplement or 13 | override these settings. -------------------------------------------------------------------------------- /features/0043-l10n/localization-section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/localization-section.png -------------------------------------------------------------------------------- /features/0043-l10n/localized-keys-record.json: -------------------------------------------------------------------------------- 1 | { 2 | "record_type": "christening, Germany, 1700s", 3 | "record_date": "1853-06-01", 4 | "content": { 5 | "Name": "Carl Rudolph Julius Krueger", 6 | "Geschlecht": "männlich", 7 | "Heiratsalter": 27, 8 | "Geburtstag": "ungefähr 1826", 9 | "Heiratsdatum": "29. April 1853", 10 | "Ort der Ehe": "Kalininingrad, OstPruessen, Deutschland" 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /features/0043-l10n/localized-keys-record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/localized-keys-record.png -------------------------------------------------------------------------------- /features/0043-l10n/localized-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/localized-keys.png -------------------------------------------------------------------------------- /features/0043-l10n/message-catalog-section.md: -------------------------------------------------------------------------------- 1 | ##### Message Catalog 2 | 3 | By default, all instances of this message type assume the following catalog 4 | in their `@l10n` data: 5 | 6 | [![catalog](catalog.png)](catalog.json) 7 | 8 | When referencing this catalog, please be sure you have the correct version. The 9 | official, immutable URL to this version of the catalog file is: 10 | 11 | https://github.com/x/y/blob/dc525a27d3b75/text/myfamily/catalog.json 12 | 13 | For more information, see the [Message Catalog section of the localization RFC]( 14 | ../../features/0043-l10n/README.md#message-codes-and-catalogs). -------------------------------------------------------------------------------- /features/0043-l10n/message-scope.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "did:example:12345...;spec/rendezvous/1.0/meeting_proposal", 3 | "~l10n": { "locales": {"en": ["note", "fallback_plan"]}}, 4 | "proposed_location": "1010 Imaginary Street, Sydney, Nova Scotia, B2A 3L7", 5 | "note": "Let's have a picnic.", 6 | "note~l10n": { "fr": "Faisons un pique-nique." }, 7 | "fallback_plan": "Call me on my cell phone.", 8 | "fallback_plan~l10n": { "fr": "S'il vous plaît appelez-moi sur mon téléphone portable." } 9 | } 10 | -------------------------------------------------------------------------------- /features/0043-l10n/message-scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/message-scope.png -------------------------------------------------------------------------------- /features/0043-l10n/no-way-to-tell.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "did:example:12345...;spec/rendezvous/1.0/meeting_proposal", 3 | "~l10n": { "locale": "en" }, 4 | "proposed_location": "1010 Imaginary Street, Sydney, Nova Scotia, B2A 3L7", 5 | "note": "Let's have a picnic.", 6 | "fallback_plan": "Call me on my cell phone." 7 | } 8 | -------------------------------------------------------------------------------- /features/0043-l10n/no-way-to-tell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/no-way-to-tell.png -------------------------------------------------------------------------------- /features/0043-l10n/sample1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "did:example:12345...;spec/rendezvous/1.0/meeting_proposal", 3 | "proposed_location": "1010 Imaginary Street, Sydney, Nova Scotia, B2A 3L7", 4 | "note": "Let's have a picnic." 5 | } 6 | -------------------------------------------------------------------------------- /features/0043-l10n/sample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/sample1.png -------------------------------------------------------------------------------- /features/0043-l10n/with-code.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "@type": "https://didcomm.org/notification/1.0/problem-report", 4 | "explain": "Unable to route to specified agent", 5 | "explain~l10n": { 6 | "code": "cant-route-to-agent", 7 | "es": "No se puede enrutar este mensaje al agente especificado." 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /features/0043-l10n/with-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0043-l10n/with-code.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dee-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dee-big.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dee-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dee-small.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dm-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dm-big.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dm-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dm-small.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dse-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dse-big.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/dse-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/dse-small.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/msg-in-envelope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/msg-in-envelope.png -------------------------------------------------------------------------------- /features/0044-didcomm-file-and-mime-types/small-msg-in-envelope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0044-didcomm-file-and-mime-types/small-msg-in-envelope.png -------------------------------------------------------------------------------- /features/0067-didcomm-diddoc-conventions/domains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0067-didcomm-diddoc-conventions/domains.jpg -------------------------------------------------------------------------------- /features/0075-payment-decorators/payment-request-api-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0075-payment-decorators/payment-request-api-flow.png -------------------------------------------------------------------------------- /features/0075-payment-decorators/payment-request-api-flow.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | autonumber 1 3 | hide footbox 4 | entity Payee 5 | control Payer_User_Agent 6 | actor Payer 7 | entity Payment_Method 8 | Payee --> Payer_User_Agent: Payment Request 9 | group internal to payer 10 | Payer_User_Agent -[#blue]-\ Payer: Render 11 | Payer -[#blue]-\ Payer_User_Agent: Configure 12 | Payer_User_Agent ->o Payer_User_Agent: Payment Response 13 | end 14 | Payer_User_Agent -> Payment_Method: Invoke 15 | @enduml -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/clm_examiner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/clm_examiner.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/conceptual_doc_transformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/conceptual_doc_transformation.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/ddn_concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/ddn_concept.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/digital_doc_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/digital_doc_flow.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/digital_identity_lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/digital_identity_lifecycle.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/examine_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/examine_flow.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/issue_cred_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/issue_cred_flow.png -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/src/diagrams.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/src/diagrams.key -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/src/digital_identity_lifecycle.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Credential Lifecycle Management 4 | 5 | actor PERSON as "Person" 6 | participant EXAMINER as "Examiner" 7 | participant IPSP as "Identity Proofing\n Service Provider" 8 | participant ISOR as "Issuer's\n System of Record" 9 | participant ISSUER as "Issuer" 10 | participant HOLDER as "Holder" 11 | participant VERIFIER as "Verifier" 12 | 13 | group In-Person Proofing Process 14 | PERSON->EXAMINER: Present physical or\n digital documents. 15 | EXAMINER->EXAMINER: Gather, inspect and\n validate documents. 16 | EXAMINER->ISOR: Store documents in\n System of Record (SOR). 17 | end 18 | 19 | group Remote Proofing Process 20 | PERSON->EXAMINER: Present identity evidence. 21 | EXAMINER->IPSP: Inspect and\n validate evidence. 22 | IPSP->EXAMINER: Provide digital assertions\n affirming validity of evidence\n and due-diligence performed. 23 | EXAMINER->ISOR: Store digital assertions in\n System of Record (SOR). 24 | end 25 | 26 | ISSUER->ISOR: Gather claims to\n publish credentials. 27 | ISSUER->HOLDER: Issue credentials based\n on attestations in SOR. 28 | VERIFIER->HOLDER: Challenge. 29 | HOLDER->VERIFIER: Prove. 30 | VERIFIER->VERIFIER: Verify. 31 | 32 | @enduml 33 | -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/src/examine_flow.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Evidence Exchange Protocol: Examiner Flow 4 | 5 | actor PERSON as "Alice" 6 | participant HOLDER as "Alice's Agent" 7 | participant EXAMINER as "Examiner@Issuer" 8 | participant ISOR as "Issuer's System of Record" 9 | participant IPSP as "Identity Proofing\n Service Provider" 10 | 11 | group Examiner Vetting Process (In-Person Proofing) 12 | autonumber 10 13 | PERSON->EXAMINER: Present paper/plastic document. 14 | EXAMINER->EXAMINER: Perform due diligence processing\n based on buisness and regulatory requirements. 15 | EXAMINER->ISOR: Scan document and store in System of Record (SOR). 16 | EXAMINER->ISOR: Write attestations pertaining to\n claims of confidence for each identity trait associated with a Holder. 17 | end 18 | 19 | group Examiner Vetting Process (Remote Proofing using digital documents) 20 | autonumber 10 21 | PERSON->EXAMINER: Present digital document. 22 | note right: This can be in the form of a document\n upload or via a remote url (i.e.: Dropbox) 23 | EXAMINER->ISOR: Integrity check document. Store in System of Record (SOR). 24 | EXAMINER->EXAMINER: Perform due diligence processing based\n on buisness and regulatory requirements. 25 | EXAMINER->ISOR: Write attestations pertaining to claims of\n confidence for each identity trait associated with a Holder. 26 | end 27 | 28 | group Examiner Vetting Process (Remote Proofing using 3rd Party service providers) 29 | autonumber 10 30 | PERSON->EXAMINER: Present identity evidence. 31 | note right: User may use a self-service mobile app to scan\n artifacts that will be used by a 3rd Party verification service. 32 | EXAMINER->IPSP: Inspect and validate evidence. 33 | IPSP->EXAMINER: Provide digital assertions\n affirming validity of evidence\n and due-diligence performed. 34 | EXAMINER->ISOR: Store digital assertions in System of Record (SOR). 35 | EXAMINER->EXAMINER: Perform due diligence processing based\n on buisness and regulatory requirements. 36 | EXAMINER->ISOR: Write attestations pertaining to claims of\n confidence for each identity trait associated with a Holder. 37 | end 38 | 39 | @enduml 40 | -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/src/issue_cred_flow.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Evidence Exchange Protocol: Issue Credential Flow 4 | 5 | actor PERSON as "Alice" 6 | participant HOLDER as "Alice's Agent" 7 | participant ISSUER as "Issuer's Agent" 8 | participant ISOR as "Issuer's System of Record" 9 | 10 | group Offer Credential Flow (Issuer Initiated via Wallet) 11 | autonumber 20 12 | ISSUER->HOLDER: Issuer offers Credential. 13 | PERSON->HOLDER: Accepts Credential Offer. 14 | HOLDER->ISSUER: Send offer acceptance. 15 | ISSUER->HOLDER: Issuer sends Credential; Credential is stored in Wallet Keystore. 16 | end 17 | 18 | group Evidence Request/Response Flow 19 | autonumber 30 20 | HOLDER->HOLDER: Build evidence_request message. 21 | HOLDER->ISSUER: Send evidence_request message. 22 | ISSUER->ISSUER: Process evidence_request message. 23 | ISSUER<->ISOR: Build evidence_response message. 24 | ISSUER->HOLDER: Send evidence_response message. 25 | HOLDER->HOLDER: Process evidence_response message; Store results. 26 | end 27 | 28 | @enduml 29 | -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/src/verify_cred_flow.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Evidence Exchange Protocol: Verify Credential FLow 4 | 5 | actor PERSON as "Alice" 6 | participant HOLDER as "Alice's Agent" 7 | participant VERIFIER as "Verifier's Agent" 8 | participant VSOR as "Verifier's System of Record" 9 | 10 | group Verify Credential Flow (via Wallet) 11 | autonumber 40 12 | VERIFIER->HOLDER: Send Proof Request. 13 | PERSON->HOLDER: Accepts Proof Request. 14 | PERSON->HOLDER: Generate Proof Response. 15 | HOLDER->VERIFIER: Send Proof Response. 16 | end 17 | 18 | group Evidence Access Request/Response Flow 19 | autonumber 50 20 | VERIFIER->VERIFIER: Build evidence_access_request message. 21 | VERIFIER->HOLDER: Send evidence_access_request message. 22 | HOLDER->HOLDER: Process evidence_access_request message. 23 | HOLDER<->HOLDER: Build evidence_access_response message. 24 | HOLDER->VERIFIER: Send evidence_access_response message. 25 | VERIFIER->VERIFIER: Process evidence_access_response message;\n Validate Issuer's Digital Signature over evidence. 26 | VERIFIER->VSOR: Store results. 27 | end 28 | 29 | @enduml 30 | -------------------------------------------------------------------------------- /features/0116-evidence-exchange/img/verify_cred_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0116-evidence-exchange/img/verify_cred_flow.png -------------------------------------------------------------------------------- /features/0124-did-resolution-protocol/binding-chained.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0124-did-resolution-protocol/binding-chained.png -------------------------------------------------------------------------------- /features/0160-connection-protocol/chrome_2019-01-29_07-59-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0160-connection-protocol/chrome_2019-01-29_07-59-38.png -------------------------------------------------------------------------------- /features/0160-connection-protocol/exampleqr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0160-connection-protocol/exampleqr.png -------------------------------------------------------------------------------- /features/0193-coin-flip/coin-flip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0193-coin-flip/coin-flip.png -------------------------------------------------------------------------------- /features/0234-signature-decorator/ed25519sha256_single.md: -------------------------------------------------------------------------------- 1 | # The `ed25519sha256_single` signature scheme 2 | 3 | ## Tutorial 4 | 5 | ### Application 6 | 7 | This scheme computes a single [ed25519](https://ed25519.cr.yp.to/) digital signature over the input message. Its output is a `~sig` object with the following contents: 8 | 9 | ```jsonc 10 | { 11 | "@type": "https://didcomm.org/signature/1.0/ed25519Sha512_single", 12 | "sig_data": "base64URL(64bit_integer_from_unix_epoch|msg)", 13 | "signature": "base64URL(ed25519 signature)", 14 | "signer": "base64URL(inlined_ed25519_signing_verkey)" 15 | } 16 | ``` 17 | 18 | * `@type` MUST be `https://didcomm.org/signature/1.0/ed25519Sha512_single` 19 | * `sig_data` MUST be the base64URL encoding of a 64-bit integer prepended to the message 20 | * `signature` MUST be the base64URL encoding of the resulting ed25519 digital signature over `sig_data` 21 | * `signer` MUST be the base64URL encoding of the corresponding ed25519 public key used to sign `sig_data` 22 | 23 | ### Verification 24 | 25 | The successful outcome of this scheme is the `plaintext`. 26 | 27 | 1. base64URL-decode `signer` 28 | 2. base64URL-decode `signature` 29 | 3. Verify the ed25519 signature over `sig_data` with the key provided in `signer` 30 | 1. Further processing is halted if verification fails and an "authentication failure" error is returned 31 | 4. base64URL-decode the `sig_data` 32 | 5. Strip out the first 8 bytes 33 | 6. Return the remaining bytes -------------------------------------------------------------------------------- /features/0309-didauthz/did-authz-chain-delegation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0309-didauthz/did-authz-chain-delegation.png -------------------------------------------------------------------------------- /features/0309-didauthz/did-authz-delegation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0309-didauthz/did-authz-delegation.png -------------------------------------------------------------------------------- /features/0309-didauthz/did-authz-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0309-didauthz/did-authz-flow.png -------------------------------------------------------------------------------- /features/0309-didauthz/did-authz-revocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0309-didauthz/did-authz-revocation.png -------------------------------------------------------------------------------- /features/0335-http-over-didcomm/client-server-didcomm-domains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0335-http-over-didcomm/client-server-didcomm-domains.png -------------------------------------------------------------------------------- /features/0335-http-over-didcomm/client-server-didcomm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0335-http-over-didcomm/client-server-didcomm.png -------------------------------------------------------------------------------- /features/0335-http-over-didcomm/client-server.drawio: -------------------------------------------------------------------------------- 1 | 7Vpbc5s4FP41nn1KByHA9qMv2aR7m0zd3WafdoiRsXYBEZBv/fUVIBkkQcxSfOm0Lwk6SAKd832fjg4ewFm4f0jceP078VAwMA1vP4DzgWmOhgb7mxkOhcEG48LgJ9grTKA0LPBnxI18nL/BHkqljpSQgOJYNi5JFKEllWxukpCd3G1FAvmpsesjzbBYuoFu/YQ9uubLso3S/oiwvxZPBga/E7qiMzeka9cju4oJ3g/gLCGEFlfhfoaCzHfCL8W4nxvuHl8sQRFtM+D5H/tl+Gf6+mF7/7JJNw+f/lihOz7L1g02fMGzAGcTmsYkjgO8dCkmEV8APQiv7NaYokXsLrP2jgV+AKdrGgasBdilm8ZFLFZ4j9jjp/q7igejhKJ9xcTf/QGRENHkwLqIu8KxHEhgxNu7Sli4aV2JiLC5HAj+cebSV+yCu6vedSMIp7EZjT4cfvkVT+YwSBG8G2teQR6DDm9GJGL/pgnZRF7mgrnBWiSha+KTyA1+IyTmzvoXUXrgwHc3lMiuRHtMn7Ph7wwD8vbfeXtki/Z8z+fPGwfRiNgqs6GADTWFQYw9GsrBeetQmeoJJZj5CiXVHqqxMbQp2SRL9Ab2TE5nN/ERPY3RzLtvAiVBAUPrViZuXdj50CeCc6BzgJlQBphpjeUpigXxUVWiKRMdkdk0UbFibaIchcf1tALmW37VOP1TOjCdgHl6+pKwK5/m0SssHt4K08TP+V/Y2QtUbt2CDqhhuroOOBfWgfHYkXQA2u1kIFMQS5YBaDmnZKCO8nXa0F0GYEsZGPYtA22j/tZbV0i2QAlDcR3JOKOuzx3rityp9aKjeVF4b0VySS395bxuiLhxl+Y0mbAOYBTvy5tZhucu5QGPKNgiyjKZarciMPP38xkJw4rYFY9tUDvmZSoHKaUJ+Q/NSECSkusrHASKyQ2wH7HmksUuo8w0ixl7pWDCb4TY87LHTOtQIYtHDziAprJDGToOjvlWFQjWuUR0eFERvTtq4VFFHUuoaoOMNuVDz2LuUlYdu4uqdlfQYUsFhZdJpGygoAuaF81/hg3SfHtnGtu5sVwGaF6p0rBk3H1p7Y+VQCKk2TatkblnnuJed5qBtpkKsG4qVQF6riIO+dengJrOO+Z1GWBekwGGxIBhSwYou8/wjAyw2jKg963m6xhgNW4J12eAmpRfmwG6WuiUiLxJVlvNMtrATVO8VPDcFZqdiNAdz20F3WyJ5krI7JqQCdtX5leWmr2rWXnbQhVUK15Qmai/RK0WaTor/z/SvpHcoW2ts61uXgZp6jkRjMfv1GS+LdgsMDo515nxZveobHc15TTQvZwm6vTyoRScwHGvdTjxde3bEkMwAgqsOuJTK/8blxVDcWjusRZWlLEeP358+u4qXNo3mJoKVx0qz1bgAvqX1h/h7V44UUtMVw+v+SO8/YUXWrYU3pF+JDpXdF9X4XyxA/5L/P5zBGd0OPtrVvMrCc33sg9OHCM9N13nfUF9OBr8VePVRheOlcxtqBPkuONVfQjUba83J9Yx5MadqJ60bsCLTbW87LujMSehi/XK9m3oghSvHoIDbGUPqAkOADXBMc8Vm6Yq0/cXG0tNv84YG9Ysf0RXZOPlLxHh/Rc= -------------------------------------------------------------------------------- /features/0335-http-over-didcomm/client-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0335-http-over-didcomm/client-server.png -------------------------------------------------------------------------------- /features/0428-prepare-issue-rich-credential/rich_credential_prereqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0428-prepare-issue-rich-credential/rich_credential_prereqs.png -------------------------------------------------------------------------------- /features/0428-prepare-issue-rich-credential/rich_credential_prereqs.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Rich Schema Credential Prerequisites 4 | participant VDR as L 5 | actor Issuer as I 6 | actor Holder as H 7 | 8 | I -> L: check for existing cred def 9 | 10 | alt if no cred def 11 | I->L: check for existing mapping 12 | 13 | alt if no mapping 14 | I->L: check for existing schemas 15 | 16 | alt if no schemas 17 | I->L: anchor context(s) 18 | I->L: anchor schema(s) 19 | end 20 | 21 | I->L: anchor mapping 22 | 23 | end 24 | 25 | I->L: anchor cred def 26 | 27 | end 28 | 29 | I->H: issue credential 30 | 31 | @enduml -------------------------------------------------------------------------------- /features/0429-prepare-req-rich-pres/rich_presentation_prereqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0429-prepare-req-rich-pres/rich_presentation_prereqs.png -------------------------------------------------------------------------------- /features/0429-prepare-req-rich-pres/rich_presentation_prereqs.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Rich Schema Presentation Prerequisites 4 | participant VDR as L 5 | actor Verifier as V 6 | actor Holder as H 7 | 8 | V -> V: check for local pres def 9 | 10 | alt if no local pres def 11 | V -> L: check for existing pres def 12 | 13 | else if no pres def 14 | V->V: create and store pres def 15 | 16 | opt 17 | V->L: anchor cred def 18 | end 19 | end 20 | 21 | V->H: request presentation\nusing pres def 22 | 23 | @enduml -------------------------------------------------------------------------------- /features/0434-outofband/ExampleQRCode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0434-outofband/ExampleQRCode.png -------------------------------------------------------------------------------- /features/0434-outofband/state-machine-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0434-outofband/state-machine-receiver.png -------------------------------------------------------------------------------- /features/0434-outofband/state-machine-sender.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0434-outofband/state-machine-sender.png -------------------------------------------------------------------------------- /features/0453-issue-credential-v2/credential-issuance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0453-issue-credential-v2/credential-issuance.png -------------------------------------------------------------------------------- /features/0454-present-proof-v2/present-proof-states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0454-present-proof-v2/present-proof-states.png -------------------------------------------------------------------------------- /features/0454-present-proof-v2/presentation-choreography.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0454-present-proof-v2/presentation-choreography.png -------------------------------------------------------------------------------- /features/0482-coprotocol-protocol/state-machines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0482-coprotocol-protocol/state-machines.png -------------------------------------------------------------------------------- /features/0509-action-menu/state-machines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0509-action-menu/state-machines.png -------------------------------------------------------------------------------- /features/0557-discover-features-v2/requester.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0557-discover-features-v2/requester.png -------------------------------------------------------------------------------- /features/0557-discover-features-v2/requester.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | scale 350 width 3 | hide empty description 4 | state mode <> 5 | state finish <> 6 | [*] --> mode: normal or short-circuit? 7 | mode --> awaiting_disclosures: normal: send\nqueries 8 | mode --> finish: short-circuit:\nreceive\ndisclosures 9 | awaiting_disclosures --> finish: receive disclosures 10 | finish --> [*]: process\ndisclosures 11 | @enduml -------------------------------------------------------------------------------- /features/0557-discover-features-v2/responder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0557-discover-features-v2/responder.png -------------------------------------------------------------------------------- /features/0557-discover-features-v2/responder.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | scale 350 width 3 | hide empty description 4 | [*] --> preparing_disclosures: receive queries\nor\nshort-circuit 5 | preparing_disclosures --> [*]: send\ndisclosures 6 | @enduml -------------------------------------------------------------------------------- /features/0748-n-wise-did-exchange/add_participant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0748-n-wise-did-exchange/add_participant.png -------------------------------------------------------------------------------- /features/0755-oca-for-aries/OCA4Aries.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/OCA4Aries.xlsx -------------------------------------------------------------------------------- /features/0755-oca-for-aries/assets/Sample-use-of-Branding-Overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/assets/Sample-use-of-Branding-Overlay.png -------------------------------------------------------------------------------- /features/0755-oca-for-aries/assets/bifold-oca-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/assets/bifold-oca-example.jpg -------------------------------------------------------------------------------- /features/0755-oca-for-aries/best-bc-background-image-slice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/best-bc-background-image-slice.png -------------------------------------------------------------------------------- /features/0755-oca-for-aries/best-bc-background-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/best-bc-background-image.jpg -------------------------------------------------------------------------------- /features/0755-oca-for-aries/best-bc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0755-oca-for-aries/best-bc-logo.png -------------------------------------------------------------------------------- /features/0755-oca-for-aries/branding.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "logo": "https://raw.githubusercontent.com/swcurran/aries-rfcs/oca4aries/features/0755-oca-for-aries/best-bc-logo.png", 4 | "background_image_slice": "https://raw.githubusercontent.com/swcurran/aries-rfcs/oca4aries/features/best-bc-background-image-slice.png", 5 | "background_image": "https://raw.githubusercontent.com/swcurran/aries-rfcs/oca4aries/features/best-bc-background-image.png", 6 | "capture_base": "EKpcSmz06sJs0b4g24e0Jc7OerbJrGN2iMVEnwLYKBS8", 7 | "description": "", 8 | "digest": "EBQbQEV6qSEGDzGLj1CqT4e6yzESjPimF-Swmyltw5jU", 9 | "expiry_date_attribute": "expiry_date_dateint", 10 | "name": "", 11 | "primary_attribute": "family_name", 12 | "secondary_attribute": "given_names", 13 | "type": "aries/overlays/branding/1.0" 14 | } 15 | ] -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/image4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/image4_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image 4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image 4_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image10.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image10_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image10_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image11.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image11_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image11_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image12.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image12_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image12_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image13.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image13_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image14.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image14_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image14_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image15.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image15_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image15_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image16.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image16_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image16_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image17.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image17_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image17_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image18.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image18_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image18_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image19.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image19_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image19_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image1_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image2.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image20.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image20_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image20_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image2_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image3.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image3_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image4.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image4_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image5.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image5_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image5_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image6.jpg -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image6_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image6_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image7.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image7_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image7_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image8.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image8_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image8_1.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image9.png -------------------------------------------------------------------------------- /features/0756-oca-for-aries-style-guide/images/image9_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0756-oca-for-aries-style-guide/images/image9_1.png -------------------------------------------------------------------------------- /features/0780-data-urls-images/photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/features/0780-data-urls-images/photo.png -------------------------------------------------------------------------------- /github-issues.md: -------------------------------------------------------------------------------- 1 | # ![Aries RFCs](collateral/aries-rfcs-logo.png) 2 | 3 | ## Github Issues 4 | 5 | RFCs that are not on the brink of changing status are discussed through Github Issues. 6 | We generally use Issues to discuss changes that are controversial, and PRs to propose 7 | changes that are vetted. This keeps the PR backlog small. 8 | 9 | Any community member can open an issue; specify the RFC number in the issue title so 10 | the relationship is clear. For example, to open an issue on RFC 0025, an appropriate 11 | title for the issue might be: 12 | 13 | RFC 0025: Need better diagram in Reference section 14 | 15 | When the community feels that it's reasonable to suggest a formal status change for 16 | an RFC, best efforts are made to resolve all open issues against it. Then a PR is 17 | raised against the RFC's main README.md, where the status field in the header is 18 | updated. Discussion about the status change typically takes place in the comment 19 | stream for the PR, with issues being reserved for non-status-change topics. 20 | 21 | 22 | -------------------------------------------------------------------------------- /lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentralized-identity/aries-rfcs/56dad506841420f2407af858b9c4ea69013ada19/lifecycle.png -------------------------------------------------------------------------------- /mkdocs-requirements.txt: -------------------------------------------------------------------------------- 1 | 2 | mkdocs-material==9.5.49 3 | mike==2.1.3 4 | -------------------------------------------------------------------------------- /tags.md: -------------------------------------------------------------------------------- 1 | # Tags on RFCs 2 | 3 | We categorize RFCs with tags to enrich searches. The meaning of tags is given below. 4 | 5 | ### `protocol` 6 | Defines one or more [protocols](concepts/0003-protocols/README.md) that explain how messages are passed to accomplish a stateful interaction. 7 | 8 | ### `decorator` 9 | Defines one or more [decorators](concepts/0011-decorators/README.md) that act as mixins to [DIDComm](concepts/0005-didcomm/README.md) messages. Decorators can be added to many different message types without explicitly declaring them in message schemas. 10 | 11 | ### `feature` 12 | Defines a specific, concrete feature that [agents](concepts/0004-agents/README.md) might support. 13 | 14 | ### `concept` 15 | Defines a general aspect of the Aries mental model, or a pattern that manifests in many different features. 16 | 17 | ### `community-update` 18 | An RFC that tracks a community-coordinated update, as described in [RFC 0345](concepts/0345-community-coordinated-update/README.md). Such updates 19 | enable independently deployed, interoperable agents to remain interoperable 20 | throughout the transition. 21 | 22 | ### `credentials` 23 | Relates to [verifiable credentials](https://www.w3.org/TR/vc-data-model/). 24 | 25 | ### `rich-schemas` 26 | Relates to next-generation schemas, such as those used by [https://schema.org](https://schema.org), as used in verifiable credentials. 27 | 28 | ### `test-anomaly` 29 | Violates some aspect of our [policy on writing tests for protocols before allowing their status to progress beyond DEMONSTRATED](/README.md#accepted). RFCs should only carry this tag temporarily, to grandfather something where test improvements are happening in the background. When this tag is applied to an RFC, unit tests run by our CI/CD pipeline will emit a warning rather than an error about missing tests, IFF each implementation that lacks tests formats its notes about test results like this: 30 | 31 | ```markdown 32 | name of impl | [MISSING test results](/tags.md#test-anomaly) 33 | ``` --------------------------------------------------------------------------------