diff --git a/api/spec/openapi.gen.go b/api/spec/openapi.gen.go index 6cea449bc..3ab1f243f 100644 --- a/api/spec/openapi.gen.go +++ b/api/spec/openapi.gen.go @@ -19,193 +19,194 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/docs/v1/openapi.yaml b/docs/v1/openapi.yaml index afeb4c197..7fff73c1d 100644 --- a/docs/v1/openapi.yaml +++ b/docs/v1/openapi.yaml @@ -1470,9 +1470,9 @@ components: description: ID of the credential template. nullable: true override_issuer: - type: boolean - description: Override issuer. - nullable: true + type: boolean + description: Override issuer. + nullable: true override_subject_did: type: boolean description: Override credential subject did. @@ -2097,21 +2097,21 @@ components: description: A JSON string identifying the scope value that this Credential Issuer supports for this particular credential. cryptographic_binding_methods_supported: type: array + description: Array of case sensitive strings that identify how the Credential is bound to the identifier of the End-User who possesses the Credential. items: type: string - description: Array of case sensitive strings that identify how the Credential is bound to the identifier of the End-User who possesses the Credential. - cryptographic_suites_supported: + credential_signing_alg_values_supported: type: array + description: Array of case sensitive strings that identify the algorithms that the Issuer uses to sign the issued Credential. items: type: string - description: Array of case sensitive strings that identify the cryptographic suites that are supported for the cryptographic_binding_methods_supported. credential_definition: $ref: ./common.yaml#/components/schemas/CredentialDefinition order: type: array + description: Array of the claim name values that lists them in the order they should be displayed by the Wallet. items: type: string - description: Array of the claim name values that lists them in the order they should be displayed by the Wallet. doctype: type: string description: 'For mso_mdoc vc only. String identifying the Credential type, as defined in [ISO.18013-5].' @@ -2121,11 +2121,11 @@ components: claims: type: object description: 'For mso_mdoc and vc+sd-jwt vc only. Object containing a list of name/value pairs, where each name identifies a claim about the subject offered in the Credential. The value can be another such object (nested data structures), or an array of such objects.' - proof_types: - type: array - items: - type: string - description: 'A JSON array of case sensitive strings, each representing proof_type that the Credential Issuer supports. If omitted, the default value is jwt.' + proof_types_supported: + description: 'Object that describes specifics of the key proof(s) that the Credential Issuer supports.' + type: object + additionalProperties: + $ref: '#/components/schemas/ProofTypeSupported' display: type: array description: 'An array of objects, where each object contains the display properties of the supported credential for a certain language.' @@ -2133,6 +2133,20 @@ components: $ref: '#/components/schemas/CredentialDisplay' required: - format + ProofTypeSupported: + title: ProofTypeSupported + x-tags: + - issuer + type: object + description: Object that contains metadata about the proof type that the Credential Issuer supports. + properties: + proof_signing_alg_values_supported: + type: array + description: Array of case sensitive strings that identify the algorithms that the Issuer supports for this proof type. + items: + type: string + required: + - proof_signing_alg_values_supported InitiateIssuanceCredentialConfiguration: title: InitiateIssuanceCredentialConfiguration object definition. x-tags: diff --git a/pkg/kms/aws/service_mocks.go b/pkg/kms/aws/service_mocks.go index 3675c654a..ac8806377 100644 --- a/pkg/kms/aws/service_mocks.go +++ b/pkg/kms/aws/service_mocks.go @@ -337,4 +337,4 @@ func (m *MockmetricsProvider) VerifyTime(value time.Duration) { func (mr *MockmetricsProviderMockRecorder) VerifyTime(value interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyTime", reflect.TypeOf((*MockmetricsProvider)(nil).VerifyTime), value) -} \ No newline at end of file +} diff --git a/pkg/kms/mocks/kms_mocks.go b/pkg/kms/mocks/kms_mocks.go index 5fe7d704d..8ca0def08 100644 --- a/pkg/kms/mocks/kms_mocks.go +++ b/pkg/kms/mocks/kms_mocks.go @@ -96,4 +96,4 @@ func (m *MockVCSKeyManager) SupportedKeyTypes() []kms.KeyType { func (mr *MockVCSKeyManagerMockRecorder) SupportedKeyTypes() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SupportedKeyTypes", reflect.TypeOf((*MockVCSKeyManager)(nil).SupportedKeyTypes)) -} \ No newline at end of file +} diff --git a/pkg/restapi/v1/issuer/openapi.gen.go b/pkg/restapi/v1/issuer/openapi.gen.go index fa02113a6..7e413fc4f 100644 --- a/pkg/restapi/v1/issuer/openapi.gen.go +++ b/pkg/restapi/v1/issuer/openapi.gen.go @@ -49,12 +49,12 @@ type CredentialConfigurationsSupported struct { // Object containing the detailed description of the credential type. CredentialDefinition *externalRef0.CredentialDefinition `json:"credential_definition,omitempty"` + // Array of case sensitive strings that identify the algorithms that the Issuer uses to sign the issued Credential. + CredentialSigningAlgValuesSupported *[]string `json:"credential_signing_alg_values_supported,omitempty"` + // Array of case sensitive strings that identify how the Credential is bound to the identifier of the End-User who possesses the Credential. CryptographicBindingMethodsSupported *[]string `json:"cryptographic_binding_methods_supported,omitempty"` - // Array of case sensitive strings that identify the cryptographic suites that are supported for the cryptographic_binding_methods_supported. - CryptographicSuitesSupported *[]string `json:"cryptographic_suites_supported,omitempty"` - // An array of objects, where each object contains the display properties of the supported credential for a certain language. Display *[]CredentialDisplay `json:"display,omitempty"` @@ -67,8 +67,8 @@ type CredentialConfigurationsSupported struct { // Array of the claim name values that lists them in the order they should be displayed by the Wallet. Order *[]string `json:"order,omitempty"` - // A JSON array of case sensitive strings, each representing proof_type that the Credential Issuer supports. If omitted, the default value is jwt. - ProofTypes *[]string `json:"proof_types,omitempty"` + // Object that describes specifics of the key proof(s) that the Credential Issuer supports. + ProofTypesSupported *CredentialConfigurationsSupported_ProofTypesSupported `json:"proof_types_supported,omitempty"` // A JSON string identifying the scope value that this Credential Issuer supports for this particular credential. Scope *string `json:"scope,omitempty"` @@ -77,6 +77,11 @@ type CredentialConfigurationsSupported struct { Vct *string `json:"vct,omitempty"` } +// Object that describes specifics of the key proof(s) that the Credential Issuer supports. +type CredentialConfigurationsSupported_ProofTypesSupported struct { + AdditionalProperties map[string]ProofTypeSupported `json:"-"` +} + // CredentialDisplay defines model for CredentialDisplay. type CredentialDisplay struct { BackgroundColor *string `json:"background_color,omitempty"` @@ -391,6 +396,12 @@ type PrepareCredentialResult struct { Retry bool `json:"retry"` } +// Object that contains metadata about the proof type that the Credential Issuer supports. +type ProofTypeSupported struct { + // Array of case sensitive strings that identify the algorithms that the Issuer supports for this proof type. + ProofSigningAlgValuesSupported []string `json:"proof_signing_alg_values_supported"` +} + // Model for Push Authorization Details request. type PushAuthorizationDetailsRequest struct { AuthorizationDetails []externalRef0.AuthorizationDetails `json:"authorization_details"` @@ -583,6 +594,59 @@ type PostIssueCredentialsJSONRequestBody = PostIssueCredentialsJSONBody // InitiateCredentialIssuanceJSONRequestBody defines body for InitiateCredentialIssuance for application/json ContentType. type InitiateCredentialIssuanceJSONRequestBody = InitiateCredentialIssuanceJSONBody +// Getter for additional properties for CredentialConfigurationsSupported_ProofTypesSupported. Returns the specified +// element and whether it was found +func (a CredentialConfigurationsSupported_ProofTypesSupported) Get(fieldName string) (value ProofTypeSupported, found bool) { + if a.AdditionalProperties != nil { + value, found = a.AdditionalProperties[fieldName] + } + return +} + +// Setter for additional properties for CredentialConfigurationsSupported_ProofTypesSupported +func (a *CredentialConfigurationsSupported_ProofTypesSupported) Set(fieldName string, value ProofTypeSupported) { + if a.AdditionalProperties == nil { + a.AdditionalProperties = make(map[string]ProofTypeSupported) + } + a.AdditionalProperties[fieldName] = value +} + +// Override default JSON handling for CredentialConfigurationsSupported_ProofTypesSupported to handle AdditionalProperties +func (a *CredentialConfigurationsSupported_ProofTypesSupported) UnmarshalJSON(b []byte) error { + object := make(map[string]json.RawMessage) + err := json.Unmarshal(b, &object) + if err != nil { + return err + } + + if len(object) != 0 { + a.AdditionalProperties = make(map[string]ProofTypeSupported) + for fieldName, fieldBuf := range object { + var fieldVal ProofTypeSupported + err := json.Unmarshal(fieldBuf, &fieldVal) + if err != nil { + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) + } + a.AdditionalProperties[fieldName] = fieldVal + } + } + return nil +} + +// Override default JSON handling for CredentialConfigurationsSupported_ProofTypesSupported to handle AdditionalProperties +func (a CredentialConfigurationsSupported_ProofTypesSupported) MarshalJSON() ([]byte, error) { + var err error + object := make(map[string]json.RawMessage) + + for fieldName, field := range a.AdditionalProperties { + object[fieldName], err = json.Marshal(field) + if err != nil { + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) + } + } + return json.Marshal(object) +} + // Getter for additional properties for WellKnownOpenIDIssuerConfiguration_CredentialConfigurationsSupported. Returns the specified // element and whether it was found func (a WellKnownOpenIDIssuerConfiguration_CredentialConfigurationsSupported) Get(fieldName string) (value CredentialConfigurationsSupported, found bool) { diff --git a/pkg/service/wellknown/provider/wellknown_service.go b/pkg/service/wellknown/provider/wellknown_service.go index 7eae49db5..ce80d4838 100644 --- a/pkg/service/wellknown/provider/wellknown_service.go +++ b/pkg/service/wellknown/provider/wellknown_service.go @@ -229,26 +229,34 @@ func (s *Service) buildCredentialConfigurationsSupported( } for credentialConfigurationID, credentialSupported := range credentialConfSupported { - var cryptographicBindingMethodsSupported, cryptographicSuitesSupported []string + var cryptographicBindingMethodsSupported, signingAlgValuesSupported []string if issuerProfile.VCConfig != nil { cryptographicBindingMethodsSupported = []string{string(issuerProfile.VCConfig.DIDMethod)} - cryptographicSuitesSupported = []string{string(issuerProfile.VCConfig.KeyType)} + signingAlgValuesSupported = []string{string(issuerProfile.VCConfig.KeyType)} } display := s.buildCredentialConfigurationsSupportedDisplay(credentialSupported.Display) credentialDefinition := s.buildCredentialDefinition(credentialSupported.CredentialDefinition) + proofTypeSupported := &issuer.CredentialConfigurationsSupported_ProofTypesSupported{ + AdditionalProperties: map[string]issuer.ProofTypeSupported{ + "jwt": { + ProofSigningAlgValuesSupported: []string{string(issuerProfile.VCConfig.KeyType)}, + }, + }, + } + credentialsConfigurationSupported.Set(credentialConfigurationID, issuer.CredentialConfigurationsSupported{ Claims: lo.ToPtr(credentialSupported.Claims), CredentialDefinition: credentialDefinition, CryptographicBindingMethodsSupported: lo.ToPtr(cryptographicBindingMethodsSupported), - CryptographicSuitesSupported: lo.ToPtr(cryptographicSuitesSupported), + CredentialSigningAlgValuesSupported: lo.ToPtr(signingAlgValuesSupported), Display: lo.ToPtr(display), Doctype: lo.ToPtr(credentialSupported.Doctype), Format: string(credentialSupported.Format), Order: lo.ToPtr(credentialSupported.Order), - ProofTypes: lo.ToPtr([]string{"jwt"}), + ProofTypesSupported: proofTypeSupported, Scope: lo.ToPtr(credentialSupported.Scope), Vct: lo.ToPtr(credentialSupported.Vct), }) diff --git a/pkg/service/wellknown/provider/wellknown_service_test.go b/pkg/service/wellknown/provider/wellknown_service_test.go index 5feae85d5..ac6cc24bb 100644 --- a/pkg/service/wellknown/provider/wellknown_service_test.go +++ b/pkg/service/wellknown/provider/wellknown_service_test.go @@ -227,7 +227,7 @@ func checkWellKnownOpenIDIssuerConfiguration( assert.Equal(t, []string{"https://example.com/context/1"}, lo.FromPtr(definition.Context)) assert.Equal(t, []string{"orb"}, lo.FromPtr(credentialConfigurationSupported.CryptographicBindingMethodsSupported)) - assert.Equal(t, []string{"ECDSASecp256k1DER"}, lo.FromPtr(credentialConfigurationSupported.CryptographicSuitesSupported)) + assert.Equal(t, []string{"ECDSASecp256k1DER"}, lo.FromPtr(credentialConfigurationSupported.CredentialSigningAlgValuesSupported)) credentialConfigurationSupportedDisplay := lo.FromPtr(credentialConfigurationSupported.Display) assert.Equal(t, 1, len(credentialConfigurationSupportedDisplay)) @@ -244,7 +244,16 @@ func checkWellKnownOpenIDIssuerConfiguration( assert.Equal(t, "doctype1", lo.FromPtr(credentialConfigurationSupported.Doctype)) assert.Equal(t, "ldp_vc", credentialConfigurationSupported.Format) assert.Equal(t, []string{"claimName1", "claimName2", "claimName3"}, lo.FromPtr(credentialConfigurationSupported.Order)) - assert.Equal(t, []string{"jwt"}, lo.FromPtr(credentialConfigurationSupported.ProofTypes)) + + expectedProofTypeSupported := issuer.CredentialConfigurationsSupported_ProofTypesSupported{ + AdditionalProperties: map[string]issuer.ProofTypeSupported{ + "jwt": { + ProofSigningAlgValuesSupported: []string{"ECDSASecp256k1DER"}, + }, + }, + } + + assert.Equal(t, expectedProofTypeSupported, lo.FromPtr(credentialConfigurationSupported.ProofTypesSupported)) assert.Equal(t, "VerifiedEmployeeCredential", lo.FromPtr(credentialConfigurationSupported.Scope)) assert.Equal(t, "vct1", lo.FromPtr(credentialConfigurationSupported.Vct)) }