-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add extensibility to Credential Response #386
Comments
I'd say Option 2 is the cleanest with the highest confidence that people will not accidentally mismatch credentials and other metadata - but it is a breaking change. I would expect that it will be a somewhat common case that some additional data associated with a credential needs to be passed to the wallet. Some Credential Formats might be doing that inside the format (e.g., unsigned header), but Option 2 looks like the cleanest way to provide this for every kind of format. My vote would be to introduce this as a breaking change with 1.0 and in the same change also mandate that we always return an array (and remove the "credential" return parameter in favor of "credentials") since we are already introducing a breaking change. That would simplify the spec and prevent implementation mistakes. There is also the open question of |
What other use cases (except from key derivation) might appear? If key derivation-related information is public, it might be encoded with the signature (in the protected or unprotected header). Option 2 enables the most consistent processing of responses. Here I'd like to raise an additional question: If pagination is something that might be considered in the future, option 2 is the most appropriate way to go. (e.g., if a wallet starts fetching the credentials and the connection is interrupted or the connectivity is poor, there should be a way to resume the operation). |
+1 for Option 2 |
👍 for Option 2, for me but taking into account the points raised by @c2bo comment.
|
The Credential Request is only for one Credential Dataset, therefore I assume there is only one |
Yes, Credential Response would contain That would make things quite a bit easier IMHO. |
I guess you are right. Sorry for creating such a confusion. |
What about Currently, With option 2 and following the proposal to take the opportunity and remove For instance something like {
"credentials": [
{
"credential" : "LUpixVCWJk0eOt4CXQe1NXK....WZwmhmn9OQp6YxX0a2L",
"notification_id" : "notId1",
"keyhandle" : "..." ,
"some-other-metadata" : ".."
},
{
"credential" : "LUpixVCWJk0eOt4CXQe1NXK....WZwmhmn9OQp6YxX0a2L",
"notification_id" : "notId2",
"keyhandle" : "..." ,
"some-other-metadata" : ".."
}
]
} PS I assume that the granularity of notification_id for each credential is 0..1. Each credential can have zero or one |
Agreed @babisRoutis. It would IMHO make sense to also include This seems to become a pretty big change, but one that might help clean up quite a bit IMHO. Are people happy with a draft PR that makes it easier to understand the changes and discuss there? |
Is this an opportunity to make the endpoint REST+HATEOAS (pagination, links)? "GET /credentials → collection"
Especially for batch issuance can be useful, so that response size can be controlled by the client (wallet). |
I'm not sure I understand the motivation and concept of pagination here and if it's really connected to this issue, do you mind to elaborate? |
@paulbastian, of course, I can try. If you check the proposed design of the response and discussion about "notification_id" the design essentially has almost all the elements of a REST API. Since the proposed changes are creating a breaking change, I see an opportunity to further improve the endpoint, so that the wallet can control the size of the response it can accept (via pagination/page size). Is it connected to the issue? Partially, namely, the proposed changes in this issue triggered the idea for the proposed improvement. Is the improvement blocking the evolution of this issue? No, hence it can be addressed in a separate issue, but only if people express an interest. |
I would ask you to open a new issue please! |
Feels like there is an agreement forming around option 2.
|
Hi @Sakurann Currently, the following is also problematic
It implies that So, IMHO, a possible PR should include :
These changes would make the semantics of Credential Response very clear: Issued, Deferred, Failed, regardless of single or batch request. Finally, with regards to |
Option 2 seems by far the best to me. |
Option 2 seems to be most reasonable. |
+1 for option 2 |
Another potential use case is allowing the issuer to tell the wallet what's the preferred disclosure policy for each issued credential, as described on: Support for embedded disclosure policies is mandated by the latest Implementing Act drafts. The issue linked above proposes several solutions to this requirement and option 2. aligns nicely with this proposal. Even though it's not an "embedded" policy per se (embedded in the credential payload itself, that is), the mechanism proposed in this issue would allow to support disclosure policies agnostic to each credential format. +1 for option 2. for me too |
+1 for option 2.
Another potential use case is adding revocation-related information that the holder needs to retrieve a credential status assertion or to revoke the credential. |
Sorry I forgot to answer, but @mickrau already mentioned one point I had in mind. Not every credential format supports or will support unsigned data and I am pretty sure there will be requirements to attach data to a (specific) credential. One very concrete example would be revocation information (for example cryptographic accumulator based revocation approaches - if they ever get adopted / scale well enough). |
This would also enable credential version IDs as proposed here: #278 |
It seems there could be benefit to have the ability to add auxilliary/associated/additional data/metadata to an issued credential. This could apply to a single credential but specifically also to each instance of Credential if multiple are issued using batch issuance with proofs and credentials.
This may be used for example key handles of ARKG or other advanced key derivation schemes, like described in #359 where each credential is using a public key that is derived by the issuer, so there is a need to pass a keyhandle for each credential instance. This could also be used for other features in the future, where there is data associated to a credential instance useful to the Wallet that should not be included into the credential itself.
I see some options:
Option 1:
Adding a
credentials_metadata
array in non-breaking way that includes all potential associated data, assuming same ordering ascredentials
array.Option 2:
Enhance
credentials
array in breaking way that includes all potential associated data.Option 3:
Each feature that uses/requires associated data introduces its own parameter array. This means though there are proof type specific parameters.
The text was updated successfully, but these errors were encountered: