diff --git a/main/0000-template-protocol/index.html b/main/0000-template-protocol/index.html index 7c5a915a..182619b7 100644 --- a/main/0000-template-protocol/index.html +++ b/main/0000-template-protocol/index.html @@ -326,7 +326,7 @@
Protocol names are often either lower_snake_case or kebob-case. The non-version components of the protocol named are matched exactly.
-URI: https://didcomm.org/lets_do_lunch/
URI: https://didcomm.org/lets_do_lunch/<version>/<messageType>
Message types and protocols are identified with special URIs that match certain conventions. See Message Type and Protocol Identifier URIs for more details.
The version of a protocol is declared carefully. See Semver Rules for Protocols for details.
Many protocols have constraints that help parties build trust. diff --git a/main/0000-template/index.html b/main/0000-template/index.html index 4617c30d..e606fc3d 100644 --- a/main/0000-template/index.html +++ b/main/0000-template/index.html @@ -326,7 +326,7 @@
concept
)concept
)feature
protocol
)feature
protocol
)feature
community-update
test-anomaly
)concept
)feature
)feature
)feature
protocol
)feature
protocol
)feature
community-update
)feature
protocol
)concept
)feature
protocol
)feature
decorator
)feature
decorator
)feature
protocol
)concept
)feature
protocol
credentials
test-anomaly
)concept
)In the context of decentralized identity, protocols manifest at many different levels of the stack: at the lowest levels of networking, in cryptographic algorithms like Diffie Hellman, in the management of DIDs, in the conventions of DIDComm, and in higher-level interactions that solve problems for people with only minimal interest in the technology they're using. However, this RFC focuses on the last of these layers, where use cases and personas are transformed into ../../features with obvious social value like:
To define a protocol, write an RFC. Specific instructions for protocol RFCs, and a discussion about the theory behind detailed -protocol concepts, are given in the instructions for protocol RFCs +protocol ../../concepts, are given in the instructions for protocol RFCs and in the protocol RFC template.
The tictactoe protocol is attached to this RFC as an example.
@@ -5305,7 +5305,7 @@problem-report
message with code version-with-degraded-features
.problem-report
message with code version-with-degraded-../../features
.problem-report
message may use the discover ../../features protocol
to resolve the mismatch.
problem-report
that the message is unsupported. The code
field
@@ -5356,13 +5356,13 @@ In this case, Bob and Carol could be analyzed as parties to the protocol, as well as controllers. But in other -cases, the concepts are distinct. For example, in a protocol to issue credentials, the issuing institution +cases, the ../../concepts are distinct. For example, in a protocol to issue credentials, the issuing institution might use an AI and/or business automation as a controller.
A protocol RFC conforms to general RFC patterns, but includes some specific substructure.
diff --git a/main/aip2/0003-protocols/roles-participants-etc/index.html b/main/aip2/0003-protocols/roles-participants-etc/index.html index e9c12095..9dae9431 100644 --- a/main/aip2/0003-protocols/roles-participants-etc/index.html +++ b/main/aip2/0003-protocols/roles-participants-etc/index.html @@ -320,7 +320,7 @@Provide a high-level introduction to the concepts of agents in +
Provide a high-level introduction to the ../../concepts of agents in the self-sovereign identity ecosystem.
Managing an identity is complex. We need tools to help us.
@@ -4589,7 +4589,7 @@Because agents speak so many different ways, and because many of them @@ -4854,7 +4854,7 @@
NOTE: The version of DIDComm collectively defined in Aries RFCs is known by the label "DIDComm V1." A newer version of DIDComm ("DIDComm V2") is now being incubated at DIF. Many ../../concepts are the same between the two versions, but there are some differences in the details. For information about detecting V1 versus V2, see Detecting DIDComm Versions.
The DID communication between agents and agent-like things is a rich subject with a lot of tribal @@ -4583,13 +4583,13 @@
Agent-like things have to interact with one another to get work done. How they talk in general is DIDComm, the subject of this RFC. The specific interactions enabled by DIDComm--connecting and maintaining relationships, issuing credentials, -providing proof, etc.--are called protocols; they are described elsewhere.
+providing proof, etc.--are called protocols; they are described elsewhere.A typical DIDComm interaction works like this:
@@ -4731,7 +4731,7 @@ImplementationsAries Framework - Go -
For building agents, hubs and other DIDComm features in GoLang. +For building agents, hubs and other DIDComm ../../features in GoLang.
See references to similar features in programming languages like Java, C#, and Python, +
See references to similar ../../features in programming languages like Java, C#, and Python, mentiond above.
See also this series of blog posts about semantic gaps and the need to manage intent in a declarative style: [ Lacunas Everywhere, diff --git a/main/aip2/0015-acks/index.html b/main/aip2/0015-acks/index.html index e2c9b4b1..b159eb76 100644 --- a/main/aip2/0015-acks/index.html +++ b/main/aip2/0015-acks/index.html @@ -326,7 +326,7 @@
Fail
from the RFC.
Mar 25, 2020: In the ~thread decorator section of the sample in the Explicit ACKs section, 'myindex' was changed to 'sender_order' and 'lrecs' to 'received_orders'. This is in accordance with the field names as defined in RFC 0008.
+Mar 25, 2020: In the ~thread decorator section of the sample in the Explicit ACKs section, 'myindex' was changed to 'sender_order' and 'lrecs' to 'received_orders'. This is in accordance with the field names as defined in RFC 0008.
A decorator, ~please_ack
, allows one agent to request an ad hoc ACK from
another agent. This is described in the 0317-please-ack RFC.
Multipart MIME (see RFCs 822, diff --git a/main/aip2/0019-encryption-envelope/index.html b/main/aip2/0019-encryption-envelope/index.html index 87df7468..2517a60a 100644 --- a/main/aip2/0019-encryption-envelope/index.html +++ b/main/aip2/0019-encryption-envelope/index.html @@ -326,7 +326,7 @@
The exchange between the requester and the responder has been completed. This relationship has no trust associated with it. The next step should be to increase the trust to a sufficient level for the purpose of the relationship, such as through an exchange of proofs.
When Peer DIDs are used in an exchange, it is likely that both the requester and responder will want to perform some relationship maintenance such as key rotations. Future RFC updates will add these maintenance features.
+When Peer DIDs are used in an exchange, it is likely that both the requester and responder will want to perform some relationship maintenance such as key rotations. Future RFC updates will add these maintenance ../../features.
N/A at this time
diff --git a/main/aip2/0025-didcomm-transports/index.html b/main/aip2/0025-didcomm-transports/index.html index 2eb51b27..b74fdbb3 100644 --- a/main/aip2/0025-didcomm-transports/index.html +++ b/main/aip2/0025-didcomm-transports/index.html @@ -326,7 +326,7 @@This RFC Details how different transports are to be used for Agent Messaging.
Agent Messaging is designed to be transport independent, including message encryption and agent message format. Each transport does have unique features, and we need to standardize how the transport features are (or are not) applied.
+Agent Messaging is designed to be transport independent, including message encryption and agent message format. Each transport does have unique ../../features, and we need to standardize how the transport ../../features are (or are not) applied.
Standardized transport methods are detailed here.
XMPP is implemented in the Openfire Server open source project. Integration with DID Communication agents is work-in-progress.
diff --git a/main/aip2/0035-report-problem/index.html b/main/aip2/0035-report-problem/index.html index 3b71e357..5014d3e1 100644 --- a/main/aip2/0035-report-problem/index.html +++ b/main/aip2/0035-report-problem/index.html @@ -326,7 +326,7 @@Let's define mediators and relays by exploring how they manifest in a series of @@ -4696,7 +4696,7 @@
This scenario highlights an internal mediator. Internal and external mediators -introduce similar features and similar constraints; the relevant difference is that +introduce similar ../../features and similar constraints; the relevant difference is that internal mediators live within the sovereign domain of the recipient, and may thus be worthy of greater trust.
JSON-LD describes a mechanism -for this. It has approximately the same features as the one described in +for this. It has approximately the same ../../features as the one described in Aries RFC 0043, with a few exceptions:
This is the "trust ping protocol", not just the "ping protocol." -The "trust" in its name comes from several features that the interaction +The "trust" in its name comes from several ../../features that the interaction gains by virtue of its use of standard agent-to-agent conventions:
Specify the external interfaces of identity wallets in the Indy ecosystem, as well -as some background concepts, theory, tradeoffs, and internal implementation guidelines.
+as some background ../../concepts, theory, tradeoffs, and internal implementation guidelines.Wallets are a familiar component metaphor that SSI has adopted from the world of cryptocurrencies. The translation isn't perfect, though; crypto wallets have only a -subset of the features that an identity wallet needs. This causes problems, as +subset of the ../../features that an identity wallet needs. This causes problems, as coders may approach wallets in Indy with assumptions that are more narrow than our actual design target.
Since wallets are a major vector for hacking and cybersecurity issues, casual or @@ -4916,7 +4916,7 @@
The cryptocurrency community has popularized the term "wallet"--and because identity wallets share with crypto wallets both high-tech crypto and a need -to store secrets, it is tempting to equate these two concepts. However, an +to store secrets, it is tempting to equate these two ../../concepts. However, an identity wallet can hold more than just cryptocurrency keys, just as a physical wallet can hold more than paper currency. Also, identity wallets may need to manage hundreds of millions of relationships (in the case of large organizations), @@ -4995,12 +4995,12 @@
Underneath, this common wallet code in libindy is supplemented with pluggable storage-- -a technology that provides persistence and query features. This pluggable storage could +a technology that provides persistence and query ../../features. This pluggable storage could be a file system, an object store, an RDBMS, a NoSQL DB, a Graph DB, a key~value store, or almost anything similar. The pluggable storage is registered with the wallet layer by providing a series of C-callable functions (callbacks). The @@ -5116,7 +5116,7 @@
The BasicMessage protocol describes a stateless, easy to support user message protocol. It has a single message type used to communicate.
It is a useful feature to be able to communicate human written messages. BasicMessage is the most basic form of this written message communication, explicitly excluding advanced features to make implementation easier.
+It is a useful feature to be able to communicate human written messages. BasicMessage is the most basic form of this written message communication, explicitly excluding advanced ../../features to make implementation easier.
There are two roles in this protocol: sender and receiver. It is anticipated that both roles are supported by agents that provide an interface for humans, but it is possible for an agent to only act as a sender (do not process received messages) or a receiver (will never send messages).
There are not really states in this protocol, as sending a message leaves both parties in the same state they were before.
There are many useful features of user messaging systems that we will not be adding to this protocol. We anticipate the development of more advanced and full-featured message protocols to fill these needs. Features that are considered out of scope for this protocol include:
+There are many useful ../../features of user messaging systems that we will not be adding to this protocol. We anticipate the development of more advanced and full-featured message protocols to fill these needs. Features that are considered out of scope for this protocol include:
OUTCOME
is specified, the holder
should send an ack when the holder's agent has successfully notified the holder of the revocation.
+~please_ack
(optional) -- as described by the Please ACK Decorator RFC. If OUTCOME
is specified, the holder
should send an ack when the holder's agent has successfully notified the holder of the revocation.
thread_id
(required) -- the thread ID of the issue-credential-v2 protocol which was used to issue one or more credentials that have been revoked by the issuer. If multiple credentials were issued, each credential has a different credential format but contains the same claims as described here; therefore, this message notifies the holder that all of these credentials have been revoked.
thread_id
(required) -- the thread ID of the issue-credential-v2 protocol which was used to issue one or more credentials that have been revoked by the issuer. If multiple credentials were issued, each credential has a different credential format but contains the same claims as described here; therefore, this message notifies the holder that all of these credentials have been revoked.
comment
(optional) -- a field that provides some human readable information about the revocation notification. This is typically the reason for the revocation as deemed appropriate by the issuer.
If we later added support for more general event subscription and notification message flows, this would be redundant.
diff --git a/main/aip2/0211-route-coordination/index.html b/main/aip2/0211-route-coordination/index.html index 1ec7c6cd..5e39173d 100644 --- a/main/aip2/0211-route-coordination/index.html +++ b/main/aip2/0211-route-coordination/index.html @@ -326,7 +326,7 @@did:key
DIDDoc, the existence of the keyAgreement
entry implies that the key can be used in a Diffie-Hellman exchange, without the developer guessing, or using the key incorrectly.
Note that simply knowing the key type is not necessarily sufficient to be able to use the key. The cryptography supporting the processing data using the key must also be available in the agent. However, the multicodec and did:key capabilities will simplify adding support for new key types in the future.
An example of the use of the replacement of a verkey with did:key
can be found in the ~service decorator RFC. Notably in the example at the beginning of the tutorial section, the verkeys in the recipientKeys
and routingKeys
items would be changed from native keys to use did:key
as follows:
An example of the use of the replacement of a verkey with did:key
can be found in the ~service decorator RFC. Notably in the example at the beginning of the tutorial section, the verkeys in the recipientKeys
and routingKeys
items would be changed from native keys to use did:key
as follows:
{
"@type": "somemessagetype",
"~service": {
@@ -4627,17 +4627,17 @@ Tutorialdid:key
specification. Further, the did:key
resolver generates, in the case of an ed25519 public signing key, a key that can be used as part of a Diffie-Hellman exchange appropriate for encryption in the keyAgreement
section of the DIDDoc. Presumably, as the did:key
method supports other key types, similar DIDDoc templates will become part of the specification. Key types that don't support a signing/key exchange transformation would not have a keyAgreement
entry in the resolved DIDDoc.
The following currently implemented RFCs would be affected by acceptance of this RFC. In these RFCs, the JSON items that currently contain naked public keys (mostly the items recipientKeys
and routingKeys
) would be changed to use did:key
references where applicable. Note that in these items public DIDs could also be used if applicable for a given use case.
Service entries in did:peer
DIDDocs (such as in RFCs
-0094-cross-domain-messaging
+0094-cross-domain-messaging
and
-0067-didcomm-diddoc-conventions)
+0067-didcomm-diddoc-conventions)
should NOT use a did:key
public key representation. Instead, service
entries in the DIDDoc should reference keys defined internally in the DIDDoc
where appropriate.
invitation
messages from the DID Exchange protocol (and perhaps Connection), and replaces the combined present_proof/1.0/request
combined with the ~service
decorator to define an ephemeral (connection-less) challenge.https://didcomm.org/out-of-band/%VER
services
ItemThe sender MUST put the array into their order of preference, and, as such, the receiver SHOULD prefer the entries in order.The attributes in the inline form parallel the attributes of a DID Document for increased meaning. The recipientKeys
and routingKeys
within the inline block decorator MUST be did:key
references.
As defined in the DIDComm Cross Domain Messaging RFC, if routingKeys
is present and non-empty, additional forwarding wrapping are necessary in the response message.
As defined in the DIDComm Cross Domain Messaging RFC, if routingKeys
is present and non-empty, additional forwarding wrapping are necessary in the response message.
When considering routing and options for out-of-band messages, keep in mind that the more detail in the message, the longer the URL will be and (if used) the more dense (and harder to scan) the QR code will be.
The service endpoint used to transmit the response is either present in the out-of-band message or available in the DID Document of a presented DID. If the endpoint is itself a DID, the serviceEndpoint
in the DIDDoc of the resolved DID MUST be a URI, and the recipientKeys
MUST contain a single key. That key is appended to the end of the list of routingKeys
for processing. For more information about message forwarding and routing, see RFC 0094 Cross Domain Messaging.
The service endpoint used to transmit the response is either present in the out-of-band message or available in the DID Document of a presented DID. If the endpoint is itself a DID, the serviceEndpoint
in the DIDDoc of the resolved DID MUST be a URI, and the recipientKeys
MUST contain a single key. That key is appended to the end of the list of routingKeys
for processing. For more information about message forwarding and routing, see RFC 0094 Cross Domain Messaging.
The problem_report
message MAY be adopted by the out-of-band protocol if the agent wants to respond with problem reports to invalid messages, such as attempting to reuse a single-use invitation.
See the problem-report protocol for details on the items in the example.
+See the problem-report protocol for details on the items in the example.
In an out-of-band message the sender gives information to the receiver about the kind of DIDComm protocol response messages it can handle and how to deliver the response. The receiver uses that information to determine what DIDComm protocol/message to use in responding to the sender, and (from the service item or an existing connection) how to deliver the response to the sender.
The handling of the response is specified by the protocol used.
To Do: Make sure that the following remains in the DID Exchange/Connections RFCs
-Any Published DID that expresses support for DIDComm by defining a
+service
that follows the DIDComm conventions serves as an implicit invitation. If an invitee wishes to connect to any Published DID, they need not wait for an out-of-band invitation message. Rather, they can designate their own label and initiate the appropriate protocol (e.g. 0160-Connections or 0023-DID-Exchange) for establishing a connection.Any Published DID that expresses support for DIDComm by defining a
service
that follows the DIDComm conventions serves as an implicit invitation. If an invitee wishes to connect to any Published DID, they need not wait for an out-of-band invitation message. Rather, they can designate their own label and initiate the appropriate protocol (e.g. 0160-Connections or 0023-DID-Exchange) for establishing a connection.
Using a standard out-of-band message encoding allows for easier interoperability between multiple projects and software platforms. Using a URL for that standard encoding provides a built in fallback flow for users who are unable to automatically process the message. Those new users will load the URL in a browser as a default behavior, and may be presented with instructions on how to install software capable of processing the message. Already onboarded users will be able to process the message without loading in a browser via mobile app URL capture, or via capability detection after being loaded in a browser.
@@ -5401,7 +5401,7 @@invitation
method.invitation
method.~service
decorator in combination with a request/response-type protocol message (such as present-proof/request) has previously used in place of the out-of-band request
message.Version 2.0 of the protocol is introduced because of a breaking changes in the propose-credential message, replacing the (indy-specific) filtration criteria with a generalized filter attachment to align with the rest of the messages in the protocol. The previous version is 1.1/propose-credential. Version 2.0 also uses <angle brackets> explicitly to mark all values that may vary between instances, such as identifiers and comments.
diff --git a/main/aip2/0454-present-proof-v2/index.html b/main/aip2/0454-present-proof-v2/index.html index 1843785f..0977ca1f 100644 --- a/main/aip2/0454-present-proof-v2/index.html +++ b/main/aip2/0454-present-proof-v2/index.html @@ -326,7 +326,7 @@Level of support for Presentation-Exchange features:
+Level of support for Presentation-Exchange ../../features: