Currently, we have enc_values_supported and alg_values_supported but those don't define what key types (e.g., curves) are supported by the Credential Issuer to encrypt the Credential Response. This is needed by the wallet to provide the right public keys in the request for key agreement or asymmetric encryption in general. Normally, we would use something like jwks or jwks_uri for this purpose. Perhaps we should do that here as well. I would have expected the issuer to create an ephemeral key pair and use the wallet key from the request as a static key in ECDH-ES. Perhaps that assumption is wrong.
Otherwise, The following would be a rough proposal how this can be indicated by adding a parameter to credential_response_encryption:
* `jwk_values_supported`: REQUIRED. Array containing a list of objects describing the supported JWK values by the Credential and/or Batch Credential Endpoint to encode the Credential or Batch Credential Response in a JWT [@!RFC7519]. Each object MUST contain a (`kty` value) [@!RFC7517] and an OPTIONAL (`crv` value) [@!RFC8037]. For example, to indicate the issuer supports ECDH-ES with curve P-256, `jwk_values_supported` includes the following object: `{ "kty":"EC", "crv":"P-256" }`.
For example:
"jwk_values_supported": [
{ "kty": "EC", "crv": "P-256" },
{ "kty": "OKP", "crv": "X25519" },
{ "kty": "RSA" }
]
Originally posted by @awoie in #153 (comment)
Currently, we have
enc_values_supportedandalg_values_supportedbut those don't define what key types (e.g., curves) are supported by the Credential Issuer to encrypt the Credential Response. This is needed by the wallet to provide the right public keys in the request for key agreement or asymmetric encryption in general. Normally, we would use something likejwksorjwks_urifor this purpose. Perhaps we should do that here as well. I would have expected the issuer to create an ephemeral key pair and use the wallet key from the request as a static key in ECDH-ES. Perhaps that assumption is wrong.Otherwise, The following would be a rough proposal how this can be indicated by adding a parameter to
credential_response_encryption:For example:
Originally posted by @awoie in #153 (comment)