diff --git a/README.rst b/README.rst index 01a00cb96a..a5f451c054 100644 --- a/README.rst +++ b/README.rst @@ -253,9 +253,9 @@ The following options can be configured on the server: storage.redis.sentinel.username Username for authenticating to Redis Sentinels. storage.redis.tls.truststorefile PEM file containing the trusted CA certificate(s) for authenticating remote Redis servers. Can only be used when connecting over TLS (use 'rediss://' as scheme in address). **VCR** - vcr.oidc4vci.definitionsdir Directory with the additional credential definitions the node could issue (experimental, may change without notice). - vcr.oidc4vci.enabled false Enable issuing and receiving credentials over OIDC4VCI (experimental). - vcr.oidc4vci.timeout 30s Time-out for OpenID4VCI HTTP client operations. + vcr.openid4vci.definitionsdir Directory with the additional credential definitions the node could issue (experimental, may change without notice). + vcr.openid4vci.enabled false Enable issuing and receiving credentials over OpenID4VCI (experimental). + vcr.openid4vci.timeout 30s Time-out for OpenID4VCI HTTP client operations. ==================================== =============================================================================================================================================================================================================================================================================================================== ================================================================================================================================================================================================================================== This table is automatically generated using the configuration flags in the core and engines. When they're changed diff --git a/cmd/root.go b/cmd/root.go index 4c01c01ae3..2061cd02ae 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -53,7 +53,7 @@ import ( "github.com/nuts-foundation/nuts-node/storage" storageCmd "github.com/nuts-foundation/nuts-node/storage/cmd" "github.com/nuts-foundation/nuts-node/vcr" - oidc4vciAPI "github.com/nuts-foundation/nuts-node/vcr/api/oidc4vci/v0" + openid4vciAPI "github.com/nuts-foundation/nuts-node/vcr/api/openid4vci/v0" vcrAPI "github.com/nuts-foundation/nuts-node/vcr/api/vcr/v2" vcrCmd "github.com/nuts-foundation/nuts-node/vcr/cmd" "github.com/nuts-foundation/nuts-node/vdr" @@ -205,7 +205,7 @@ func CreateSystem(shutdownCallback context.CancelFunc) *core.System { Resolver: docResolver, }}) system.RegisterRoutes(&vcrAPI.Wrapper{VCR: credentialInstance, ContextManager: jsonld}) - system.RegisterRoutes(&oidc4vciAPI.Wrapper{ + system.RegisterRoutes(&openid4vciAPI.Wrapper{ VCR: credentialInstance, DocumentOwner: vdrInstance, }) diff --git a/codegen/configs/vcr_oidc4vci_v0.yaml b/codegen/configs/vcr_openid4vci_v0.yaml similarity index 100% rename from codegen/configs/vcr_oidc4vci_v0.yaml rename to codegen/configs/vcr_openid4vci_v0.yaml diff --git a/core/echo_mock.go b/core/echo_mock.go index 47bcdafe46..8c620d1be7 100644 --- a/core/echo_mock.go +++ b/core/echo_mock.go @@ -7,7 +7,7 @@ package core import ( reflect "reflect" - v4 "github.com/labstack/echo/v4" + echo "github.com/labstack/echo/v4" gomock "go.uber.org/mock/gomock" ) @@ -35,14 +35,14 @@ func (m *MockEchoRouter) EXPECT() *MockEchoRouterMockRecorder { } // Add mocks base method. -func (m *MockEchoRouter) Add(method, path string, handler v4.HandlerFunc, middleware ...v4.MiddlewareFunc) *v4.Route { +func (m *MockEchoRouter) Add(method, path string, handler echo.HandlerFunc, middleware ...echo.MiddlewareFunc) *echo.Route { m.ctrl.T.Helper() varargs := []interface{}{method, path, handler} for _, a := range middleware { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Add", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -54,14 +54,14 @@ func (mr *MockEchoRouterMockRecorder) Add(method, path, handler interface{}, mid } // CONNECT mocks base method. -func (m_2 *MockEchoRouter) CONNECT(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "CONNECT", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -73,14 +73,14 @@ func (mr *MockEchoRouterMockRecorder) CONNECT(path, h interface{}, m ...interfac } // DELETE mocks base method. -func (m_2 *MockEchoRouter) DELETE(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "DELETE", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -92,14 +92,14 @@ func (mr *MockEchoRouterMockRecorder) DELETE(path, h interface{}, m ...interface } // GET mocks base method. -func (m_2 *MockEchoRouter) GET(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "GET", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -111,14 +111,14 @@ func (mr *MockEchoRouterMockRecorder) GET(path, h interface{}, m ...interface{}) } // HEAD mocks base method. -func (m_2 *MockEchoRouter) HEAD(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "HEAD", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -130,14 +130,14 @@ func (mr *MockEchoRouterMockRecorder) HEAD(path, h interface{}, m ...interface{} } // OPTIONS mocks base method. -func (m_2 *MockEchoRouter) OPTIONS(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "OPTIONS", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -149,14 +149,14 @@ func (mr *MockEchoRouterMockRecorder) OPTIONS(path, h interface{}, m ...interfac } // PATCH mocks base method. -func (m_2 *MockEchoRouter) PATCH(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PATCH", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -168,14 +168,14 @@ func (mr *MockEchoRouterMockRecorder) PATCH(path, h interface{}, m ...interface{ } // POST mocks base method. -func (m_2 *MockEchoRouter) POST(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "POST", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -187,14 +187,14 @@ func (mr *MockEchoRouterMockRecorder) POST(path, h interface{}, m ...interface{} } // PUT mocks base method. -func (m_2 *MockEchoRouter) PUT(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PUT", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -206,14 +206,14 @@ func (mr *MockEchoRouterMockRecorder) PUT(path, h interface{}, m ...interface{}) } // TRACE mocks base method. -func (m_2 *MockEchoRouter) TRACE(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoRouter) TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "TRACE", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -225,7 +225,7 @@ func (mr *MockEchoRouterMockRecorder) TRACE(path, h interface{}, m ...interface{ } // Use mocks base method. -func (m *MockEchoRouter) Use(middleware ...v4.MiddlewareFunc) { +func (m *MockEchoRouter) Use(middleware ...echo.MiddlewareFunc) { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range middleware { diff --git a/didman/mock.go b/didman/mock.go index e23e044deb..b7b954d336 100644 --- a/didman/mock.go +++ b/didman/mock.go @@ -9,7 +9,7 @@ import ( url "net/url" reflect "reflect" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" did "github.com/nuts-foundation/go-did/did" gomock "go.uber.org/mock/gomock" ) @@ -38,7 +38,7 @@ func (m *MockDidman) EXPECT() *MockDidmanMockRecorder { } // AddCompoundService mocks base method. -func (m *MockDidman) AddCompoundService(ctx context.Context, id did.DID, serviceType string, endpoints map[string]go_did.URI) (*did.Service, error) { +func (m *MockDidman) AddCompoundService(ctx context.Context, id did.DID, serviceType string, endpoints map[string]ssi.URI) (*did.Service, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AddCompoundService", ctx, id, serviceType, endpoints) ret0, _ := ret[0].(*did.Service) @@ -82,7 +82,7 @@ func (mr *MockDidmanMockRecorder) DeleteEndpointsByType(ctx, id, serviceType int } // DeleteService mocks base method. -func (m *MockDidman) DeleteService(ctx context.Context, id go_did.URI) error { +func (m *MockDidman) DeleteService(ctx context.Context, id ssi.URI) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteService", ctx, id) ret0, _ := ret[0].(error) @@ -156,7 +156,7 @@ func (mr *MockDidmanMockRecorder) SearchOrganizations(ctx, query, didServiceType } // UpdateCompoundService mocks base method. -func (m *MockDidman) UpdateCompoundService(ctx context.Context, id did.DID, serviceType string, endpoints map[string]go_did.URI) (*did.Service, error) { +func (m *MockDidman) UpdateCompoundService(ctx context.Context, id did.DID, serviceType string, endpoints map[string]ssi.URI) (*did.Service, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpdateCompoundService", ctx, id, serviceType, endpoints) ret0, _ := ret[0].(*did.Service) diff --git a/docs/_static/vcr/oidc4vci_v0.yaml b/docs/_static/vcr/openid4vci_v0.yaml similarity index 97% rename from docs/_static/vcr/oidc4vci_v0.yaml rename to docs/_static/vcr/openid4vci_v0.yaml index b2fb83e25e..b89879e04f 100644 --- a/docs/_static/vcr/oidc4vci_v0.yaml +++ b/docs/_static/vcr/openid4vci_v0.yaml @@ -1,6 +1,6 @@ openapi: 3.0.0 info: - title: OIDC4VCI Issuer API + title: OpenID4VCI Issuer API version: 0.0.0 description: > This API is EXPERIMENTAL and implements a draft version of OpenID 4 Verifiable Credential Issuance. @@ -77,10 +77,10 @@ paths: get: tags: - Issuer - summary: Get the OIDC4VCI Credential Issuer Metadata + summary: Get the OpenID4VCI Credential Issuer Metadata description: > Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-credential-issuer-metadata - operationId: getOIDC4VCIIssuerMetadata + operationId: getOpenID4VCIIssuerMetadata responses: "200": description: OK @@ -101,7 +101,7 @@ paths: description: > Can be used to test the existence of the well-known endpoint, used by a Nuts node to discover its own OpenID4VCI identifier. - operationId: getOIDC4VCIIssuerMetadataHeaders + operationId: getOpenID4VCIIssuerMetadataHeaders responses: default: description: Response of the HEAD request, returning HTTP status and headers as if a GET request was performed. @@ -160,7 +160,7 @@ paths: application/json: schema: "$ref": "#/components/schemas/ErrorResponse" - "/n2n/identity/{did}/issuer/oidc4vci/credential": + "/n2n/identity/{did}/issuer/openid4vci/credential": post: tags: - Issuer @@ -220,7 +220,7 @@ paths: application/json: schema: "$ref": "#/components/schemas/ErrorResponse" - "/n2n/identity/{did}/wallet/oidc4vci/credential_offer": + "/n2n/identity/{did}/wallet/openid4vci/credential_offer": get: tags: - Wallet @@ -296,7 +296,7 @@ components: } OAuth2ClientMetadata: - description: OAuth2 Client Metadata, extended with OIDC4VCI parameters + description: OAuth2 Client Metadata, extended with OpenID4VCI parameters type: object required: - credential_offer_endpoint @@ -329,7 +329,7 @@ components: TokenResponse: type: object description: | - Token Responses are made as defined in [RFC6749] with additional fields as described in OIDC4VCI. + Token Responses are made as defined in [RFC6749] with additional fields as described in OpenID4VCI. required: - access_token - token_type @@ -520,7 +520,7 @@ components: type: object description: | The response to a credential offer, indicating the status of the operation on the wallet's side. - It is an extension to the OIDC4VCI specification to better support server-to-server issuance. + It is an extension to the OpenID4VCI specification to better support server-to-server issuance. required: - status properties: diff --git a/docs/pages/deployment/cli-reference.rst b/docs/pages/deployment/cli-reference.rst index a8a267fe02..1851fe1eea 100755 --- a/docs/pages/deployment/cli-reference.rst +++ b/docs/pages/deployment/cli-reference.rst @@ -76,9 +76,9 @@ The following options apply to the server commands below: --tls.certkeyfile string PEM file containing the private key of the server certificate. --tls.offload string Whether to enable TLS offloading for incoming connections. Enable by setting it to 'incoming'. If enabled 'tls.certheader' must be configured as well. --tls.truststorefile string PEM file containing the trusted CA certificates for authenticating remote servers. (default "truststore.pem") - --vcr.oidc4vci.definitionsdir string Directory with the additional credential definitions the node could issue (experimental, may change without notice). - --vcr.oidc4vci.enabled Enable issuing and receiving credentials over OIDC4VCI (experimental). - --vcr.oidc4vci.timeout duration Time-out for OpenID4VCI HTTP client operations. (default 30s) + --vcr.openid4vci.definitionsdir string Directory with the additional credential definitions the node could issue (experimental, may change without notice). + --vcr.openid4vci.enabled Enable issuing and receiving credentials over OpenID4VCI (experimental). + --vcr.openid4vci.timeout duration Time-out for OpenID4VCI HTTP client operations. (default 30s) --verbosity string Log level (trace, debug, info, warn, error) (default "info") nuts config diff --git a/docs/pages/deployment/server_options.rst b/docs/pages/deployment/server_options.rst index 4344f91e0f..5d755a0200 100755 --- a/docs/pages/deployment/server_options.rst +++ b/docs/pages/deployment/server_options.rst @@ -76,8 +76,8 @@ storage.redis.sentinel.username Username for authenticating to Redis Sentinels. storage.redis.tls.truststorefile PEM file containing the trusted CA certificate(s) for authenticating remote Redis servers. Can only be used when connecting over TLS (use 'rediss://' as scheme in address). **VCR** - vcr.oidc4vci.definitionsdir Directory with the additional credential definitions the node could issue (experimental, may change without notice). - vcr.oidc4vci.enabled false Enable issuing and receiving credentials over OIDC4VCI (experimental). - vcr.oidc4vci.timeout 30s Time-out for OpenID4VCI HTTP client operations. - vcr.oidc4vci.url Base URL for the OIDC4VCI wallet and issuer endpoints, which ends up in the OAuth2 metadata. These are node-to-node (/n2n) endpoints, but only the base path up until (not including) /n2n has to be configured. So typically, only a domain. Must be HTTPS when strict-mode is enabled. + vcr.openid4vci.definitionsdir Directory with the additional credential definitions the node could issue (experimental, may change without notice). + vcr.openid4vci.enabled false Enable issuing and receiving credentials over OpenID4VCI (experimental). + vcr.openid4vci.timeout 30s Time-out for OpenID4VCI HTTP client operations. + vcr.openid4vci.url Base URL for the OpenID4VCI wallet and issuer endpoints, which ends up in the OAuth2 metadata. These are node-to-node (/n2n) endpoints, but only the base path up until (not including) /n2n has to be configured. So typically, only a domain. Must be HTTPS when strict-mode is enabled. ==================================== =============================================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================== diff --git a/docs/pages/technology/openid4vci.rst b/docs/pages/technology/openid4vci.rst index b361465214..eaf41ab8cb 100644 --- a/docs/pages/technology/openid4vci.rst +++ b/docs/pages/technology/openid4vci.rst @@ -36,7 +36,7 @@ By default, the feature is disabled. To enable issuing and receiving credentials over OpenID4VCI: -- set ``vcr.oidc4vci.enabled`` to ``true`` +- set ``vcr.openid4vci.enabled`` to ``true`` - register service of type ``node-http-services-baseurl`` in your DID documents, pointing to the base URL of your node-to-node API, e.g. ``https://nutsnode.example.com/`` (excluding ``/n2n``). Note that this step will be automated in (near) future. diff --git a/e2e-tests/openid4vci/issuer-initiated/node-A/nuts.yaml b/e2e-tests/openid4vci/issuer-initiated/node-A/nuts.yaml index b7a30afdb9..52624b69cf 100644 --- a/e2e-tests/openid4vci/issuer-initiated/node-A/nuts.yaml +++ b/e2e-tests/openid4vci/issuer-initiated/node-A/nuts.yaml @@ -19,7 +19,7 @@ crypto: storage: fs vcr: overrideissueallpublic: false - oidc4vci: + openid4vci: enabled: true goldenhammer: interval: 1s diff --git a/e2e-tests/openid4vci/issuer-initiated/node-B/nuts.yaml b/e2e-tests/openid4vci/issuer-initiated/node-B/nuts.yaml index 53f6fe5961..ad40c33559 100644 --- a/e2e-tests/openid4vci/issuer-initiated/node-B/nuts.yaml +++ b/e2e-tests/openid4vci/issuer-initiated/node-B/nuts.yaml @@ -19,7 +19,7 @@ crypto: storage: fs vcr: overrideissueallpublic: false - oidc4vci: + openid4vci: enabled: true goldenhammer: interval: 1s diff --git a/events/mock.go b/events/mock.go index 658b109cdd..b00affa7ca 100644 --- a/events/mock.go +++ b/events/mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - nats_go "github.com/nats-io/nats.go" + nats "github.com/nats-io/nats.go" gomock "go.uber.org/mock/gomock" ) @@ -48,14 +48,14 @@ func (mr *MockConnMockRecorder) Close() *gomock.Call { } // JetStream mocks base method. -func (m *MockConn) JetStream(opts ...nats_go.JSOpt) (nats_go.JetStreamContext, error) { +func (m *MockConn) JetStream(opts ...nats.JSOpt) (nats.JetStreamContext, error) { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "JetStream", varargs...) - ret0, _ := ret[0].(nats_go.JetStreamContext) + ret0, _ := ret[0].(nats.JetStreamContext) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -90,14 +90,14 @@ func (m *MockJetStreamContext) EXPECT() *MockJetStreamContextMockRecorder { } // AccountInfo mocks base method. -func (m *MockJetStreamContext) AccountInfo(opts ...nats_go.JSOpt) (*nats_go.AccountInfo, error) { +func (m *MockJetStreamContext) AccountInfo(opts ...nats.JSOpt) (*nats.AccountInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "AccountInfo", varargs...) - ret0, _ := ret[0].(*nats_go.AccountInfo) + ret0, _ := ret[0].(*nats.AccountInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -109,14 +109,14 @@ func (mr *MockJetStreamContextMockRecorder) AccountInfo(opts ...interface{}) *go } // AddConsumer mocks base method. -func (m *MockJetStreamContext) AddConsumer(stream string, cfg *nats_go.ConsumerConfig, opts ...nats_go.JSOpt) (*nats_go.ConsumerInfo, error) { +func (m *MockJetStreamContext) AddConsumer(stream string, cfg *nats.ConsumerConfig, opts ...nats.JSOpt) (*nats.ConsumerInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{stream, cfg} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "AddConsumer", varargs...) - ret0, _ := ret[0].(*nats_go.ConsumerInfo) + ret0, _ := ret[0].(*nats.ConsumerInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -129,14 +129,14 @@ func (mr *MockJetStreamContextMockRecorder) AddConsumer(stream, cfg interface{}, } // AddStream mocks base method. -func (m *MockJetStreamContext) AddStream(cfg *nats_go.StreamConfig, opts ...nats_go.JSOpt) (*nats_go.StreamInfo, error) { +func (m *MockJetStreamContext) AddStream(cfg *nats.StreamConfig, opts ...nats.JSOpt) (*nats.StreamInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{cfg} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "AddStream", varargs...) - ret0, _ := ret[0].(*nats_go.StreamInfo) + ret0, _ := ret[0].(*nats.StreamInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -149,14 +149,14 @@ func (mr *MockJetStreamContextMockRecorder) AddStream(cfg interface{}, opts ...i } // ChanQueueSubscribe mocks base method. -func (m *MockJetStreamContext) ChanQueueSubscribe(subj, queue string, ch chan *nats_go.Msg, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) ChanQueueSubscribe(subj, queue string, ch chan *nats.Msg, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, queue, ch} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ChanQueueSubscribe", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -169,14 +169,14 @@ func (mr *MockJetStreamContextMockRecorder) ChanQueueSubscribe(subj, queue, ch i } // ChanSubscribe mocks base method. -func (m *MockJetStreamContext) ChanSubscribe(subj string, ch chan *nats_go.Msg, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) ChanSubscribe(subj string, ch chan *nats.Msg, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, ch} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ChanSubscribe", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -189,14 +189,14 @@ func (mr *MockJetStreamContextMockRecorder) ChanSubscribe(subj, ch interface{}, } // ConsumerInfo mocks base method. -func (m *MockJetStreamContext) ConsumerInfo(stream, name string, opts ...nats_go.JSOpt) (*nats_go.ConsumerInfo, error) { +func (m *MockJetStreamContext) ConsumerInfo(stream, name string, opts ...nats.JSOpt) (*nats.ConsumerInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{stream, name} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ConsumerInfo", varargs...) - ret0, _ := ret[0].(*nats_go.ConsumerInfo) + ret0, _ := ret[0].(*nats.ConsumerInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -209,7 +209,7 @@ func (mr *MockJetStreamContextMockRecorder) ConsumerInfo(stream, name interface{ } // ConsumerNames mocks base method. -func (m *MockJetStreamContext) ConsumerNames(stream string, opts ...nats_go.JSOpt) <-chan string { +func (m *MockJetStreamContext) ConsumerNames(stream string, opts ...nats.JSOpt) <-chan string { m.ctrl.T.Helper() varargs := []interface{}{stream} for _, a := range opts { @@ -228,14 +228,14 @@ func (mr *MockJetStreamContextMockRecorder) ConsumerNames(stream interface{}, op } // Consumers mocks base method. -func (m *MockJetStreamContext) Consumers(stream string, opts ...nats_go.JSOpt) <-chan *nats_go.ConsumerInfo { +func (m *MockJetStreamContext) Consumers(stream string, opts ...nats.JSOpt) <-chan *nats.ConsumerInfo { m.ctrl.T.Helper() varargs := []interface{}{stream} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Consumers", varargs...) - ret0, _ := ret[0].(<-chan *nats_go.ConsumerInfo) + ret0, _ := ret[0].(<-chan *nats.ConsumerInfo) return ret0 } @@ -247,14 +247,14 @@ func (mr *MockJetStreamContextMockRecorder) Consumers(stream interface{}, opts . } // ConsumersInfo mocks base method. -func (m *MockJetStreamContext) ConsumersInfo(stream string, opts ...nats_go.JSOpt) <-chan *nats_go.ConsumerInfo { +func (m *MockJetStreamContext) ConsumersInfo(stream string, opts ...nats.JSOpt) <-chan *nats.ConsumerInfo { m.ctrl.T.Helper() varargs := []interface{}{stream} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ConsumersInfo", varargs...) - ret0, _ := ret[0].(<-chan *nats_go.ConsumerInfo) + ret0, _ := ret[0].(<-chan *nats.ConsumerInfo) return ret0 } @@ -266,10 +266,10 @@ func (mr *MockJetStreamContextMockRecorder) ConsumersInfo(stream interface{}, op } // CreateKeyValue mocks base method. -func (m *MockJetStreamContext) CreateKeyValue(cfg *nats_go.KeyValueConfig) (nats_go.KeyValue, error) { +func (m *MockJetStreamContext) CreateKeyValue(cfg *nats.KeyValueConfig) (nats.KeyValue, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateKeyValue", cfg) - ret0, _ := ret[0].(nats_go.KeyValue) + ret0, _ := ret[0].(nats.KeyValue) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -281,10 +281,10 @@ func (mr *MockJetStreamContextMockRecorder) CreateKeyValue(cfg interface{}) *gom } // CreateObjectStore mocks base method. -func (m *MockJetStreamContext) CreateObjectStore(cfg *nats_go.ObjectStoreConfig) (nats_go.ObjectStore, error) { +func (m *MockJetStreamContext) CreateObjectStore(cfg *nats.ObjectStoreConfig) (nats.ObjectStore, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateObjectStore", cfg) - ret0, _ := ret[0].(nats_go.ObjectStore) + ret0, _ := ret[0].(nats.ObjectStore) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -296,7 +296,7 @@ func (mr *MockJetStreamContextMockRecorder) CreateObjectStore(cfg interface{}) * } // DeleteConsumer mocks base method. -func (m *MockJetStreamContext) DeleteConsumer(stream, consumer string, opts ...nats_go.JSOpt) error { +func (m *MockJetStreamContext) DeleteConsumer(stream, consumer string, opts ...nats.JSOpt) error { m.ctrl.T.Helper() varargs := []interface{}{stream, consumer} for _, a := range opts { @@ -329,7 +329,7 @@ func (mr *MockJetStreamContextMockRecorder) DeleteKeyValue(bucket interface{}) * } // DeleteMsg mocks base method. -func (m *MockJetStreamContext) DeleteMsg(name string, seq uint64, opts ...nats_go.JSOpt) error { +func (m *MockJetStreamContext) DeleteMsg(name string, seq uint64, opts ...nats.JSOpt) error { m.ctrl.T.Helper() varargs := []interface{}{name, seq} for _, a := range opts { @@ -362,7 +362,7 @@ func (mr *MockJetStreamContextMockRecorder) DeleteObjectStore(bucket interface{} } // DeleteStream mocks base method. -func (m *MockJetStreamContext) DeleteStream(name string, opts ...nats_go.JSOpt) error { +func (m *MockJetStreamContext) DeleteStream(name string, opts ...nats.JSOpt) error { m.ctrl.T.Helper() varargs := []interface{}{name} for _, a := range opts { @@ -381,14 +381,14 @@ func (mr *MockJetStreamContextMockRecorder) DeleteStream(name interface{}, opts } // GetLastMsg mocks base method. -func (m *MockJetStreamContext) GetLastMsg(name, subject string, opts ...nats_go.JSOpt) (*nats_go.RawStreamMsg, error) { +func (m *MockJetStreamContext) GetLastMsg(name, subject string, opts ...nats.JSOpt) (*nats.RawStreamMsg, error) { m.ctrl.T.Helper() varargs := []interface{}{name, subject} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetLastMsg", varargs...) - ret0, _ := ret[0].(*nats_go.RawStreamMsg) + ret0, _ := ret[0].(*nats.RawStreamMsg) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -401,14 +401,14 @@ func (mr *MockJetStreamContextMockRecorder) GetLastMsg(name, subject interface{} } // GetMsg mocks base method. -func (m *MockJetStreamContext) GetMsg(name string, seq uint64, opts ...nats_go.JSOpt) (*nats_go.RawStreamMsg, error) { +func (m *MockJetStreamContext) GetMsg(name string, seq uint64, opts ...nats.JSOpt) (*nats.RawStreamMsg, error) { m.ctrl.T.Helper() varargs := []interface{}{name, seq} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetMsg", varargs...) - ret0, _ := ret[0].(*nats_go.RawStreamMsg) + ret0, _ := ret[0].(*nats.RawStreamMsg) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -421,10 +421,10 @@ func (mr *MockJetStreamContextMockRecorder) GetMsg(name, seq interface{}, opts . } // KeyValue mocks base method. -func (m *MockJetStreamContext) KeyValue(bucket string) (nats_go.KeyValue, error) { +func (m *MockJetStreamContext) KeyValue(bucket string) (nats.KeyValue, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "KeyValue", bucket) - ret0, _ := ret[0].(nats_go.KeyValue) + ret0, _ := ret[0].(nats.KeyValue) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -450,10 +450,10 @@ func (mr *MockJetStreamContextMockRecorder) KeyValueStoreNames() *gomock.Call { } // KeyValueStores mocks base method. -func (m *MockJetStreamContext) KeyValueStores() <-chan nats_go.KeyValueStatus { +func (m *MockJetStreamContext) KeyValueStores() <-chan nats.KeyValueStatus { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "KeyValueStores") - ret0, _ := ret[0].(<-chan nats_go.KeyValueStatus) + ret0, _ := ret[0].(<-chan nats.KeyValueStatus) return ret0 } @@ -464,10 +464,10 @@ func (mr *MockJetStreamContextMockRecorder) KeyValueStores() *gomock.Call { } // ObjectStore mocks base method. -func (m *MockJetStreamContext) ObjectStore(bucket string) (nats_go.ObjectStore, error) { +func (m *MockJetStreamContext) ObjectStore(bucket string) (nats.ObjectStore, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ObjectStore", bucket) - ret0, _ := ret[0].(nats_go.ObjectStore) + ret0, _ := ret[0].(nats.ObjectStore) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -479,7 +479,7 @@ func (mr *MockJetStreamContextMockRecorder) ObjectStore(bucket interface{}) *gom } // ObjectStoreNames mocks base method. -func (m *MockJetStreamContext) ObjectStoreNames(opts ...nats_go.ObjectOpt) <-chan string { +func (m *MockJetStreamContext) ObjectStoreNames(opts ...nats.ObjectOpt) <-chan string { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { @@ -497,14 +497,14 @@ func (mr *MockJetStreamContextMockRecorder) ObjectStoreNames(opts ...interface{} } // ObjectStores mocks base method. -func (m *MockJetStreamContext) ObjectStores(opts ...nats_go.ObjectOpt) <-chan nats_go.ObjectStoreStatus { +func (m *MockJetStreamContext) ObjectStores(opts ...nats.ObjectOpt) <-chan nats.ObjectStoreStatus { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ObjectStores", varargs...) - ret0, _ := ret[0].(<-chan nats_go.ObjectStoreStatus) + ret0, _ := ret[0].(<-chan nats.ObjectStoreStatus) return ret0 } @@ -515,14 +515,14 @@ func (mr *MockJetStreamContextMockRecorder) ObjectStores(opts ...interface{}) *g } // Publish mocks base method. -func (m *MockJetStreamContext) Publish(subj string, data []byte, opts ...nats_go.PubOpt) (*nats_go.PubAck, error) { +func (m *MockJetStreamContext) Publish(subj string, data []byte, opts ...nats.PubOpt) (*nats.PubAck, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, data} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Publish", varargs...) - ret0, _ := ret[0].(*nats_go.PubAck) + ret0, _ := ret[0].(*nats.PubAck) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -535,14 +535,14 @@ func (mr *MockJetStreamContextMockRecorder) Publish(subj, data interface{}, opts } // PublishAsync mocks base method. -func (m *MockJetStreamContext) PublishAsync(subj string, data []byte, opts ...nats_go.PubOpt) (nats_go.PubAckFuture, error) { +func (m *MockJetStreamContext) PublishAsync(subj string, data []byte, opts ...nats.PubOpt) (nats.PubAckFuture, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, data} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "PublishAsync", varargs...) - ret0, _ := ret[0].(nats_go.PubAckFuture) + ret0, _ := ret[0].(nats.PubAckFuture) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -583,14 +583,14 @@ func (mr *MockJetStreamContextMockRecorder) PublishAsyncPending() *gomock.Call { } // PublishMsg mocks base method. -func (m_2 *MockJetStreamContext) PublishMsg(m *nats_go.Msg, opts ...nats_go.PubOpt) (*nats_go.PubAck, error) { +func (m_2 *MockJetStreamContext) PublishMsg(m *nats.Msg, opts ...nats.PubOpt) (*nats.PubAck, error) { m_2.ctrl.T.Helper() varargs := []interface{}{m} for _, a := range opts { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PublishMsg", varargs...) - ret0, _ := ret[0].(*nats_go.PubAck) + ret0, _ := ret[0].(*nats.PubAck) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -603,14 +603,14 @@ func (mr *MockJetStreamContextMockRecorder) PublishMsg(m interface{}, opts ...in } // PublishMsgAsync mocks base method. -func (m_2 *MockJetStreamContext) PublishMsgAsync(m *nats_go.Msg, opts ...nats_go.PubOpt) (nats_go.PubAckFuture, error) { +func (m_2 *MockJetStreamContext) PublishMsgAsync(m *nats.Msg, opts ...nats.PubOpt) (nats.PubAckFuture, error) { m_2.ctrl.T.Helper() varargs := []interface{}{m} for _, a := range opts { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PublishMsgAsync", varargs...) - ret0, _ := ret[0].(nats_go.PubAckFuture) + ret0, _ := ret[0].(nats.PubAckFuture) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -623,14 +623,14 @@ func (mr *MockJetStreamContextMockRecorder) PublishMsgAsync(m interface{}, opts } // PullSubscribe mocks base method. -func (m *MockJetStreamContext) PullSubscribe(subj, durable string, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) PullSubscribe(subj, durable string, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, durable} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "PullSubscribe", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -643,7 +643,7 @@ func (mr *MockJetStreamContextMockRecorder) PullSubscribe(subj, durable interfac } // PurgeStream mocks base method. -func (m *MockJetStreamContext) PurgeStream(name string, opts ...nats_go.JSOpt) error { +func (m *MockJetStreamContext) PurgeStream(name string, opts ...nats.JSOpt) error { m.ctrl.T.Helper() varargs := []interface{}{name} for _, a := range opts { @@ -662,14 +662,14 @@ func (mr *MockJetStreamContextMockRecorder) PurgeStream(name interface{}, opts . } // QueueSubscribe mocks base method. -func (m *MockJetStreamContext) QueueSubscribe(subj, queue string, cb nats_go.MsgHandler, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) QueueSubscribe(subj, queue string, cb nats.MsgHandler, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, queue, cb} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "QueueSubscribe", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -682,14 +682,14 @@ func (mr *MockJetStreamContextMockRecorder) QueueSubscribe(subj, queue, cb inter } // QueueSubscribeSync mocks base method. -func (m *MockJetStreamContext) QueueSubscribeSync(subj, queue string, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) QueueSubscribeSync(subj, queue string, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, queue} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "QueueSubscribeSync", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -702,7 +702,7 @@ func (mr *MockJetStreamContextMockRecorder) QueueSubscribeSync(subj, queue inter } // SecureDeleteMsg mocks base method. -func (m *MockJetStreamContext) SecureDeleteMsg(name string, seq uint64, opts ...nats_go.JSOpt) error { +func (m *MockJetStreamContext) SecureDeleteMsg(name string, seq uint64, opts ...nats.JSOpt) error { m.ctrl.T.Helper() varargs := []interface{}{name, seq} for _, a := range opts { @@ -721,14 +721,14 @@ func (mr *MockJetStreamContextMockRecorder) SecureDeleteMsg(name, seq interface{ } // StreamInfo mocks base method. -func (m *MockJetStreamContext) StreamInfo(stream string, opts ...nats_go.JSOpt) (*nats_go.StreamInfo, error) { +func (m *MockJetStreamContext) StreamInfo(stream string, opts ...nats.JSOpt) (*nats.StreamInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{stream} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "StreamInfo", varargs...) - ret0, _ := ret[0].(*nats_go.StreamInfo) + ret0, _ := ret[0].(*nats.StreamInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -741,7 +741,7 @@ func (mr *MockJetStreamContextMockRecorder) StreamInfo(stream interface{}, opts } // StreamNameBySubject mocks base method. -func (m *MockJetStreamContext) StreamNameBySubject(arg0 string, arg1 ...nats_go.JSOpt) (string, error) { +func (m *MockJetStreamContext) StreamNameBySubject(arg0 string, arg1 ...nats.JSOpt) (string, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0} for _, a := range arg1 { @@ -761,7 +761,7 @@ func (mr *MockJetStreamContextMockRecorder) StreamNameBySubject(arg0 interface{} } // StreamNames mocks base method. -func (m *MockJetStreamContext) StreamNames(opts ...nats_go.JSOpt) <-chan string { +func (m *MockJetStreamContext) StreamNames(opts ...nats.JSOpt) <-chan string { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { @@ -779,14 +779,14 @@ func (mr *MockJetStreamContextMockRecorder) StreamNames(opts ...interface{}) *go } // Streams mocks base method. -func (m *MockJetStreamContext) Streams(opts ...nats_go.JSOpt) <-chan *nats_go.StreamInfo { +func (m *MockJetStreamContext) Streams(opts ...nats.JSOpt) <-chan *nats.StreamInfo { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Streams", varargs...) - ret0, _ := ret[0].(<-chan *nats_go.StreamInfo) + ret0, _ := ret[0].(<-chan *nats.StreamInfo) return ret0 } @@ -797,14 +797,14 @@ func (mr *MockJetStreamContextMockRecorder) Streams(opts ...interface{}) *gomock } // StreamsInfo mocks base method. -func (m *MockJetStreamContext) StreamsInfo(opts ...nats_go.JSOpt) <-chan *nats_go.StreamInfo { +func (m *MockJetStreamContext) StreamsInfo(opts ...nats.JSOpt) <-chan *nats.StreamInfo { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "StreamsInfo", varargs...) - ret0, _ := ret[0].(<-chan *nats_go.StreamInfo) + ret0, _ := ret[0].(<-chan *nats.StreamInfo) return ret0 } @@ -815,14 +815,14 @@ func (mr *MockJetStreamContextMockRecorder) StreamsInfo(opts ...interface{}) *go } // Subscribe mocks base method. -func (m *MockJetStreamContext) Subscribe(subj string, cb nats_go.MsgHandler, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) Subscribe(subj string, cb nats.MsgHandler, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj, cb} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Subscribe", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -835,14 +835,14 @@ func (mr *MockJetStreamContextMockRecorder) Subscribe(subj, cb interface{}, opts } // SubscribeSync mocks base method. -func (m *MockJetStreamContext) SubscribeSync(subj string, opts ...nats_go.SubOpt) (*nats_go.Subscription, error) { +func (m *MockJetStreamContext) SubscribeSync(subj string, opts ...nats.SubOpt) (*nats.Subscription, error) { m.ctrl.T.Helper() varargs := []interface{}{subj} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "SubscribeSync", varargs...) - ret0, _ := ret[0].(*nats_go.Subscription) + ret0, _ := ret[0].(*nats.Subscription) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -855,14 +855,14 @@ func (mr *MockJetStreamContextMockRecorder) SubscribeSync(subj interface{}, opts } // UpdateConsumer mocks base method. -func (m *MockJetStreamContext) UpdateConsumer(stream string, cfg *nats_go.ConsumerConfig, opts ...nats_go.JSOpt) (*nats_go.ConsumerInfo, error) { +func (m *MockJetStreamContext) UpdateConsumer(stream string, cfg *nats.ConsumerConfig, opts ...nats.JSOpt) (*nats.ConsumerInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{stream, cfg} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "UpdateConsumer", varargs...) - ret0, _ := ret[0].(*nats_go.ConsumerInfo) + ret0, _ := ret[0].(*nats.ConsumerInfo) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -875,14 +875,14 @@ func (mr *MockJetStreamContextMockRecorder) UpdateConsumer(stream, cfg interface } // UpdateStream mocks base method. -func (m *MockJetStreamContext) UpdateStream(cfg *nats_go.StreamConfig, opts ...nats_go.JSOpt) (*nats_go.StreamInfo, error) { +func (m *MockJetStreamContext) UpdateStream(cfg *nats.StreamConfig, opts ...nats.JSOpt) (*nats.StreamInfo, error) { m.ctrl.T.Helper() varargs := []interface{}{cfg} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "UpdateStream", varargs...) - ret0, _ := ret[0].(*nats_go.StreamInfo) + ret0, _ := ret[0].(*nats.StreamInfo) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/go.mod b/go.mod index dd598b0123..3ae0615456 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/chromedp/chromedp v0.9.1 github.com/deepmap/oapi-codegen v1.13.0 github.com/golang-jwt/jwt v3.2.2+incompatible + github.com/golang/mock v1.1.1 github.com/goodsign/monday v1.0.1 github.com/google/uuid v1.3.0 github.com/hashicorp/vault/api v1.9.2 diff --git a/golden_hammer/module.go b/golden_hammer/module.go index d3d158736a..1476f4dd5c 100644 --- a/golden_hammer/module.go +++ b/golden_hammer/module.go @@ -28,7 +28,7 @@ import ( "github.com/nuts-foundation/nuts-node/golden_hammer/log" "github.com/nuts-foundation/nuts-node/network/transport" "github.com/nuts-foundation/nuts-node/vcr" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/didservice" "github.com/nuts-foundation/nuts-node/vdr/didstore" "github.com/nuts-foundation/nuts-node/vdr/types" @@ -225,7 +225,7 @@ func (h *GoldenHammer) listDocumentToFix() ([]did.Document, error) { func (h *GoldenHammer) tryResolveURL(id did.DID) (*url.URL, error) { // TLSIdentifierResolver looks at TLS certificate to resolve OpenID4VCI Identifiers. - tlsIDResolver := oidc4vci.NewTLSIdentifierResolver(oidc4vci.NoopIdentifierResolver{}, h.tlsConfig) + tlsIDResolver := openid4vci.NewTLSIdentifierResolver(openid4vci.NoopIdentifierResolver{}, h.tlsConfig) identifier, err := tlsIDResolver.Resolve(id) if err != nil { return nil, err diff --git a/golden_hammer/module_test.go b/golden_hammer/module_test.go index 8b24f99bf5..54b6489d2e 100644 --- a/golden_hammer/module_test.go +++ b/golden_hammer/module_test.go @@ -28,7 +28,7 @@ import ( "github.com/nuts-foundation/nuts-node/network/transport" "github.com/nuts-foundation/nuts-node/test" "github.com/nuts-foundation/nuts-node/test/pki" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/didservice" "github.com/nuts-foundation/nuts-node/vdr/didstore" "github.com/nuts-foundation/nuts-node/vdr/types" @@ -103,7 +103,7 @@ func TestGoldenHammer_Fix(t *testing.T) { serverURL, _ := url.Parse(tlsServer.URL) expectedBaseURL, _ := url.Parse("https://localhost:" + serverURL.Port()) serverPort, _ := strconv.Atoi(serverURL.Port()) - oidc4vci.SetTLSIdentifierResolverPort(t, serverPort) + openid4vci.SetTLSIdentifierResolverPort(t, serverPort) defer tlsServer.Close() t.Run("nothing to fix", func(t *testing.T) { diff --git a/http/echo_mock.go b/http/echo_mock.go index fc52a3ca7f..1e1beb9eaa 100644 --- a/http/echo_mock.go +++ b/http/echo_mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - v4 "github.com/labstack/echo/v4" + echo "github.com/labstack/echo/v4" gomock "go.uber.org/mock/gomock" ) @@ -36,14 +36,14 @@ func (m *MockEchoServer) EXPECT() *MockEchoServerMockRecorder { } // Add mocks base method. -func (m *MockEchoServer) Add(method, path string, handler v4.HandlerFunc, middleware ...v4.MiddlewareFunc) *v4.Route { +func (m *MockEchoServer) Add(method, path string, handler echo.HandlerFunc, middleware ...echo.MiddlewareFunc) *echo.Route { m.ctrl.T.Helper() varargs := []interface{}{method, path, handler} for _, a := range middleware { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Add", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -55,14 +55,14 @@ func (mr *MockEchoServerMockRecorder) Add(method, path, handler interface{}, mid } // CONNECT mocks base method. -func (m_2 *MockEchoServer) CONNECT(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "CONNECT", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -74,14 +74,14 @@ func (mr *MockEchoServerMockRecorder) CONNECT(path, h interface{}, m ...interfac } // DELETE mocks base method. -func (m_2 *MockEchoServer) DELETE(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "DELETE", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -93,14 +93,14 @@ func (mr *MockEchoServerMockRecorder) DELETE(path, h interface{}, m ...interface } // GET mocks base method. -func (m_2 *MockEchoServer) GET(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "GET", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -112,14 +112,14 @@ func (mr *MockEchoServerMockRecorder) GET(path, h interface{}, m ...interface{}) } // HEAD mocks base method. -func (m_2 *MockEchoServer) HEAD(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "HEAD", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -131,14 +131,14 @@ func (mr *MockEchoServerMockRecorder) HEAD(path, h interface{}, m ...interface{} } // OPTIONS mocks base method. -func (m_2 *MockEchoServer) OPTIONS(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "OPTIONS", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -150,14 +150,14 @@ func (mr *MockEchoServerMockRecorder) OPTIONS(path, h interface{}, m ...interfac } // PATCH mocks base method. -func (m_2 *MockEchoServer) PATCH(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PATCH", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -169,14 +169,14 @@ func (mr *MockEchoServerMockRecorder) PATCH(path, h interface{}, m ...interface{ } // POST mocks base method. -func (m_2 *MockEchoServer) POST(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "POST", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -188,14 +188,14 @@ func (mr *MockEchoServerMockRecorder) POST(path, h interface{}, m ...interface{} } // PUT mocks base method. -func (m_2 *MockEchoServer) PUT(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "PUT", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -235,14 +235,14 @@ func (mr *MockEchoServerMockRecorder) Start(address interface{}) *gomock.Call { } // TRACE mocks base method. -func (m_2 *MockEchoServer) TRACE(path string, h v4.HandlerFunc, m ...v4.MiddlewareFunc) *v4.Route { +func (m_2 *MockEchoServer) TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route { m_2.ctrl.T.Helper() varargs := []interface{}{path, h} for _, a := range m { varargs = append(varargs, a) } ret := m_2.ctrl.Call(m_2, "TRACE", varargs...) - ret0, _ := ret[0].(*v4.Route) + ret0, _ := ret[0].(*echo.Route) return ret0 } @@ -254,7 +254,7 @@ func (mr *MockEchoServerMockRecorder) TRACE(path, h interface{}, m ...interface{ } // Use mocks base method. -func (m *MockEchoServer) Use(middleware ...v4.MiddlewareFunc) { +func (m *MockEchoServer) Use(middleware ...echo.MiddlewareFunc) { m.ctrl.T.Helper() varargs := []interface{}{} for _, a := range middleware { diff --git a/makefile b/makefile index dc6599f9ea..89c5eac204 100644 --- a/makefile +++ b/makefile @@ -38,11 +38,11 @@ gen-mocks: mockgen -destination=vcr/mock.go -package=vcr -source=vcr/interface.go mockgen -destination=vcr/holder/mock.go -package=holder -source=vcr/holder/interface.go mockgen -destination=vcr/issuer/mock.go -package=issuer -source=vcr/issuer/interface.go - mockgen -destination=vcr/oidc4vci/issuer_client_mock.go -package=oidc4vci -source=vcr/oidc4vci/issuer_client.go - mockgen -destination=vcr/oidc4vci/wallet_client_mock.go -package=oidc4vci -source=vcr/oidc4vci/wallet_client.go + mockgen -destination=vcr/openid4vci/issuer_client_mock.go -package=openid4vci -source=vcr/openid4vci/issuer_client.go + mockgen -destination=vcr/openid4vci/wallet_client_mock.go -package=openid4vci -source=vcr/openid4vci/wallet_client.go mockgen -destination=vcr/issuer/openid_mock.go -package=issuer -source=vcr/issuer/openid.go mockgen -destination=vcr/holder/openid_mock.go -package=holder -source=vcr/holder/openid.go - mockgen -destination=vcr/oidc4vci/identifiers_mock.go -package=oidc4vci -source=vcr/oidc4vci/identifiers.go + mockgen -destination=vcr/openid4vci/identifiers_mock.go -package=openid4vci -source=vcr/openid4vci/identifiers.go mockgen -destination=vcr/signature/mock.go -package=signature -source=vcr/signature/signature.go mockgen -destination=vcr/verifier/mock.go -package=verifier -source=vcr/verifier/interface.go mockgen -destination=vdr/ambassador_mock.go -package=vdr -source=vdr/ambassador.go @@ -55,7 +55,7 @@ gen-api: oapi-codegen --config codegen/configs/vdr_v1.yaml docs/_static/vdr/v1.yaml | gofmt > vdr/api/v1/generated.go oapi-codegen --config codegen/configs/network_v1.yaml docs/_static/network/v1.yaml | gofmt > network/api/v1/generated.go oapi-codegen --config codegen/configs/vcr_v2.yaml docs/_static/vcr/vcr_v2.yaml | gofmt > vcr/api/vcr/v2/generated.go - oapi-codegen --config codegen/configs/vcr_oidc4vci_v0.yaml docs/_static/vcr/oidc4vci_v0.yaml | gofmt > vcr/api/oidc4vci/v0/generated.go + oapi-codegen --config codegen/configs/vcr_openid4vci_v0.yaml docs/_static/vcr/openid4vci_v0.yaml | gofmt > vcr/api/openid4vci/v0/generated.go oapi-codegen --config codegen/configs/auth_v1.yaml docs/_static/auth/v1.yaml | gofmt > auth/api/auth/v1/generated.go oapi-codegen --config codegen/configs/auth_client_v1.yaml docs/_static/auth/v1.yaml | gofmt > auth/api/auth/v1/client/generated.go oapi-codegen --config codegen/configs/auth_employeeid.yaml auth/services/selfsigned/web/spec.yaml | gofmt > auth/services/selfsigned/web/generated.go diff --git a/network/dag/mock.go b/network/dag/mock.go index 3a1c9bec37..5fdfcd2669 100644 --- a/network/dag/mock.go +++ b/network/dag/mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - go_stoabs "github.com/nuts-foundation/go-stoabs" + stoabs "github.com/nuts-foundation/go-stoabs" core "github.com/nuts-foundation/nuts-node/core" hash "github.com/nuts-foundation/nuts-node/crypto/hash" tree "github.com/nuts-foundation/nuts-node/network/dag/tree" @@ -338,7 +338,7 @@ func (m *MockPayloadStore) EXPECT() *MockPayloadStoreMockRecorder { } // isPayloadPresent mocks base method. -func (m *MockPayloadStore) isPayloadPresent(tx go_stoabs.ReadTx, payloadHash hash.SHA256Hash) bool { +func (m *MockPayloadStore) isPayloadPresent(tx stoabs.ReadTx, payloadHash hash.SHA256Hash) bool { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "isPayloadPresent", tx, payloadHash) ret0, _ := ret[0].(bool) @@ -352,7 +352,7 @@ func (mr *MockPayloadStoreMockRecorder) isPayloadPresent(tx, payloadHash interfa } // readPayload mocks base method. -func (m *MockPayloadStore) readPayload(tx go_stoabs.ReadTx, payloadHash hash.SHA256Hash) ([]byte, error) { +func (m *MockPayloadStore) readPayload(tx stoabs.ReadTx, payloadHash hash.SHA256Hash) ([]byte, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "readPayload", tx, payloadHash) ret0, _ := ret[0].([]byte) @@ -367,7 +367,7 @@ func (mr *MockPayloadStoreMockRecorder) readPayload(tx, payloadHash interface{}) } // writePayload mocks base method. -func (m *MockPayloadStore) writePayload(tx go_stoabs.WriteTx, payloadHash hash.SHA256Hash, data []byte) error { +func (m *MockPayloadStore) writePayload(tx stoabs.WriteTx, payloadHash hash.SHA256Hash, data []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "writePayload", tx, payloadHash, data) ret0, _ := ret[0].(error) diff --git a/network/dag/notifier_mock.go b/network/dag/notifier_mock.go index 267152bbd5..19287da987 100644 --- a/network/dag/notifier_mock.go +++ b/network/dag/notifier_mock.go @@ -7,7 +7,7 @@ package dag import ( reflect "reflect" - go_stoabs "github.com/nuts-foundation/go-stoabs" + stoabs "github.com/nuts-foundation/go-stoabs" hash "github.com/nuts-foundation/nuts-node/crypto/hash" gomock "go.uber.org/mock/gomock" ) @@ -119,7 +119,7 @@ func (mr *MockNotifierMockRecorder) Run() *gomock.Call { } // Save mocks base method. -func (m *MockNotifier) Save(tx go_stoabs.WriteTx, event Event) error { +func (m *MockNotifier) Save(tx stoabs.WriteTx, event Event) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Save", tx, event) ret0, _ := ret[0].(error) diff --git a/storage/mock.go b/storage/mock.go index c7f85c0e8a..3f2c3e2d2e 100644 --- a/storage/mock.go +++ b/storage/mock.go @@ -7,7 +7,7 @@ package storage import ( reflect "reflect" - go_stoabs "github.com/nuts-foundation/go-stoabs" + stoabs "github.com/nuts-foundation/go-stoabs" core "github.com/nuts-foundation/nuts-node/core" gomock "go.uber.org/mock/gomock" ) @@ -115,10 +115,10 @@ func (m *MockProvider) EXPECT() *MockProviderMockRecorder { } // GetKVStore mocks base method. -func (m *MockProvider) GetKVStore(name string, class Class) (go_stoabs.KVStore, error) { +func (m *MockProvider) GetKVStore(name string, class Class) (stoabs.KVStore, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetKVStore", name, class) - ret0, _ := ret[0].(go_stoabs.KVStore) + ret0, _ := ret[0].(stoabs.KVStore) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -165,10 +165,10 @@ func (mr *MockdatabaseMockRecorder) close() *gomock.Call { } // createStore mocks base method. -func (m *Mockdatabase) createStore(moduleName, storeName string) (go_stoabs.KVStore, error) { +func (m *Mockdatabase) createStore(moduleName, storeName string) (stoabs.KVStore, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "createStore", moduleName, storeName) - ret0, _ := ret[0].(go_stoabs.KVStore) + ret0, _ := ret[0].(stoabs.KVStore) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/vcr/api/oidc4vci/v0/api.go b/vcr/api/openid4vci/v0/api.go similarity index 71% rename from vcr/api/oidc4vci/v0/api.go rename to vcr/api/openid4vci/v0/api.go index cc8cf32bc8..06f3d20566 100644 --- a/vcr/api/oidc4vci/v0/api.go +++ b/vcr/api/openid4vci/v0/api.go @@ -27,33 +27,33 @@ import ( "github.com/nuts-foundation/nuts-node/core" "github.com/nuts-foundation/nuts-node/vcr" "github.com/nuts-foundation/nuts-node/vcr/log" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/types" "net/http" ) // ProviderMetadata is the metadata of the OpenID Connect provider -type ProviderMetadata = oidc4vci.ProviderMetadata +type ProviderMetadata = openid4vci.ProviderMetadata -// CredentialIssuerMetadata is the metadata of the OIDC4VCI credential issuer -type CredentialIssuerMetadata = oidc4vci.CredentialIssuerMetadata +// CredentialIssuerMetadata is the metadata of the OpenID4VCI credential issuer +type CredentialIssuerMetadata = openid4vci.CredentialIssuerMetadata // TokenResponse is the response of the OpenID Connect token endpoint -type TokenResponse = oidc4vci.TokenResponse +type TokenResponse = openid4vci.TokenResponse -// CredentialOfferResponse is the response to the OIDC4VCI credential offer -type CredentialOfferResponse = oidc4vci.CredentialOfferResponse +// CredentialOfferResponse is the response to the OpenID4VCI credential offer +type CredentialOfferResponse = openid4vci.CredentialOfferResponse -// CredentialRequest is the request to the OIDC4VCI credential request endpoint -type CredentialRequest = oidc4vci.CredentialRequest +// CredentialRequest is the request to the OpenID4VCI credential request endpoint +type CredentialRequest = openid4vci.CredentialRequest -// CredentialResponse is the response of the OIDC4VCI credential request endpoint -type CredentialResponse = oidc4vci.CredentialResponse +// CredentialResponse is the response of the OpenID4VCI credential request endpoint +type CredentialResponse = openid4vci.CredentialResponse // OAuth2ClientMetadata is the metadata of the OAuth2 client -type OAuth2ClientMetadata = oidc4vci.OAuth2ClientMetadata +type OAuth2ClientMetadata = openid4vci.OAuth2ClientMetadata -type ErrorResponse = oidc4vci.Error +type ErrorResponse = openid4vci.Error var _ core.ErrorWriter = (*protocolErrorWriter)(nil) @@ -62,11 +62,11 @@ type protocolErrorWriter struct { func (p protocolErrorWriter) Write(echoContext echo.Context, _ int, _ string, err error) error { // If not already a protocol error, make it one (code=server_error). - var protocolError oidc4vci.Error + var protocolError openid4vci.Error if !errors.As(err, &protocolError) { - protocolError = oidc4vci.Error{ + protocolError = openid4vci.Error{ Err: err, - Code: oidc4vci.ServerError, + Code: openid4vci.ServerError, StatusCode: http.StatusInternalServerError, } } @@ -81,7 +81,7 @@ func (p protocolErrorWriter) Write(echoContext echo.Context, _ int, _ string, er var _ StrictServerInterface = (*Wrapper)(nil) -// Wrapper wraps the OIDC4VCI API +// Wrapper wraps the OpenID4VCI API type Wrapper struct { VCR vcr.VCR DocumentOwner types.DocumentOwner @@ -93,22 +93,22 @@ func (w Wrapper) Routes(router core.EchoRouter) { func(f StrictHandlerFunc, operationID string) StrictHandlerFunc { return func(ctx echo.Context, request interface{}) (response interface{}, err error) { ctx.Set(core.OperationIDContextKey, operationID) - ctx.Set(core.ModuleNameContextKey, vcr.ModuleName+"/OIDC4VCI") + ctx.Set(core.ModuleNameContextKey, vcr.ModuleName+"/OpenID4VCI") ctx.Set(core.ErrorWriterContextKey, &protocolErrorWriter{}) return f(ctx, request) } }, func(f StrictHandlerFunc, operationID string) StrictHandlerFunc { return func(ctx echo.Context, args interface{}) (interface{}, error) { - if !w.VCR.OIDC4VCIEnabled() { - log.Logger().Info("Someone tried to access disabled OIDC4VCI API endpoint.") + if !w.VCR.OpenID4VCIEnabled() { + log.Logger().Info("Someone tried to access disabled OpenID4VCI API endpoint.") return nil, core.NotFoundError("openid4vci is disabled") } return f(ctx, args) } }, func(f StrictHandlerFunc, operationID string) StrictHandlerFunc { - return audit.StrictMiddleware(f, vcr.ModuleName+"/OIDC4VCI", operationID) + return audit.StrictMiddleware(f, vcr.ModuleName+"/OpenID4VCI", operationID) }, })) } @@ -117,24 +117,24 @@ func (w Wrapper) Routes(router core.EchoRouter) { func (w Wrapper) validateDIDIsOwned(ctx context.Context, subjectDID string) (did.DID, error) { parsedDID, err := did.ParseDID(subjectDID) if err != nil { - return did.DID{}, oidc4vci.Error{ + return did.DID{}, openid4vci.Error{ Err: err, - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusNotFound, } } isOwner, err := w.DocumentOwner.IsOwner(ctx, *parsedDID) if err != nil { - return did.DID{}, oidc4vci.Error{ + return did.DID{}, openid4vci.Error{ Err: err, - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusNotFound, } } if !isOwner { - return did.DID{}, oidc4vci.Error{ + return did.DID{}, openid4vci.Error{ Err: errors.New("DID is not owned by this node"), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusNotFound, } } diff --git a/vcr/api/oidc4vci/v0/api_test.go b/vcr/api/openid4vci/v0/api_test.go similarity index 90% rename from vcr/api/oidc4vci/v0/api_test.go rename to vcr/api/openid4vci/v0/api_test.go index fb077448ac..fbc6a8d987 100644 --- a/vcr/api/oidc4vci/v0/api_test.go +++ b/vcr/api/openid4vci/v0/api_test.go @@ -22,7 +22,7 @@ import ( "errors" "fmt" "github.com/labstack/echo/v4" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/sirupsen/logrus" logTest "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/assert" @@ -56,8 +56,8 @@ func Test_protocolErrorWriter_Write(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) echoContext := server.NewContext(req, rec) - err := protocolErrorWriter{}.Write(echoContext, 0, "", oidc4vci.Error{ - Code: oidc4vci.InvalidToken, + err := protocolErrorWriter{}.Write(echoContext, 0, "", openid4vci.Error{ + Code: openid4vci.InvalidToken, StatusCode: http.StatusBadRequest, }) @@ -74,9 +74,9 @@ func Test_protocolErrorWriter_Write(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) echoContext := server.NewContext(req, rec) - err := protocolErrorWriter{}.Write(echoContext, 0, "", fmt.Errorf("something went wrong: %w", oidc4vci.Error{ + err := protocolErrorWriter{}.Write(echoContext, 0, "", fmt.Errorf("something went wrong: %w", openid4vci.Error{ Err: errors.New("token has expired"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusBadRequest, })) @@ -93,8 +93,8 @@ func Test_protocolErrorWriter_Write(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) echoContext := server.NewContext(req, rec) - err := protocolErrorWriter{}.Write(echoContext, 0, "", oidc4vci.Error{ - Code: oidc4vci.InvalidToken, + err := protocolErrorWriter{}.Write(echoContext, 0, "", openid4vci.Error{ + Code: openid4vci.InvalidToken, }) require.NoError(t, err) diff --git a/vcr/api/oidc4vci/v0/generated.go b/vcr/api/openid4vci/v0/generated.go similarity index 85% rename from vcr/api/oidc4vci/v0/generated.go rename to vcr/api/openid4vci/v0/generated.go index 2e306f635e..f33b01f5d5 100644 --- a/vcr/api/oidc4vci/v0/generated.go +++ b/vcr/api/openid4vci/v0/generated.go @@ -41,23 +41,23 @@ type ServerInterface interface { // Get the OpenID Connect Provider metadata // (GET /n2n/identity/{did}/.well-known/oauth-authorization-server) GetOIDCProviderMetadata(ctx echo.Context, did string) error - // Get the OIDC4VCI Credential Issuer Metadata + // Get the OpenID4VCI Credential Issuer Metadata // (GET /n2n/identity/{did}/.well-known/openid-credential-issuer) - GetOIDC4VCIIssuerMetadata(ctx echo.Context, did string) error + GetOpenID4VCIIssuerMetadata(ctx echo.Context, did string) error // Get the HTTP headers which would be returned when executing a GET request. // (HEAD /n2n/identity/{did}/.well-known/openid-credential-issuer) - GetOIDC4VCIIssuerMetadataHeaders(ctx echo.Context, did string) error + GetOpenID4VCIIssuerMetadataHeaders(ctx echo.Context, did string) error // Get the OAuth2 Client Metadata // (GET /n2n/identity/{did}/.well-known/openid-credential-wallet) GetOAuth2ClientMetadata(ctx echo.Context, did string) error // Used by the wallet to request credentials - // (POST /n2n/identity/{did}/issuer/oidc4vci/credential) + // (POST /n2n/identity/{did}/issuer/openid4vci/credential) RequestCredential(ctx echo.Context, did string, params RequestCredentialParams) error // Used by the wallet to request an access token // (POST /n2n/identity/{did}/oidc/token) RequestAccessToken(ctx echo.Context, did string) error // Used by the issuer to offer credentials to the wallet - // (GET /n2n/identity/{did}/wallet/oidc4vci/credential_offer) + // (GET /n2n/identity/{did}/wallet/openid4vci/credential_offer) HandleCredentialOffer(ctx echo.Context, did string, params HandleCredentialOfferParams) error } @@ -82,8 +82,8 @@ func (w *ServerInterfaceWrapper) GetOIDCProviderMetadata(ctx echo.Context) error return err } -// GetOIDC4VCIIssuerMetadata converts echo context to params. -func (w *ServerInterfaceWrapper) GetOIDC4VCIIssuerMetadata(ctx echo.Context) error { +// GetOpenID4VCIIssuerMetadata converts echo context to params. +func (w *ServerInterfaceWrapper) GetOpenID4VCIIssuerMetadata(ctx echo.Context) error { var err error // ------------- Path parameter "did" ------------- var did string @@ -94,12 +94,12 @@ func (w *ServerInterfaceWrapper) GetOIDC4VCIIssuerMetadata(ctx echo.Context) err } // Invoke the callback with all the unmarshalled arguments - err = w.Handler.GetOIDC4VCIIssuerMetadata(ctx, did) + err = w.Handler.GetOpenID4VCIIssuerMetadata(ctx, did) return err } -// GetOIDC4VCIIssuerMetadataHeaders converts echo context to params. -func (w *ServerInterfaceWrapper) GetOIDC4VCIIssuerMetadataHeaders(ctx echo.Context) error { +// GetOpenID4VCIIssuerMetadataHeaders converts echo context to params. +func (w *ServerInterfaceWrapper) GetOpenID4VCIIssuerMetadataHeaders(ctx echo.Context) error { var err error // ------------- Path parameter "did" ------------- var did string @@ -110,7 +110,7 @@ func (w *ServerInterfaceWrapper) GetOIDC4VCIIssuerMetadataHeaders(ctx echo.Conte } // Invoke the callback with all the unmarshalled arguments - err = w.Handler.GetOIDC4VCIIssuerMetadataHeaders(ctx, did) + err = w.Handler.GetOpenID4VCIIssuerMetadataHeaders(ctx, did) return err } @@ -236,12 +236,12 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL } router.GET(baseURL+"/n2n/identity/:did/.well-known/oauth-authorization-server", wrapper.GetOIDCProviderMetadata) - router.GET(baseURL+"/n2n/identity/:did/.well-known/openid-credential-issuer", wrapper.GetOIDC4VCIIssuerMetadata) - router.HEAD(baseURL+"/n2n/identity/:did/.well-known/openid-credential-issuer", wrapper.GetOIDC4VCIIssuerMetadataHeaders) + router.GET(baseURL+"/n2n/identity/:did/.well-known/openid-credential-issuer", wrapper.GetOpenID4VCIIssuerMetadata) + router.HEAD(baseURL+"/n2n/identity/:did/.well-known/openid-credential-issuer", wrapper.GetOpenID4VCIIssuerMetadataHeaders) router.GET(baseURL+"/n2n/identity/:did/.well-known/openid-credential-wallet", wrapper.GetOAuth2ClientMetadata) - router.POST(baseURL+"/n2n/identity/:did/issuer/oidc4vci/credential", wrapper.RequestCredential) + router.POST(baseURL+"/n2n/identity/:did/issuer/openid4vci/credential", wrapper.RequestCredential) router.POST(baseURL+"/n2n/identity/:did/oidc/token", wrapper.RequestAccessToken) - router.GET(baseURL+"/n2n/identity/:did/wallet/oidc4vci/credential_offer", wrapper.HandleCredentialOffer) + router.GET(baseURL+"/n2n/identity/:did/wallet/openid4vci/credential_offer", wrapper.HandleCredentialOffer) } @@ -271,51 +271,51 @@ func (response GetOIDCProviderMetadata404JSONResponse) VisitGetOIDCProviderMetad return json.NewEncoder(w).Encode(response) } -type GetOIDC4VCIIssuerMetadataRequestObject struct { +type GetOpenID4VCIIssuerMetadataRequestObject struct { Did string `json:"did"` } -type GetOIDC4VCIIssuerMetadataResponseObject interface { - VisitGetOIDC4VCIIssuerMetadataResponse(w http.ResponseWriter) error +type GetOpenID4VCIIssuerMetadataResponseObject interface { + VisitGetOpenID4VCIIssuerMetadataResponse(w http.ResponseWriter) error } -type GetOIDC4VCIIssuerMetadata200JSONResponse CredentialIssuerMetadata +type GetOpenID4VCIIssuerMetadata200JSONResponse CredentialIssuerMetadata -func (response GetOIDC4VCIIssuerMetadata200JSONResponse) VisitGetOIDC4VCIIssuerMetadataResponse(w http.ResponseWriter) error { +func (response GetOpenID4VCIIssuerMetadata200JSONResponse) VisitGetOpenID4VCIIssuerMetadataResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } -type GetOIDC4VCIIssuerMetadata404JSONResponse ErrorResponse +type GetOpenID4VCIIssuerMetadata404JSONResponse ErrorResponse -func (response GetOIDC4VCIIssuerMetadata404JSONResponse) VisitGetOIDC4VCIIssuerMetadataResponse(w http.ResponseWriter) error { +func (response GetOpenID4VCIIssuerMetadata404JSONResponse) VisitGetOpenID4VCIIssuerMetadataResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(404) return json.NewEncoder(w).Encode(response) } -type GetOIDC4VCIIssuerMetadataHeadersRequestObject struct { +type GetOpenID4VCIIssuerMetadataHeadersRequestObject struct { Did string `json:"did"` } -type GetOIDC4VCIIssuerMetadataHeadersResponseObject interface { - VisitGetOIDC4VCIIssuerMetadataHeadersResponse(w http.ResponseWriter) error +type GetOpenID4VCIIssuerMetadataHeadersResponseObject interface { + VisitGetOpenID4VCIIssuerMetadataHeadersResponse(w http.ResponseWriter) error } -type GetOIDC4VCIIssuerMetadataHeadersdefaultResponseHeaders struct { +type GetOpenID4VCIIssuerMetadataHeadersdefaultResponseHeaders struct { ContentType string } -type GetOIDC4VCIIssuerMetadataHeadersdefaultResponse struct { - Headers GetOIDC4VCIIssuerMetadataHeadersdefaultResponseHeaders +type GetOpenID4VCIIssuerMetadataHeadersdefaultResponse struct { + Headers GetOpenID4VCIIssuerMetadataHeadersdefaultResponseHeaders StatusCode int } -func (response GetOIDC4VCIIssuerMetadataHeadersdefaultResponse) VisitGetOIDC4VCIIssuerMetadataHeadersResponse(w http.ResponseWriter) error { +func (response GetOpenID4VCIIssuerMetadataHeadersdefaultResponse) VisitGetOpenID4VCIIssuerMetadataHeadersResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", fmt.Sprint(response.Headers.ContentType)) w.WriteHeader(response.StatusCode) return nil @@ -479,23 +479,23 @@ type StrictServerInterface interface { // Get the OpenID Connect Provider metadata // (GET /n2n/identity/{did}/.well-known/oauth-authorization-server) GetOIDCProviderMetadata(ctx context.Context, request GetOIDCProviderMetadataRequestObject) (GetOIDCProviderMetadataResponseObject, error) - // Get the OIDC4VCI Credential Issuer Metadata + // Get the OpenID4VCI Credential Issuer Metadata // (GET /n2n/identity/{did}/.well-known/openid-credential-issuer) - GetOIDC4VCIIssuerMetadata(ctx context.Context, request GetOIDC4VCIIssuerMetadataRequestObject) (GetOIDC4VCIIssuerMetadataResponseObject, error) + GetOpenID4VCIIssuerMetadata(ctx context.Context, request GetOpenID4VCIIssuerMetadataRequestObject) (GetOpenID4VCIIssuerMetadataResponseObject, error) // Get the HTTP headers which would be returned when executing a GET request. // (HEAD /n2n/identity/{did}/.well-known/openid-credential-issuer) - GetOIDC4VCIIssuerMetadataHeaders(ctx context.Context, request GetOIDC4VCIIssuerMetadataHeadersRequestObject) (GetOIDC4VCIIssuerMetadataHeadersResponseObject, error) + GetOpenID4VCIIssuerMetadataHeaders(ctx context.Context, request GetOpenID4VCIIssuerMetadataHeadersRequestObject) (GetOpenID4VCIIssuerMetadataHeadersResponseObject, error) // Get the OAuth2 Client Metadata // (GET /n2n/identity/{did}/.well-known/openid-credential-wallet) GetOAuth2ClientMetadata(ctx context.Context, request GetOAuth2ClientMetadataRequestObject) (GetOAuth2ClientMetadataResponseObject, error) // Used by the wallet to request credentials - // (POST /n2n/identity/{did}/issuer/oidc4vci/credential) + // (POST /n2n/identity/{did}/issuer/openid4vci/credential) RequestCredential(ctx context.Context, request RequestCredentialRequestObject) (RequestCredentialResponseObject, error) // Used by the wallet to request an access token // (POST /n2n/identity/{did}/oidc/token) RequestAccessToken(ctx context.Context, request RequestAccessTokenRequestObject) (RequestAccessTokenResponseObject, error) // Used by the issuer to offer credentials to the wallet - // (GET /n2n/identity/{did}/wallet/oidc4vci/credential_offer) + // (GET /n2n/identity/{did}/wallet/openid4vci/credential_offer) HandleCredentialOffer(ctx context.Context, request HandleCredentialOfferRequestObject) (HandleCredentialOfferResponseObject, error) } @@ -536,50 +536,50 @@ func (sh *strictHandler) GetOIDCProviderMetadata(ctx echo.Context, did string) e return nil } -// GetOIDC4VCIIssuerMetadata operation middleware -func (sh *strictHandler) GetOIDC4VCIIssuerMetadata(ctx echo.Context, did string) error { - var request GetOIDC4VCIIssuerMetadataRequestObject +// GetOpenID4VCIIssuerMetadata operation middleware +func (sh *strictHandler) GetOpenID4VCIIssuerMetadata(ctx echo.Context, did string) error { + var request GetOpenID4VCIIssuerMetadataRequestObject request.Did = did handler := func(ctx echo.Context, request interface{}) (interface{}, error) { - return sh.ssi.GetOIDC4VCIIssuerMetadata(ctx.Request().Context(), request.(GetOIDC4VCIIssuerMetadataRequestObject)) + return sh.ssi.GetOpenID4VCIIssuerMetadata(ctx.Request().Context(), request.(GetOpenID4VCIIssuerMetadataRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetOIDC4VCIIssuerMetadata") + handler = middleware(handler, "GetOpenID4VCIIssuerMetadata") } response, err := handler(ctx, request) if err != nil { return err - } else if validResponse, ok := response.(GetOIDC4VCIIssuerMetadataResponseObject); ok { - return validResponse.VisitGetOIDC4VCIIssuerMetadataResponse(ctx.Response()) + } else if validResponse, ok := response.(GetOpenID4VCIIssuerMetadataResponseObject); ok { + return validResponse.VisitGetOpenID4VCIIssuerMetadataResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("Unexpected response type: %T", response) } return nil } -// GetOIDC4VCIIssuerMetadataHeaders operation middleware -func (sh *strictHandler) GetOIDC4VCIIssuerMetadataHeaders(ctx echo.Context, did string) error { - var request GetOIDC4VCIIssuerMetadataHeadersRequestObject +// GetOpenID4VCIIssuerMetadataHeaders operation middleware +func (sh *strictHandler) GetOpenID4VCIIssuerMetadataHeaders(ctx echo.Context, did string) error { + var request GetOpenID4VCIIssuerMetadataHeadersRequestObject request.Did = did handler := func(ctx echo.Context, request interface{}) (interface{}, error) { - return sh.ssi.GetOIDC4VCIIssuerMetadataHeaders(ctx.Request().Context(), request.(GetOIDC4VCIIssuerMetadataHeadersRequestObject)) + return sh.ssi.GetOpenID4VCIIssuerMetadataHeaders(ctx.Request().Context(), request.(GetOpenID4VCIIssuerMetadataHeadersRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetOIDC4VCIIssuerMetadataHeaders") + handler = middleware(handler, "GetOpenID4VCIIssuerMetadataHeaders") } response, err := handler(ctx, request) if err != nil { return err - } else if validResponse, ok := response.(GetOIDC4VCIIssuerMetadataHeadersResponseObject); ok { - return validResponse.VisitGetOIDC4VCIIssuerMetadataHeadersResponse(ctx.Response()) + } else if validResponse, ok := response.(GetOpenID4VCIIssuerMetadataHeadersResponseObject); ok { + return validResponse.VisitGetOpenID4VCIIssuerMetadataHeadersResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("Unexpected response type: %T", response) } diff --git a/vcr/api/oidc4vci/v0/holder.go b/vcr/api/openid4vci/v0/holder.go similarity index 91% rename from vcr/api/oidc4vci/v0/holder.go rename to vcr/api/openid4vci/v0/holder.go index 09ca4eac7d..4dfeeb85d2 100644 --- a/vcr/api/oidc4vci/v0/holder.go +++ b/vcr/api/openid4vci/v0/holder.go @@ -23,7 +23,7 @@ import ( "encoding/json" "github.com/nuts-foundation/nuts-node/core" "github.com/nuts-foundation/nuts-node/vcr/holder" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" ) func (w Wrapper) getHolderHandler(ctx context.Context, holder string) (holder.OpenIDHandler, error) { @@ -50,7 +50,7 @@ func (w Wrapper) HandleCredentialOffer(ctx context.Context, request HandleCreden return nil, err } - offer := oidc4vci.CredentialOffer{} + offer := openid4vci.CredentialOffer{} if err := json.Unmarshal([]byte(request.Params.CredentialOffer), &offer); err != nil { // Note: error responses on the Credential Offer Endpoint are not specified in the OpenID4VCI spec. return nil, core.InvalidInputError("unable to unmarshal credential_offer: %w", err) @@ -59,5 +59,5 @@ func (w Wrapper) HandleCredentialOffer(ctx context.Context, request HandleCreden if err != nil { return nil, err } - return HandleCredentialOffer200JSONResponse{Status: oidc4vci.CredentialOfferStatusReceived}, nil + return HandleCredentialOffer200JSONResponse{Status: openid4vci.CredentialOfferStatusReceived}, nil } diff --git a/vcr/api/oidc4vci/v0/holder_test.go b/vcr/api/openid4vci/v0/holder_test.go similarity index 92% rename from vcr/api/oidc4vci/v0/holder_test.go rename to vcr/api/openid4vci/v0/holder_test.go index 9e094841fc..ae4433397c 100644 --- a/vcr/api/oidc4vci/v0/holder_test.go +++ b/vcr/api/openid4vci/v0/holder_test.go @@ -25,7 +25,7 @@ import ( "github.com/nuts-foundation/go-did/did" "github.com/nuts-foundation/nuts-node/vcr" "github.com/nuts-foundation/nuts-node/vcr/holder" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -40,7 +40,7 @@ func TestWrapper_GetOAuth2ClientMetadata(t *testing.T) { t.Run("ok", func(t *testing.T) { ctrl := gomock.NewController(t) wallet := holder.NewMockOpenIDHandler(ctrl) - wallet.EXPECT().Metadata().Return(oidc4vci.OAuth2ClientMetadata{CredentialOfferEndpoint: "endpoint"}) + wallet.EXPECT().Metadata().Return(openid4vci.OAuth2ClientMetadata{CredentialOfferEndpoint: "endpoint"}) documentOwner := types.NewMockDocumentOwner(ctrl) documentOwner.EXPECT().IsOwner(gomock.Any(), gomock.Any()).Return(true, nil) service := vcr.NewMockVCR(ctrl) @@ -80,12 +80,12 @@ func TestWrapper_HandleCredentialOffer(t *testing.T) { service.EXPECT().GetOpenIDHolder(gomock.Any(), holderDID).Return(wallet, nil) api := Wrapper{VCR: service, DocumentOwner: documentOwner} - credentialOffer := oidc4vci.CredentialOffer{ + credentialOffer := openid4vci.CredentialOffer{ CredentialIssuer: issuerDID.String(), - Credentials: []oidc4vci.OfferedCredential{ + Credentials: []openid4vci.OfferedCredential{ { - Format: oidc4vci.VerifiableCredentialJSONLDFormat, - CredentialDefinition: &oidc4vci.CredentialDefinition{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, + CredentialDefinition: &openid4vci.CredentialDefinition{ Context: []ssi.URI{ssi.MustParseURI("a"), ssi.MustParseURI("b")}, Type: []ssi.URI{ssi.MustParseURI("VerifiableCredential"), ssi.MustParseURI("HumanCredential")}, }, diff --git a/vcr/api/oidc4vci/v0/issuer.go b/vcr/api/openid4vci/v0/issuer.go similarity index 75% rename from vcr/api/oidc4vci/v0/issuer.go rename to vcr/api/openid4vci/v0/issuer.go index c77dd77111..292b9eda05 100644 --- a/vcr/api/oidc4vci/v0/issuer.go +++ b/vcr/api/openid4vci/v0/issuer.go @@ -24,7 +24,7 @@ import ( "errors" "fmt" "github.com/nuts-foundation/nuts-node/vcr/issuer" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "net/http" "strings" ) @@ -37,19 +37,19 @@ func (w Wrapper) getIssuerHandler(ctx context.Context, issuer string) (issuer.Op return w.VCR.GetOpenIDIssuer(ctx, issuerDID) } -// GetOIDC4VCIIssuerMetadata returns the OIDC4VCI credential issuer metadata for the given DID. -func (w Wrapper) GetOIDC4VCIIssuerMetadata(ctx context.Context, request GetOIDC4VCIIssuerMetadataRequestObject) (GetOIDC4VCIIssuerMetadataResponseObject, error) { +// GetOpenID4VCIIssuerMetadata returns the OpenID4VCI credential issuer metadata for the given DID. +func (w Wrapper) GetOpenID4VCIIssuerMetadata(ctx context.Context, request GetOpenID4VCIIssuerMetadataRequestObject) (GetOpenID4VCIIssuerMetadataResponseObject, error) { issuer, err := w.getIssuerHandler(ctx, request.Did) if err != nil { return nil, err } - return GetOIDC4VCIIssuerMetadata200JSONResponse(issuer.Metadata()), nil + return GetOpenID4VCIIssuerMetadata200JSONResponse(issuer.Metadata()), nil } -// GetOIDC4VCIIssuerMetadataHeaders returns the OIDC4VCI credential issuer metadata headers for the given DID. -func (w Wrapper) GetOIDC4VCIIssuerMetadataHeaders(ctx context.Context, request GetOIDC4VCIIssuerMetadataHeadersRequestObject) (GetOIDC4VCIIssuerMetadataHeadersResponseObject, error) { - response := GetOIDC4VCIIssuerMetadataHeadersdefaultResponse{ - Headers: GetOIDC4VCIIssuerMetadataHeadersdefaultResponseHeaders{ +// GetOpenID4VCIIssuerMetadataHeaders returns the OpenID4VCI credential issuer metadata headers for the given DID. +func (w Wrapper) GetOpenID4VCIIssuerMetadataHeaders(ctx context.Context, request GetOpenID4VCIIssuerMetadataHeadersRequestObject) (GetOpenID4VCIIssuerMetadataHeadersResponseObject, error) { + response := GetOpenID4VCIIssuerMetadataHeadersdefaultResponse{ + Headers: GetOpenID4VCIIssuerMetadataHeadersdefaultResponseHeaders{ ContentType: "application/json", }, } @@ -79,17 +79,17 @@ func (w Wrapper) RequestCredential(ctx context.Context, request RequestCredentia } if request.Params.Authorization == nil { - return nil, oidc4vci.Error{ + return nil, openid4vci.Error{ Err: errors.New("missing authorization header"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusUnauthorized, } } authHeader := *request.Params.Authorization if len(authHeader) < 7 || strings.ToLower(authHeader[:7]) != "bearer " { - return nil, oidc4vci.Error{ + return nil, openid4vci.Error{ Err: errors.New("invalid authorization header"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusUnauthorized, } } @@ -107,7 +107,7 @@ func (w Wrapper) RequestCredential(ctx context.Context, request RequestCredentia } return RequestCredential200JSONResponse(CredentialResponse{ Credential: &credentialMap, - Format: oidc4vci.VerifiableCredentialJSONLDFormat, + Format: openid4vci.VerifiableCredentialJSONLDFormat, }), nil } @@ -118,10 +118,10 @@ func (w Wrapper) RequestAccessToken(ctx context.Context, request RequestAccessTo return nil, err } - if request.Body.GrantType != oidc4vci.PreAuthorizedCodeGrant { - return nil, oidc4vci.Error{ + if request.Body.GrantType != openid4vci.PreAuthorizedCodeGrant { + return nil, openid4vci.Error{ Err: fmt.Errorf("unsupported grant type: %s", request.Body.GrantType), - Code: oidc4vci.UnsupportedGrantType, + Code: openid4vci.UnsupportedGrantType, StatusCode: http.StatusBadRequest, } } diff --git a/vcr/api/oidc4vci/v0/issuer_test.go b/vcr/api/openid4vci/v0/issuer_test.go similarity index 91% rename from vcr/api/oidc4vci/v0/issuer_test.go rename to vcr/api/openid4vci/v0/issuer_test.go index 5e44e44fd9..5c77853944 100644 --- a/vcr/api/oidc4vci/v0/issuer_test.go +++ b/vcr/api/openid4vci/v0/issuer_test.go @@ -24,7 +24,7 @@ import ( "github.com/nuts-foundation/go-did/vc" "github.com/nuts-foundation/nuts-node/vcr" "github.com/nuts-foundation/nuts-node/vcr/issuer" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -36,11 +36,11 @@ import ( var issuerDID = did.MustParseDID("did:nuts:issuer") var issuerIdentifier = "http://example.com/" + issuerDID.String() -func TestWrapper_GetOIDC4VCIIssuerMetadata(t *testing.T) { +func TestWrapper_GetOpenID4VCIIssuerMetadata(t *testing.T) { t.Run("ok", func(t *testing.T) { ctrl := gomock.NewController(t) oidcIssuer := issuer.NewMockOpenIDHandler(ctrl) - oidcIssuer.EXPECT().Metadata().Return(oidc4vci.CredentialIssuerMetadata{ + oidcIssuer.EXPECT().Metadata().Return(openid4vci.CredentialIssuerMetadata{ CredentialIssuer: issuerDID.String(), }) documentOwner := types.NewMockDocumentOwner(ctrl) @@ -49,10 +49,10 @@ func TestWrapper_GetOIDC4VCIIssuerMetadata(t *testing.T) { service.EXPECT().GetOpenIDIssuer(gomock.Any(), issuerDID).Return(oidcIssuer, nil) api := Wrapper{VCR: service, DocumentOwner: documentOwner} - response, err := api.GetOIDC4VCIIssuerMetadata(context.Background(), GetOIDC4VCIIssuerMetadataRequestObject{Did: issuerDID.String()}) + response, err := api.GetOpenID4VCIIssuerMetadata(context.Background(), GetOpenID4VCIIssuerMetadataRequestObject{Did: issuerDID.String()}) require.NoError(t, err) - assert.Equal(t, issuerDID.String(), response.(GetOIDC4VCIIssuerMetadata200JSONResponse).CredentialIssuer) + assert.Equal(t, issuerDID.String(), response.(GetOpenID4VCIIssuerMetadata200JSONResponse).CredentialIssuer) }) t.Run("unknown tenant", func(t *testing.T) { ctrl := gomock.NewController(t) @@ -60,7 +60,7 @@ func TestWrapper_GetOIDC4VCIIssuerMetadata(t *testing.T) { documentOwner.EXPECT().IsOwner(gomock.Any(), gomock.Any()).Return(false, nil) api := Wrapper{DocumentOwner: documentOwner} - _, err := api.GetOIDC4VCIIssuerMetadata(context.Background(), GetOIDC4VCIIssuerMetadataRequestObject{Did: issuerDID.String()}) + _, err := api.GetOpenID4VCIIssuerMetadata(context.Background(), GetOpenID4VCIIssuerMetadataRequestObject{Did: issuerDID.String()}) require.EqualError(t, err, "invalid_request - DID is not owned by this node") }) @@ -70,7 +70,7 @@ func TestWrapper_GetOIDCProviderMetadata(t *testing.T) { t.Run("ok", func(t *testing.T) { ctrl := gomock.NewController(t) oidcIssuer := issuer.NewMockOpenIDHandler(ctrl) - oidcIssuer.EXPECT().ProviderMetadata().Return(oidc4vci.ProviderMetadata{ + oidcIssuer.EXPECT().ProviderMetadata().Return(openid4vci.ProviderMetadata{ Issuer: issuerDID.String(), }) documentOwner := types.NewMockDocumentOwner(ctrl) @@ -146,7 +146,7 @@ func TestWrapper_RequestAccessToken(t *testing.T) { }, }) - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, "unsupported_grant_type - unsupported grant type: unsupported") assert.Equal(t, http.StatusBadRequest, protocolError.StatusCode) @@ -173,7 +173,7 @@ func TestWrapper_RequestCredential(t *testing.T) { }, Body: &RequestCredentialJSONRequestBody{ Format: "ldp_vc", - CredentialDefinition: &oidc4vci.CredentialDefinition{}, + CredentialDefinition: &openid4vci.CredentialDefinition{}, Proof: nil, }, }) @@ -210,7 +210,7 @@ func TestWrapper_RequestCredential(t *testing.T) { Body: nil, }) - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, "invalid_token - missing authorization header") assert.Equal(t, http.StatusUnauthorized, protocolError.StatusCode) @@ -234,7 +234,7 @@ func TestWrapper_RequestCredential(t *testing.T) { Body: nil, }) - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, "invalid_token - invalid authorization header") assert.Equal(t, http.StatusUnauthorized, protocolError.StatusCode) diff --git a/vcr/cmd/cmd.go b/vcr/cmd/cmd.go index a9e838e47b..1eda3499b5 100644 --- a/vcr/cmd/cmd.go +++ b/vcr/cmd/cmd.go @@ -37,9 +37,9 @@ import ( func FlagSet() *pflag.FlagSet { defs := vcr.DefaultConfig() flagSet := pflag.NewFlagSet("vcr", pflag.ContinueOnError) - flagSet.String("vcr.oidc4vci.definitionsdir", defs.OIDC4VCI.DefinitionsDIR, "Directory with the additional credential definitions the node could issue (experimental, may change without notice).") - flagSet.Bool("vcr.oidc4vci.enabled", defs.OIDC4VCI.Enabled, "Enable issuing and receiving credentials over OIDC4VCI (experimental).") - flagSet.Duration("vcr.oidc4vci.timeout", time.Second*30, "Time-out for OpenID4VCI HTTP client operations.") + flagSet.String("vcr.openid4vci.definitionsdir", defs.OpenID4VCI.DefinitionsDIR, "Directory with the additional credential definitions the node could issue (experimental, may change without notice).") + flagSet.Bool("vcr.openid4vci.enabled", defs.OpenID4VCI.Enabled, "Enable issuing and receiving credentials over OpenID4VCI (experimental).") + flagSet.Duration("vcr.openid4vci.timeout", time.Second*30, "Time-out for OpenID4VCI HTTP client operations.") return flagSet } diff --git a/vcr/config.go b/vcr/config.go index 7a1c472144..07bb5cb704 100644 --- a/vcr/config.go +++ b/vcr/config.go @@ -19,15 +19,15 @@ package vcr -import "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" +import "github.com/nuts-foundation/nuts-node/vcr/openid4vci" // ModuleName is the name of this module. const ModuleName = "VCR" // Config holds the config for the vcr engine type Config struct { - // OIDC4VCI holds the config for the OIDC4VCI credential issuer and wallet - OIDC4VCI oidc4vci.Config `koanf:"oidc4vci"` + // OpenID4VCI holds the config for the OpenID4VCI credential issuer and wallet + OpenID4VCI openid4vci.Config `koanf:"openid4vci"` } // DefaultConfig returns a fresh Config filled with default values diff --git a/vcr/holder/openid.go b/vcr/holder/openid.go index 86dc4053e2..4388fad305 100644 --- a/vcr/holder/openid.go +++ b/vcr/holder/openid.go @@ -32,7 +32,7 @@ import ( "github.com/nuts-foundation/nuts-node/crypto" "github.com/nuts-foundation/nuts-node/jsonld" "github.com/nuts-foundation/nuts-node/vcr/log" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" vcrTypes "github.com/nuts-foundation/nuts-node/vcr/types" vdr "github.com/nuts-foundation/nuts-node/vdr/types" ) @@ -40,17 +40,17 @@ import ( // OpenIDHandler is the interface for handling issuer operations using OpenID4VCI. type OpenIDHandler interface { // Metadata returns the OAuth2 client metadata for the wallet. - Metadata() oidc4vci.OAuth2ClientMetadata + Metadata() openid4vci.OAuth2ClientMetadata // HandleCredentialOffer handles a credential offer from an issuer. // It will try to retrieve the offered credential and store it. - HandleCredentialOffer(ctx context.Context, offer oidc4vci.CredentialOffer) error + HandleCredentialOffer(ctx context.Context, offer openid4vci.CredentialOffer) error } var nowFunc = time.Now var _ OpenIDHandler = (*openidHandler)(nil) // NewOpenIDHandler creates an OpenIDHandler that tries to retrieve offered credentials, to store it in the given credential store. -func NewOpenIDHandler(config oidc4vci.ClientConfig, did did.DID, identifier string, credentialStore vcrTypes.Writer, signer crypto.JWTSigner, resolver vdr.KeyResolver) OpenIDHandler { +func NewOpenIDHandler(config openid4vci.ClientConfig, did did.DID, identifier string, credentialStore vcrTypes.Writer, signer crypto.JWTSigner, resolver vdr.KeyResolver) OpenIDHandler { return &openidHandler{ did: did, identifier: identifier, @@ -58,7 +58,7 @@ func NewOpenIDHandler(config oidc4vci.ClientConfig, did did.DID, identifier stri signer: signer, resolver: resolver, config: config, - issuerClientCreator: oidc4vci.NewIssuerAPIClient, + issuerClientCreator: openid4vci.NewIssuerAPIClient, } } @@ -68,52 +68,52 @@ type openidHandler struct { credentialStore vcrTypes.Writer signer crypto.JWTSigner resolver vdr.KeyResolver - issuerClientCreator func(ctx context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (oidc4vci.IssuerAPIClient, error) + issuerClientCreator func(ctx context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (openid4vci.IssuerAPIClient, error) jsonldReader jsonld.Reader - config oidc4vci.ClientConfig + config openid4vci.ClientConfig } -func (h openidHandler) Metadata() oidc4vci.OAuth2ClientMetadata { - return oidc4vci.OAuth2ClientMetadata{ - CredentialOfferEndpoint: core.JoinURLPaths(h.identifier, "/wallet/oidc4vci/credential_offer"), +func (h openidHandler) Metadata() openid4vci.OAuth2ClientMetadata { + return openid4vci.OAuth2ClientMetadata{ + CredentialOfferEndpoint: core.JoinURLPaths(h.identifier, "/wallet/openid4vci/credential_offer"), } } // HandleCredentialOffer handles a credential offer from an issuer. // Error responses on the Credential Offer Endpoint are not defined in the OpenID4VCI spec, // so these are inferred of whatever makes sense. -func (h openidHandler) HandleCredentialOffer(ctx context.Context, offer oidc4vci.CredentialOffer) error { +func (h openidHandler) HandleCredentialOffer(ctx context.Context, offer openid4vci.CredentialOffer) error { // TODO: This check is too simplistic, there can be multiple credential offers, // but the issuer should only request the one it's interested in. // See https://github.com/nuts-foundation/nuts-node/issues/2049 if len(offer.Credentials) != 1 { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("there must be exactly 1 credential in credential offer"), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusBadRequest, } } offeredCredential := offer.Credentials[0] - if offeredCredential.Format != oidc4vci.VerifiableCredentialJSONLDFormat { - return oidc4vci.Error{ + if offeredCredential.Format != openid4vci.VerifiableCredentialJSONLDFormat { + return openid4vci.Error{ Err: fmt.Errorf("credential offer: unsupported format '%s'", offeredCredential.Format), - Code: oidc4vci.UnsupportedCredentialType, + Code: openid4vci.UnsupportedCredentialType, StatusCode: http.StatusBadRequest, } } if err := offeredCredential.CredentialDefinition.Validate(true); err != nil { - return oidc4vci.Error{ + return openid4vci.Error{ Err: fmt.Errorf("credential offer: %w", err), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusBadRequest, } } preAuthorizedCode := getPreAuthorizedCodeFromOffer(offer) if preAuthorizedCode == "" { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("couldn't find (valid) pre-authorized code grant in credential offer"), - Code: oidc4vci.InvalidGrant, + Code: openid4vci.InvalidGrant, StatusCode: http.StatusBadRequest, } } @@ -126,36 +126,36 @@ func (h openidHandler) HandleCredentialOffer(ctx context.Context, offer oidc4vci }) issuerClient, err := h.issuerClientCreator(ctx, httpClient, offer.CredentialIssuer) if err != nil { - return oidc4vci.Error{ + return openid4vci.Error{ Err: fmt.Errorf("unable to create issuer client: %w", err), - Code: oidc4vci.ServerError, + Code: openid4vci.ServerError, StatusCode: http.StatusInternalServerError, } } - accessTokenResponse, err := issuerClient.RequestAccessToken(oidc4vci.PreAuthorizedCodeGrant, map[string]string{ + accessTokenResponse, err := issuerClient.RequestAccessToken(openid4vci.PreAuthorizedCodeGrant, map[string]string{ "pre-authorized_code": preAuthorizedCode, }) if err != nil { - return oidc4vci.Error{ + return openid4vci.Error{ Err: fmt.Errorf("unable to request access token: %w", err), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusInternalServerError, } } if accessTokenResponse.AccessToken == "" { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("access_token is missing"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusInternalServerError, } } if accessTokenResponse.CNonce == "" { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("c_nonce is missing"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusInternalServerError, } } @@ -165,22 +165,22 @@ func (h openidHandler) HandleCredentialOffer(ctx context.Context, offer oidc4vci defer cancel() credential, err := h.retrieveCredential(retrieveCtx, issuerClient, offeredCredential.CredentialDefinition, accessTokenResponse) if err != nil { - return oidc4vci.Error{ + return openid4vci.Error{ Err: fmt.Errorf("unable to retrieve credential: %w", err), - Code: oidc4vci.ServerError, + Code: openid4vci.ServerError, StatusCode: http.StatusInternalServerError, } } - if err = oidc4vci.ValidateDefinitionWithCredential(*credential, *offeredCredential.CredentialDefinition); err != nil { - return oidc4vci.Error{ + if err = openid4vci.ValidateDefinitionWithCredential(*credential, *offeredCredential.CredentialDefinition); err != nil { + return openid4vci.Error{ Err: fmt.Errorf("received credential does not match offer: %w", err), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusInternalServerError, } } log.Logger(). WithField("credentialID", credential.ID). - Infof("Received VC over OIDC4VCI") + Infof("Received VC over OpenID4VCI") err = h.credentialStore.StoreCredential(*credential, nil) if err != nil { return fmt.Errorf("unable to store credential: %w", err) @@ -188,8 +188,8 @@ func (h openidHandler) HandleCredentialOffer(ctx context.Context, offer oidc4vci return nil } -func getPreAuthorizedCodeFromOffer(offer oidc4vci.CredentialOffer) string { - params, ok := offer.Grants[oidc4vci.PreAuthorizedCodeGrant].(map[string]interface{}) +func getPreAuthorizedCodeFromOffer(offer openid4vci.CredentialOffer) string { + params, ok := offer.Grants[openid4vci.PreAuthorizedCodeGrant].(map[string]interface{}) if !ok { return "" } @@ -200,11 +200,11 @@ func getPreAuthorizedCodeFromOffer(offer oidc4vci.CredentialOffer) string { return preAuthorizedCode } -func (h openidHandler) retrieveCredential(ctx context.Context, issuerClient oidc4vci.IssuerAPIClient, offer *oidc4vci.CredentialDefinition, tokenResponse *oidc4vci.TokenResponse) (*vc.VerifiableCredential, error) { +func (h openidHandler) retrieveCredential(ctx context.Context, issuerClient openid4vci.IssuerAPIClient, offer *openid4vci.CredentialDefinition, tokenResponse *openid4vci.TokenResponse) (*vc.VerifiableCredential, error) { keyID, err := h.resolver.ResolveSigningKeyID(h.did, nil) headers := map[string]interface{}{ - "typ": oidc4vci.JWTTypeOpenID4VCIProof, // MUST be openid4vci-proof+jwt, which explicitly types the proof JWT as recommended in Section 3.11 of [RFC8725]. - "kid": keyID, // JOSE Header containing the key ID. If the Credential shall be bound to a DID, the kid refers to a DID URL which identifies a particular key in the DID Document that the Credential shall be bound to. + "typ": openid4vci.JWTTypeOpenID4VCIProof, // MUST be openid4vci-proof+jwt, which explicitly types the proof JWT as recommended in Section 3.11 of [RFC8725]. + "kid": keyID, // JOSE Header containing the key ID. If the Credential shall be bound to a DID, the kid refers to a DID URL which identifies a particular key in the DID Document that the Credential shall be bound to. } claims := map[string]interface{}{ "aud": issuerClient.Metadata().CredentialIssuer, @@ -217,10 +217,10 @@ func (h openidHandler) retrieveCredential(ctx context.Context, issuerClient oidc return nil, fmt.Errorf("unable to sign request proof: %w", err) } - credentialRequest := oidc4vci.CredentialRequest{ + credentialRequest := openid4vci.CredentialRequest{ CredentialDefinition: offer, - Format: oidc4vci.VerifiableCredentialJSONLDFormat, - Proof: &oidc4vci.CredentialRequestProof{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, + Proof: &openid4vci.CredentialRequestProof{ Jwt: proof, ProofType: "jwt", }, diff --git a/vcr/holder/openid_mock.go b/vcr/holder/openid_mock.go index f72b598bb8..7ac57f4d5c 100644 --- a/vcr/holder/openid_mock.go +++ b/vcr/holder/openid_mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - oidc4vci "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + openid4vci "github.com/nuts-foundation/nuts-node/vcr/openid4vci" gomock "go.uber.org/mock/gomock" ) @@ -36,7 +36,7 @@ func (m *MockOpenIDHandler) EXPECT() *MockOpenIDHandlerMockRecorder { } // HandleCredentialOffer mocks base method. -func (m *MockOpenIDHandler) HandleCredentialOffer(ctx context.Context, offer oidc4vci.CredentialOffer) error { +func (m *MockOpenIDHandler) HandleCredentialOffer(ctx context.Context, offer openid4vci.CredentialOffer) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "HandleCredentialOffer", ctx, offer) ret0, _ := ret[0].(error) @@ -50,10 +50,10 @@ func (mr *MockOpenIDHandlerMockRecorder) HandleCredentialOffer(ctx, offer interf } // Metadata mocks base method. -func (m *MockOpenIDHandler) Metadata() oidc4vci.OAuth2ClientMetadata { +func (m *MockOpenIDHandler) Metadata() openid4vci.OAuth2ClientMetadata { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Metadata") - ret0, _ := ret[0].(oidc4vci.OAuth2ClientMetadata) + ret0, _ := ret[0].(openid4vci.OAuth2ClientMetadata) return ret0 } diff --git a/vcr/holder/openid_test.go b/vcr/holder/openid_test.go index 90f11e5ae5..14be71e5e5 100644 --- a/vcr/holder/openid_test.go +++ b/vcr/holder/openid_test.go @@ -27,7 +27,7 @@ import ( "github.com/nuts-foundation/nuts-node/audit" "github.com/nuts-foundation/nuts-node/core" "github.com/nuts-foundation/nuts-node/crypto" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vcr/types" vdrTypes "github.com/nuts-foundation/nuts-node/vdr/types" "github.com/stretchr/testify/assert" @@ -42,22 +42,22 @@ var holderDID = did.MustParseDID("did:nuts:holder") var issuerDID = did.MustParseDID("did:nuts:issuer") func TestNewOIDCWallet(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) assert.NotNil(t, w) } func Test_wallet_Metadata(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) metadata := w.Metadata() - assert.Equal(t, oidc4vci.OAuth2ClientMetadata{ - CredentialOfferEndpoint: "https://holder.example.com/wallet/oidc4vci/credential_offer", + assert.Equal(t, openid4vci.OAuth2ClientMetadata{ + CredentialOfferEndpoint: "https://holder.example.com/wallet/openid4vci/credential_offer", }, metadata) } func Test_wallet_HandleCredentialOffer(t *testing.T) { - credentialOffer := oidc4vci.CredentialOffer{ + credentialOffer := openid4vci.CredentialOffer{ CredentialIssuer: issuerDID.String(), Credentials: offeredCredential(), Grants: map[string]interface{}{ @@ -67,18 +67,18 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { }, }, } - metadata := oidc4vci.CredentialIssuerMetadata{ + metadata := openid4vci.CredentialIssuerMetadata{ CredentialIssuer: issuerDID.String(), CredentialEndpoint: "credential-endpoint", } t.Run("ok", func(t *testing.T) { ctrl := gomock.NewController(t) nonce := "nonsens" - issuerAPIClient := oidc4vci.NewMockIssuerAPIClient(ctrl) + issuerAPIClient := openid4vci.NewMockIssuerAPIClient(ctrl) issuerAPIClient.EXPECT().Metadata().Return(metadata) issuerAPIClient.EXPECT().RequestAccessToken("urn:ietf:params:oauth:grant-type:pre-authorized_code", map[string]string{ "pre-authorized_code": "code", - }).Return(&oidc4vci.TokenResponse{ + }).Return(&openid4vci.TokenResponse{ AccessToken: "access-token", CNonce: nonce, ExpiresIn: 0, @@ -104,8 +104,8 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { return time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) } - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", credentialStore, jwtSigner, keyResolver).(*openidHandler) - w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (oidc4vci.IssuerAPIClient, error) { + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", credentialStore, jwtSigner, keyResolver).(*openidHandler) + w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (openid4vci.IssuerAPIClient, error) { return issuerAPIClient, nil } @@ -116,14 +116,14 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { require.NoError(t, err) }) t.Run("pre-authorized code grant", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) t.Run("no grants", func(t *testing.T) { - offer := oidc4vci.CredentialOffer{Credentials: offeredCredential()} + offer := openid4vci.CredentialOffer{Credentials: offeredCredential()} err := w.HandleCredentialOffer(audit.TestContext(), offer) require.EqualError(t, err, "invalid_grant - couldn't find (valid) pre-authorized code grant in credential offer") }) t.Run("no pre-authorized grant", func(t *testing.T) { - offer := oidc4vci.CredentialOffer{ + offer := openid4vci.CredentialOffer{ Credentials: offeredCredential(), Grants: map[string]interface{}{ "some-other-grant": nil, @@ -133,7 +133,7 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { require.EqualError(t, err, "invalid_grant - couldn't find (valid) pre-authorized code grant in credential offer") }) t.Run("invalid pre-authorized grant", func(t *testing.T) { - offer := oidc4vci.CredentialOffer{ + offer := openid4vci.CredentialOffer{ Credentials: offeredCredential(), Grants: map[string]interface{}{ "urn:ietf:params:oauth:grant-type:pre-authorized_code": map[string]interface{}{ @@ -146,26 +146,26 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { }) }) t.Run("error - too many credentials in offer", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) - offer := oidc4vci.CredentialOffer{ - Credentials: []oidc4vci.OfferedCredential{ + offer := openid4vci.CredentialOffer{ + Credentials: []openid4vci.OfferedCredential{ offeredCredential()[0], offeredCredential()[0], }, } - err := w.HandleCredentialOffer(audit.TestContext(), offer).(oidc4vci.Error) + err := w.HandleCredentialOffer(audit.TestContext(), offer).(openid4vci.Error) assert.EqualError(t, err, "invalid_request - there must be exactly 1 credential in credential offer") assert.Equal(t, http.StatusBadRequest, err.StatusCode) }) t.Run("error - access token request fails", func(t *testing.T) { ctrl := gomock.NewController(t) - issuerAPIClient := oidc4vci.NewMockIssuerAPIClient(ctrl) + issuerAPIClient := openid4vci.NewMockIssuerAPIClient(ctrl) issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(nil, errors.New("request failed")) - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) - w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (oidc4vci.IssuerAPIClient, error) { + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) + w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (openid4vci.IssuerAPIClient, error) { return issuerAPIClient, nil } @@ -175,11 +175,11 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { }) t.Run("error - empty access token", func(t *testing.T) { ctrl := gomock.NewController(t) - issuerAPIClient := oidc4vci.NewMockIssuerAPIClient(ctrl) - issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&oidc4vci.TokenResponse{}, nil) + issuerAPIClient := openid4vci.NewMockIssuerAPIClient(ctrl) + issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&openid4vci.TokenResponse{}, nil) - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) - w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (oidc4vci.IssuerAPIClient, error) { + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) + w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (openid4vci.IssuerAPIClient, error) { return issuerAPIClient, nil } @@ -189,11 +189,11 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { }) t.Run("error - empty c_nonce", func(t *testing.T) { ctrl := gomock.NewController(t) - issuerAPIClient := oidc4vci.NewMockIssuerAPIClient(ctrl) - issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&oidc4vci.TokenResponse{AccessToken: "foo"}, nil) + issuerAPIClient := openid4vci.NewMockIssuerAPIClient(ctrl) + issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&openid4vci.TokenResponse{AccessToken: "foo"}, nil) - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) - w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (oidc4vci.IssuerAPIClient, error) { + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil).(*openidHandler) + w.issuerClientCreator = func(_ context.Context, httpClient core.HTTPRequestDoer, credentialIssuerIdentifier string) (openid4vci.IssuerAPIClient, error) { return issuerAPIClient, nil } @@ -202,17 +202,17 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { require.EqualError(t, err, "invalid_token - c_nonce is missing") }) t.Run("error - no credentials in offer", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) - err := w.HandleCredentialOffer(audit.TestContext(), oidc4vci.CredentialOffer{}).(oidc4vci.Error) + err := w.HandleCredentialOffer(audit.TestContext(), openid4vci.CredentialOffer{}).(openid4vci.Error) assert.EqualError(t, err, "invalid_request - there must be exactly 1 credential in credential offer") assert.Equal(t, http.StatusBadRequest, err.StatusCode) }) t.Run("error - can't issuer client (metadata can't be loaded)", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) - err := w.HandleCredentialOffer(audit.TestContext(), oidc4vci.CredentialOffer{ + err := w.HandleCredentialOffer(audit.TestContext(), openid4vci.CredentialOffer{ CredentialIssuer: "http://localhost:87632", Credentials: offeredCredential(), Grants: map[string]interface{}{ @@ -228,9 +228,9 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { t.Run("error - credential does not match offer", func(t *testing.T) { offer := offeredCredential()[0] ctrl := gomock.NewController(t) - issuerAPIClient := oidc4vci.NewMockIssuerAPIClient(ctrl) + issuerAPIClient := openid4vci.NewMockIssuerAPIClient(ctrl) issuerAPIClient.EXPECT().Metadata().Return(metadata) - issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&oidc4vci.TokenResponse{AccessToken: "access-token", CNonce: "c_nonce"}, nil) + issuerAPIClient.EXPECT().RequestAccessToken(gomock.Any(), gomock.Any()).Return(&openid4vci.TokenResponse{AccessToken: "access-token", CNonce: "c_nonce"}, nil) issuerAPIClient.EXPECT().RequestCredential(gomock.Any(), gomock.Any(), gomock.Any()).Return(&vc.VerifiableCredential{ Context: offer.CredentialDefinition.Context, Type: []ssi.URI{ssi.MustParseURI("VerifiableCredential")}, @@ -240,8 +240,8 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { keyResolver := vdrTypes.NewMockKeyResolver(ctrl) keyResolver.EXPECT().ResolveSigningKeyID(holderDID, nil) - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, jwtSigner, keyResolver).(*openidHandler) - w.issuerClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (oidc4vci.IssuerAPIClient, error) { + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, jwtSigner, keyResolver).(*openidHandler) + w.issuerClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (openid4vci.IssuerAPIClient, error) { return issuerAPIClient, nil } @@ -250,21 +250,21 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { require.EqualError(t, err, "invalid_request - received credential does not match offer: credential does not match credential_definition: type mismatch") }) t.Run("error - unsupported format", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) - err := w.HandleCredentialOffer(audit.TestContext(), oidc4vci.CredentialOffer{ - Credentials: []oidc4vci.OfferedCredential{{Format: "not supported"}}, - }).(oidc4vci.Error) + err := w.HandleCredentialOffer(audit.TestContext(), openid4vci.CredentialOffer{ + Credentials: []openid4vci.OfferedCredential{{Format: "not supported"}}, + }).(openid4vci.Error) assert.EqualError(t, err, "unsupported_credential_type - credential offer: unsupported format 'not supported'") assert.Equal(t, http.StatusBadRequest, err.StatusCode) }) t.Run("error - credentialSubject not allowed in offer", func(t *testing.T) { - w := NewOpenIDHandler(oidc4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) + w := NewOpenIDHandler(openid4vci.ClientConfig{}, holderDID, "https://holder.example.com", nil, nil, nil) credentials := offeredCredential() credentials[0].CredentialDefinition.CredentialSubject = new(map[string]interface{}) - err := w.HandleCredentialOffer(audit.TestContext(), oidc4vci.CredentialOffer{Credentials: credentials}).(oidc4vci.Error) + err := w.HandleCredentialOffer(audit.TestContext(), openid4vci.CredentialOffer{Credentials: credentials}).(openid4vci.Error) assert.EqualError(t, err, "invalid_request - credential offer: invalid credential_definition: credentialSubject not allowed in offer") assert.Equal(t, http.StatusBadRequest, err.StatusCode) @@ -272,10 +272,10 @@ func Test_wallet_HandleCredentialOffer(t *testing.T) { } // offeredCredential returns a structure that can be used as CredentialOffer.Credentials, -func offeredCredential() []oidc4vci.OfferedCredential { - return []oidc4vci.OfferedCredential{{ - Format: oidc4vci.VerifiableCredentialJSONLDFormat, - CredentialDefinition: &oidc4vci.CredentialDefinition{ +func offeredCredential() []openid4vci.OfferedCredential { + return []openid4vci.OfferedCredential{{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, + CredentialDefinition: &openid4vci.CredentialDefinition{ Context: []ssi.URI{ ssi.MustParseURI("https://www.w3.org/2018/credentials/v1"), ssi.MustParseURI("http://example.org/credentials/V1"), diff --git a/vcr/interface.go b/vcr/interface.go index eeef7c8d02..1d8dcdfa42 100644 --- a/vcr/interface.go +++ b/vcr/interface.go @@ -69,7 +69,7 @@ type VCR interface { Verifier() verifier.Verifier GetOpenIDIssuer(ctx context.Context, id did.DID) (issuer.OpenIDHandler, error) GetOpenIDHolder(ctx context.Context, id did.DID) (holder.OpenIDHandler, error) - OIDC4VCIEnabled() bool + OpenID4VCIEnabled() bool Finder Resolver diff --git a/vcr/issuer/issuer.go b/vcr/issuer/issuer.go index 1ab6ed27db..17c3d3efa9 100644 --- a/vcr/issuer/issuer.go +++ b/vcr/issuer/issuer.go @@ -22,7 +22,7 @@ import ( "context" "encoding/json" "fmt" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/didservice" "github.com/nuts-foundation/nuts-node/vdr/didstore" "time" @@ -61,7 +61,7 @@ func NewIssuer(store Store, vcrStore types.Writer, networkPublisher Publisher, store: store, networkPublisher: networkPublisher, openidHandlerFn: openidHandlerFn, - walletResolver: oidc4vci.DIDIdentifierResolver{ + walletResolver: openid4vci.DIDIdentifierResolver{ ServiceResolver: didservice.ServiceResolver{Store: didstore}, }, keyResolver: resolver, @@ -82,7 +82,7 @@ type issuer struct { trustConfig *trust.Config jsonldManager jsonld.JSONLD vcrStore types.Writer - walletResolver oidc4vci.IdentifierResolver + walletResolver openid4vci.IdentifierResolver } // Issue creates a new credential, signs, stores it. @@ -123,7 +123,7 @@ func (i issuer) Issue(ctx context.Context, credentialOptions vc.VerifiableCreden } if publish { - // Try to issue over OIDC4VCI if it's enabled and if the credential is not public + // Try to issue over OpenID4VCI if it's enabled and if the credential is not public // (public credentials are always published on the network). if i.openidHandlerFn != nil && !public { success, err := i.issueUsingOpenID4VCI(ctx, *createdVC) diff --git a/vcr/issuer/issuer_test.go b/vcr/issuer/issuer_test.go index d026fdbe67..8ee88e42b9 100644 --- a/vcr/issuer/issuer_test.go +++ b/vcr/issuer/issuer_test.go @@ -25,7 +25,7 @@ import ( "fmt" "github.com/nuts-foundation/nuts-node/audit" "github.com/nuts-foundation/nuts-node/core" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/stretchr/testify/require" "path" "testing" @@ -214,13 +214,13 @@ func Test_issuer_Issue(t *testing.T) { assert.True(t, trustConfig.IsTrusted(credentialType, result.Issuer)) }) - t.Run("OIDC4VCI", func(t *testing.T) { + t.Run("OpenID4VCI", func(t *testing.T) { const walletIdentifier = "http://example.com/wallet" - t.Run("ok - publish over OIDC4VCI fails - fallback to network", func(t *testing.T) { + t.Run("ok - publish over OpenID4VCI fails - fallback to network", func(t *testing.T) { ctrl := gomock.NewController(t) publisher := NewMockPublisher(ctrl) publisher.EXPECT().PublishCredential(gomock.Any(), gomock.Any(), gomock.Any()) - walletResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + walletResolver := openid4vci.NewMockIdentifierResolver(ctrl) walletResolver.EXPECT().Resolve(gomock.Any()).Return(walletIdentifier, nil) openidHandler := NewMockOpenIDHandler(ctrl) openidHandler.EXPECT().OfferCredential(gomock.Any(), gomock.Any(), walletIdentifier).Return(errors.New("failed")) @@ -249,7 +249,7 @@ func Test_issuer_Issue(t *testing.T) { require.NoError(t, err) assert.NotNil(t, result) }) - t.Run("ok - OIDC4VCI not enabled - fallback to network", func(t *testing.T) { + t.Run("ok - OpenID4VCI not enabled - fallback to network", func(t *testing.T) { ctrl := gomock.NewController(t) publisher := NewMockPublisher(ctrl) publisher.EXPECT().PublishCredential(gomock.Any(), gomock.Any(), gomock.Any()) @@ -271,9 +271,9 @@ func Test_issuer_Issue(t *testing.T) { require.NoError(t, err) assert.NotNil(t, result) }) - t.Run("ok - OIDC4VCI not enabled for holder DID - fallback to network", func(t *testing.T) { + t.Run("ok - OpenID4VCI not enabled for holder DID - fallback to network", func(t *testing.T) { ctrl := gomock.NewController(t) - walletResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + walletResolver := openid4vci.NewMockIdentifierResolver(ctrl) walletResolver.EXPECT().Resolve(holderDID).AnyTimes().Return(walletIdentifier, nil) publisher := NewMockPublisher(ctrl) publisher.EXPECT().PublishCredential(gomock.Any(), gomock.Any(), gomock.Any()) @@ -296,9 +296,9 @@ func Test_issuer_Issue(t *testing.T) { require.NoError(t, err) assert.NotNil(t, result) }) - t.Run("ok - publish over OIDC4VCI", func(t *testing.T) { + t.Run("ok - publish over OpenID4VCI", func(t *testing.T) { ctrl := gomock.NewController(t) - walletResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + walletResolver := openid4vci.NewMockIdentifierResolver(ctrl) walletResolver.EXPECT().Resolve(holderDID).AnyTimes().Return(walletIdentifier, nil) openidIssuer := NewMockOpenIDHandler(ctrl) openidIssuer.EXPECT().OfferCredential(gomock.Any(), gomock.Any(), walletIdentifier) diff --git a/vcr/issuer/mock.go b/vcr/issuer/mock.go index 4686da0f8e..d0987f97b0 100644 --- a/vcr/issuer/mock.go +++ b/vcr/issuer/mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" did "github.com/nuts-foundation/go-did/did" vc "github.com/nuts-foundation/go-did/vc" core "github.com/nuts-foundation/nuts-node/core" @@ -145,7 +145,7 @@ func (mr *MockIssuerMockRecorder) Issue(ctx, unsignedCredential, publish, public } // Revoke mocks base method. -func (m *MockIssuer) Revoke(ctx context.Context, credentialID go_did.URI) (*credential.Revocation, error) { +func (m *MockIssuer) Revoke(ctx context.Context, credentialID ssi.URI) (*credential.Revocation, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Revoke", ctx, credentialID) ret0, _ := ret[0].(*credential.Revocation) @@ -160,7 +160,7 @@ func (mr *MockIssuerMockRecorder) Revoke(ctx, credentialID interface{}) *gomock. } // SearchCredential mocks base method. -func (m *MockIssuer) SearchCredential(credentialType go_did.URI, issuer did.DID, subject *go_did.URI) ([]vc.VerifiableCredential, error) { +func (m *MockIssuer) SearchCredential(credentialType ssi.URI, issuer did.DID, subject *ssi.URI) ([]vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SearchCredential", credentialType, issuer, subject) ret0, _ := ret[0].([]vc.VerifiableCredential) @@ -226,7 +226,7 @@ func (mr *MockStoreMockRecorder) Diagnostics() *gomock.Call { } // GetCredential mocks base method. -func (m *MockStore) GetCredential(id go_did.URI) (*vc.VerifiableCredential, error) { +func (m *MockStore) GetCredential(id ssi.URI) (*vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetCredential", id) ret0, _ := ret[0].(*vc.VerifiableCredential) @@ -241,7 +241,7 @@ func (mr *MockStoreMockRecorder) GetCredential(id interface{}) *gomock.Call { } // GetRevocation mocks base method. -func (m *MockStore) GetRevocation(id go_did.URI) (*credential.Revocation, error) { +func (m *MockStore) GetRevocation(id ssi.URI) (*credential.Revocation, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetRevocation", id) ret0, _ := ret[0].(*credential.Revocation) @@ -256,7 +256,7 @@ func (mr *MockStoreMockRecorder) GetRevocation(id interface{}) *gomock.Call { } // SearchCredential mocks base method. -func (m *MockStore) SearchCredential(credentialType go_did.URI, issuer did.DID, subject *go_did.URI) ([]vc.VerifiableCredential, error) { +func (m *MockStore) SearchCredential(credentialType ssi.URI, issuer did.DID, subject *ssi.URI) ([]vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SearchCredential", credentialType, issuer, subject) ret0, _ := ret[0].([]vc.VerifiableCredential) @@ -322,7 +322,7 @@ func (m *MockCredentialSearcher) EXPECT() *MockCredentialSearcherMockRecorder { } // SearchCredential mocks base method. -func (m *MockCredentialSearcher) SearchCredential(credentialType go_did.URI, issuer did.DID, subject *go_did.URI) ([]vc.VerifiableCredential, error) { +func (m *MockCredentialSearcher) SearchCredential(credentialType ssi.URI, issuer did.DID, subject *ssi.URI) ([]vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SearchCredential", credentialType, issuer, subject) ret0, _ := ret[0].([]vc.VerifiableCredential) diff --git a/vcr/issuer/openid.go b/vcr/issuer/openid.go index 2c9c01d6c2..83837eabb5 100644 --- a/vcr/issuer/openid.go +++ b/vcr/issuer/openid.go @@ -36,7 +36,7 @@ import ( "github.com/nuts-foundation/nuts-node/crypto" "github.com/nuts-foundation/nuts-node/vcr/issuer/assets" "github.com/nuts-foundation/nuts-node/vcr/log" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/didservice" "github.com/nuts-foundation/nuts-node/vdr/types" "io/fs" @@ -93,27 +93,27 @@ const openidSecretSizeBits = 128 // OpenIDHandler defines the interface for handling OpenID4VCI issuer operations. type OpenIDHandler interface { // ProviderMetadata returns the OpenID Connect provider metadata. - ProviderMetadata() oidc4vci.ProviderMetadata + ProviderMetadata() openid4vci.ProviderMetadata // HandleAccessTokenRequest handles an OAuth2 access token request for the given issuer and pre-authorized code. // It returns the access token and a c_nonce. HandleAccessTokenRequest(ctx context.Context, preAuthorizedCode string) (string, string, error) // Metadata returns the OpenID4VCI credential issuer metadata for the given issuer. - Metadata() oidc4vci.CredentialIssuerMetadata + Metadata() openid4vci.CredentialIssuerMetadata // OfferCredential sends a credential offer to the specified wallet. It derives the issuer from the credential. OfferCredential(ctx context.Context, credential vc.VerifiableCredential, walletIdentifier string) error // HandleCredentialRequest requests a credential from the given issuer. - HandleCredentialRequest(ctx context.Context, request oidc4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) + HandleCredentialRequest(ctx context.Context, request openid4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) } // NewOpenIDHandler creates a new OpenIDHandler instance. The identifier is the Credential Issuer Identifier, e.g. https://example.com/issuer/ -func NewOpenIDHandler(issuerDID did.DID, issuerIdentifierURL string, definitionsDIR string, config oidc4vci.ClientConfig, keyResolver types.KeyResolver, store OpenIDStore) (OpenIDHandler, error) { +func NewOpenIDHandler(issuerDID did.DID, issuerIdentifierURL string, definitionsDIR string, config openid4vci.ClientConfig, keyResolver types.KeyResolver, store OpenIDStore) (OpenIDHandler, error) { i := &openidHandler{ issuerIdentifierURL: issuerIdentifierURL, issuerDID: issuerDID, definitionsDIR: definitionsDIR, config: config, keyResolver: keyResolver, - walletClientCreator: oidc4vci.NewWalletAPIClient, + walletClientCreator: openid4vci.NewWalletAPIClient, store: store, } @@ -126,16 +126,16 @@ type openidHandler struct { issuerDID did.DID definitionsDIR string credentialsSupported []map[string]interface{} - config oidc4vci.ClientConfig + config openid4vci.ClientConfig keyResolver types.KeyResolver store OpenIDStore - walletClientCreator func(ctx context.Context, httpClient core.HTTPRequestDoer, walletMetadataURL string) (oidc4vci.WalletAPIClient, error) + walletClientCreator func(ctx context.Context, httpClient core.HTTPRequestDoer, walletMetadataURL string) (openid4vci.WalletAPIClient, error) } -func (i *openidHandler) Metadata() oidc4vci.CredentialIssuerMetadata { - metadata := oidc4vci.CredentialIssuerMetadata{ +func (i *openidHandler) Metadata() openid4vci.CredentialIssuerMetadata { + metadata := openid4vci.CredentialIssuerMetadata{ CredentialIssuer: i.issuerIdentifierURL, - CredentialEndpoint: core.JoinURLPaths(i.issuerIdentifierURL, "/issuer/oidc4vci/credential"), + CredentialEndpoint: core.JoinURLPaths(i.issuerIdentifierURL, "/issuer/openid4vci/credential"), } // deepcopy the i.credentialsSupported slice to prevent concurrent access to the slice. @@ -144,8 +144,8 @@ func (i *openidHandler) Metadata() oidc4vci.CredentialIssuerMetadata { return metadata } -func (i *openidHandler) ProviderMetadata() oidc4vci.ProviderMetadata { - return oidc4vci.ProviderMetadata{ +func (i *openidHandler) ProviderMetadata() openid4vci.ProviderMetadata { + return openid4vci.ProviderMetadata{ Issuer: i.issuerIdentifierURL, TokenEndpoint: core.JoinURLPaths(i.issuerIdentifierURL, "oidc/token"), // TODO: Anonymous access (no client_id) is OK as long as PKIoverheid Private is used, @@ -161,16 +161,16 @@ func (i *openidHandler) HandleAccessTokenRequest(ctx context.Context, preAuthori return "", "", err } if flow == nil { - return "", "", oidc4vci.Error{ + return "", "", openid4vci.Error{ Err: errors.New("unknown pre-authorized code"), - Code: oidc4vci.InvalidGrant, + Code: openid4vci.InvalidGrant, StatusCode: http.StatusBadRequest, } } if flow.IssuerID != i.issuerDID.String() { - return "", "", oidc4vci.Error{ + return "", "", openid4vci.Error{ Err: errors.New("pre-authorized code not issued by this issuer"), - Code: oidc4vci.InvalidGrant, + Code: openid4vci.InvalidGrant, StatusCode: http.StatusBadRequest, } } @@ -199,10 +199,10 @@ func (i *openidHandler) HandleAccessTokenRequest(ctx context.Context, preAuthori func (i *openidHandler) OfferCredential(ctx context.Context, credential vc.VerifiableCredential, walletIdentifier string) error { preAuthorizedCode := generateCode() - walletMetadataURL := core.JoinURLPaths(walletIdentifier, oidc4vci.WalletMetadataWellKnownPath) + walletMetadataURL := core.JoinURLPaths(walletIdentifier, openid4vci.WalletMetadataWellKnownPath) log.Logger(). WithField(core.LogFieldCredentialID, credential.ID). - Infof("Offering credential using OIDC4VCI (client-metadata-url=%s)", walletMetadataURL) + Infof("Offering credential using OpenID4VCI (client-metadata-url=%s)", walletMetadataURL) httpTransport := http.DefaultTransport.(*http.Transport).Clone() httpTransport.TLSClientConfig = i.config.TLS @@ -227,18 +227,18 @@ func (i *openidHandler) OfferCredential(ctx context.Context, credential vc.Verif return nil } -func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oidc4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) { - if request.Format != oidc4vci.VerifiableCredentialJSONLDFormat { - return nil, oidc4vci.Error{ +func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request openid4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) { + if request.Format != openid4vci.VerifiableCredentialJSONLDFormat { + return nil, openid4vci.Error{ Err: fmt.Errorf("credential request: unsupported format '%s'", request.Format), - Code: oidc4vci.UnsupportedCredentialType, + Code: openid4vci.UnsupportedCredentialType, StatusCode: http.StatusBadRequest, } } if err := request.CredentialDefinition.Validate(false); err != nil { - return nil, oidc4vci.Error{ + return nil, openid4vci.Error{ Err: fmt.Errorf("credential request: %w", err), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusBadRequest, } } @@ -247,10 +247,10 @@ func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oid return nil, err } if flow == nil { - log.Logger().Warn("Client tried retrieving credential over OIDC4VCI with unknown OAuth2 access token") - return nil, oidc4vci.Error{ + log.Logger().Warn("Client tried retrieving credential over OpenID4VCI with unknown OAuth2 access token") + return nil, openid4vci.Error{ Err: errors.New("unknown access token"), - Code: oidc4vci.InvalidToken, + Code: openid4vci.InvalidToken, StatusCode: http.StatusBadRequest, } } @@ -260,9 +260,9 @@ func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oid // check credential.Issuer against given issuer if credential.Issuer.String() != i.issuerDID.String() { - return nil, oidc4vci.Error{ + return nil, openid4vci.Error{ Err: errors.New("credential issuer does not match given issuer"), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusBadRequest, } } @@ -271,10 +271,10 @@ func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oid return nil, err } - if err = oidc4vci.ValidateDefinitionWithCredential(credential, *request.CredentialDefinition); err != nil { - return nil, oidc4vci.Error{ + if err = openid4vci.ValidateDefinitionWithCredential(credential, *request.CredentialDefinition); err != nil { + return nil, openid4vci.Error{ Err: fmt.Errorf("requested credential does not match offer: %w", err), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusBadRequest, } } @@ -286,7 +286,7 @@ func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oid WithField(core.LogFieldCredentialID, credential.ID). WithField(core.LogFieldCredentialIssuer, credential.Issuer.String()). WithField(core.LogFieldCredentialSubject, subjectDID). - Info("VC retrieved by wallet over OIDC4VCI") + Info("VC retrieved by wallet over OpenID4VCI") return &credential, nil } @@ -294,12 +294,12 @@ func (i *openidHandler) HandleCredentialRequest(ctx context.Context, request oid // validateProof validates the proof of the credential request. Aside from checks as specified by the spec, // it verifies the proof signature, and whether the signer is the intended wallet. // See https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-proof-types -func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request oidc4vci.CredentialRequest) error { +func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request openid4vci.CredentialRequest) error { credential := flow.Credentials[0] // there's always just one (at least for now) wallet, _ := getSubjectDID(credential) // augment invalid_proof errors according to ยง7.3.2 of openid4vci spec - generateProofError := func(err oidc4vci.Error) error { + generateProofError := func(err openid4vci.Error) error { cnonce := generateCode() if err := i.store.StoreReference(ctx, flow.ID, cNonceRefType, cnonce, time.Now().Add(TokenTTL)); err != nil { return err @@ -311,16 +311,16 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o } if request.Proof == nil { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: errors.New("missing proof"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } - if request.Proof.ProofType != oidc4vci.ProofTypeJWT { - return generateProofError(oidc4vci.Error{ + if request.Proof.ProofType != openid4vci.ProofTypeJWT { + return generateProofError(openid4vci.Error{ Err: errors.New("proof type not supported"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } @@ -330,18 +330,18 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o return i.keyResolver.ResolveSigningKey(kid, nil) }, jwt.WithAcceptableSkew(5*time.Second)) if err != nil { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: err, - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } // Proof must be signed by wallet to which it was offered (proof signer == offer receiver) if signerDID, err := didservice.GetDIDFromURL(signingKeyID); err != nil || signerDID.String() != wallet.String() { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: fmt.Errorf("credential offer was signed by other DID than intended wallet: %s", signingKeyID), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } @@ -355,9 +355,9 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o } } if !audienceMatches { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: fmt.Errorf("audience doesn't match credential issuer (aud=%s)", token.Audience()), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } @@ -375,16 +375,16 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o } typ := message.Signatures()[0].ProtectedHeaders().Type() if typ == "" { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: errors.New("missing typ header"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } - if typ != oidc4vci.JWTTypeOpenID4VCIProof { - return generateProofError(oidc4vci.Error{ - Err: fmt.Errorf("invalid typ claim (expected: %s): %s", oidc4vci.JWTTypeOpenID4VCIProof, typ), - Code: oidc4vci.InvalidProof, + if typ != openid4vci.JWTTypeOpenID4VCIProof { + return generateProofError(openid4vci.Error{ + Err: fmt.Errorf("invalid typ claim (expected: %s): %s", openid4vci.JWTTypeOpenID4VCIProof, typ), + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } @@ -392,9 +392,9 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o // given the JWT typ, the nonce is in the 'nonce' claim nonce, ok := token.Get("nonce") if !ok { - return generateProofError(oidc4vci.Error{ + return generateProofError(openid4vci.Error{ Err: errors.New("missing nonce claim"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, }) } @@ -405,16 +405,16 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o return err } if flowFromNonce == nil { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("unknown nonce"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, } } if flowFromNonce.ID != flow.ID { - return oidc4vci.Error{ + return openid4vci.Error{ Err: errors.New("nonce not valid for access token"), - Code: oidc4vci.InvalidProof, + Code: openid4vci.InvalidProof, StatusCode: http.StatusBadRequest, } } @@ -422,21 +422,21 @@ func (i *openidHandler) validateProof(ctx context.Context, flow *Flow, request o return nil } -func (i *openidHandler) createOffer(ctx context.Context, credential vc.VerifiableCredential, preAuthorizedCode string) (*oidc4vci.CredentialOffer, error) { +func (i *openidHandler) createOffer(ctx context.Context, credential vc.VerifiableCredential, preAuthorizedCode string) (*openid4vci.CredentialOffer, error) { grantParams := map[string]interface{}{ "pre-authorized_code": preAuthorizedCode, } - offer := oidc4vci.CredentialOffer{ + offer := openid4vci.CredentialOffer{ CredentialIssuer: i.issuerIdentifierURL, - Credentials: []oidc4vci.OfferedCredential{{ - Format: oidc4vci.VerifiableCredentialJSONLDFormat, - CredentialDefinition: &oidc4vci.CredentialDefinition{ + Credentials: []openid4vci.OfferedCredential{{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, + CredentialDefinition: &openid4vci.CredentialDefinition{ Context: credential.Context, Type: credential.Type, }, }}, Grants: map[string]interface{}{ - oidc4vci.PreAuthorizedCodeGrant: grantParams, + openid4vci.PreAuthorizedCodeGrant: grantParams, }, } subjectDID, _ := getSubjectDID(credential) // succeeded in previous step, can't fail @@ -449,7 +449,7 @@ func (i *openidHandler) createOffer(ctx context.Context, credential vc.Verifiabl Credentials: []vc.VerifiableCredential{credential}, Grants: []Grant{ { - Type: oidc4vci.PreAuthorizedCodeGrant, + Type: openid4vci.PreAuthorizedCodeGrant, Params: grantParams, }, }, diff --git a/vcr/issuer/openid_mock.go b/vcr/issuer/openid_mock.go index f36d479e82..1785bb3d62 100644 --- a/vcr/issuer/openid_mock.go +++ b/vcr/issuer/openid_mock.go @@ -9,7 +9,7 @@ import ( reflect "reflect" vc "github.com/nuts-foundation/go-did/vc" - oidc4vci "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + openid4vci "github.com/nuts-foundation/nuts-node/vcr/openid4vci" gomock "go.uber.org/mock/gomock" ) @@ -53,7 +53,7 @@ func (mr *MockOpenIDHandlerMockRecorder) HandleAccessTokenRequest(ctx, preAuthor } // HandleCredentialRequest mocks base method. -func (m *MockOpenIDHandler) HandleCredentialRequest(ctx context.Context, request oidc4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) { +func (m *MockOpenIDHandler) HandleCredentialRequest(ctx context.Context, request openid4vci.CredentialRequest, accessToken string) (*vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "HandleCredentialRequest", ctx, request, accessToken) ret0, _ := ret[0].(*vc.VerifiableCredential) @@ -68,10 +68,10 @@ func (mr *MockOpenIDHandlerMockRecorder) HandleCredentialRequest(ctx, request, a } // Metadata mocks base method. -func (m *MockOpenIDHandler) Metadata() oidc4vci.CredentialIssuerMetadata { +func (m *MockOpenIDHandler) Metadata() openid4vci.CredentialIssuerMetadata { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Metadata") - ret0, _ := ret[0].(oidc4vci.CredentialIssuerMetadata) + ret0, _ := ret[0].(openid4vci.CredentialIssuerMetadata) return ret0 } @@ -96,10 +96,10 @@ func (mr *MockOpenIDHandlerMockRecorder) OfferCredential(ctx, credential, wallet } // ProviderMetadata mocks base method. -func (m *MockOpenIDHandler) ProviderMetadata() oidc4vci.ProviderMetadata { +func (m *MockOpenIDHandler) ProviderMetadata() openid4vci.ProviderMetadata { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProviderMetadata") - ret0, _ := ret[0].(oidc4vci.ProviderMetadata) + ret0, _ := ret[0].(openid4vci.ProviderMetadata) return ret0 } diff --git a/vcr/issuer/openid_test.go b/vcr/issuer/openid_test.go index 002cc8e907..9c57888b01 100644 --- a/vcr/issuer/openid_test.go +++ b/vcr/issuer/openid_test.go @@ -28,7 +28,7 @@ import ( "github.com/nuts-foundation/nuts-node/audit" "github.com/nuts-foundation/nuts-node/core" "github.com/nuts-foundation/nuts-node/crypto" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -65,21 +65,21 @@ var issuedVC = vc.VerifiableCredential{ func TestNew(t *testing.T) { t.Run("custom definitions", func(t *testing.T) { - iss, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/valid", oidc4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) + iss, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/valid", openid4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) require.NoError(t, err) assert.Len(t, iss.(*openidHandler).credentialsSupported, 3) }) t.Run("error - invalid json", func(t *testing.T) { - _, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/invalid", oidc4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) + _, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/invalid", openid4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) require.Error(t, err) assert.EqualError(t, err, "failed to parse credential definition from test/invalid/invalid.json: unexpected end of JSON input") }) t.Run("error - invalid directory", func(t *testing.T) { - _, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/non_existing", oidc4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) + _, err := NewOpenIDHandler(issuerDID, issuerIdentifier, "./test/non_existing", openid4vci.ClientConfig{}, nil, NewOpenIDMemoryStore()) require.Error(t, err) assert.EqualError(t, err, "failed to load credential definitions: lstat ./test/non_existing: no such file or directory") @@ -93,7 +93,7 @@ func Test_memoryIssuer_Metadata(t *testing.T) { metadata := issuer.Metadata() assert.Equal(t, "https://example.com/did:nuts:issuer", metadata.CredentialIssuer) - assert.Equal(t, "https://example.com/did:nuts:issuer/issuer/oidc4vci/credential", metadata.CredentialEndpoint) + assert.Equal(t, "https://example.com/did:nuts:issuer/issuer/openid4vci/credential", metadata.CredentialEndpoint) require.Len(t, metadata.CredentialsSupported, 3) assert.Equal(t, "ldp_vc", metadata.CredentialsSupported[0]["format"]) require.Len(t, metadata.CredentialsSupported[0]["cryptographic_binding_methods_supported"], 1) @@ -108,7 +108,7 @@ func Test_memoryIssuer_Metadata(t *testing.T) { func Test_memoryIssuer_ProviderMetadata(t *testing.T) { metadata := requireNewTestHandler(t, nil).ProviderMetadata() - assert.Equal(t, oidc4vci.ProviderMetadata{ + assert.Equal(t, openid4vci.ProviderMetadata{ Issuer: "https://example.com/did:nuts:issuer", TokenEndpoint: "https://example.com/did:nuts:issuer/oidc/token", PreAuthorizedGrantAnonymousAccessSupported: true, @@ -127,7 +127,7 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { createHeaders := func() map[string]interface{} { return map[string]interface{}{ - "typ": oidc4vci.JWTTypeOpenID4VCIProof, + "typ": openid4vci.JWTTypeOpenID4VCIProof, "kid": keyID, } } @@ -138,12 +138,12 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { "nonce": nonce, } } - createRequest := func(headers, claims map[string]interface{}) oidc4vci.CredentialRequest { + createRequest := func(headers, claims map[string]interface{}) openid4vci.CredentialRequest { proof, err := keyStore.SignJWT(ctx, claims, headers, headers["kid"]) require.NoError(t, err) - return oidc4vci.CredentialRequest{ - Format: oidc4vci.VerifiableCredentialJSONLDFormat, - CredentialDefinition: &oidc4vci.CredentialDefinition{ + return openid4vci.CredentialRequest{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, + CredentialDefinition: &openid4vci.CredentialDefinition{ Context: []ssi.URI{ ssi.MustParseURI("https://www.w3.org/2018/credentials/v1"), ssi.MustParseURI("http://example.org/credentials/V1"), @@ -153,9 +153,9 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { ssi.MustParseURI("HumanCredential"), }, }, - Proof: &oidc4vci.CredentialRequestProof{ + Proof: &openid4vci.CredentialRequestProof{ Jwt: proof, - ProofType: oidc4vci.ProofTypeJWT, + ProofType: openid4vci.ProofTypeJWT, }, } } @@ -176,7 +176,7 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { require.NoError(t, err) require.NotNil(t, response) assert.Equal(t, issuerDID.URI(), response.Issuer) - auditLogs.AssertContains(t, "VCR", "VerifiableCredentialRetrievedEvent", audit.TestActor, "VC retrieved by wallet over OIDC4VCI") + auditLogs.AssertContains(t, "VCR", "VerifiableCredentialRetrievedEvent", audit.TestActor, "VC retrieved by wallet over OpenID4VCI") }) t.Run("unsupported format", func(t *testing.T) { request := createRequest(createHeaders(), createClaims(cNonce)) @@ -222,10 +222,10 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { _, err := service.HandleCredentialRequest(ctx, invalidRequest, accessToken) - require.ErrorAs(t, err, new(oidc4vci.Error)) - cNonce := err.(oidc4vci.Error).CNonce + require.ErrorAs(t, err, new(openid4vci.Error)) + cNonce := err.(openid4vci.Error).CNonce assert.NotNil(t, cNonce) - assert.NotNil(t, err.(oidc4vci.Error).CNonceExpiresIn) + assert.NotNil(t, err.(openid4vci.Error).CNonceExpiresIn) flow, err := service.store.FindByReference(ctx, cNonceRefType, *cNonce) require.NoError(t, err) @@ -356,10 +356,10 @@ func Test_memoryIssuer_HandleCredentialRequest(t *testing.T) { func Test_memoryIssuer_OfferCredential(t *testing.T) { t.Run("ok", func(t *testing.T) { ctrl := gomock.NewController(t) - wallet := oidc4vci.NewMockWalletAPIClient(ctrl) + wallet := openid4vci.NewMockWalletAPIClient(ctrl) wallet.EXPECT().OfferCredential(gomock.Any(), gomock.Any()).Return(nil) service := requireNewTestHandler(t, nil) - service.walletClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (oidc4vci.WalletAPIClient, error) { + service.walletClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (openid4vci.WalletAPIClient, error) { return wallet, nil } @@ -369,11 +369,11 @@ func Test_memoryIssuer_OfferCredential(t *testing.T) { }) t.Run("client offer error", func(t *testing.T) { ctrl := gomock.NewController(t) - wallet := oidc4vci.NewMockWalletAPIClient(ctrl) - wallet.EXPECT().Metadata().Return(oidc4vci.OAuth2ClientMetadata{CredentialOfferEndpoint: "here-please"}) + wallet := openid4vci.NewMockWalletAPIClient(ctrl) + wallet.EXPECT().Metadata().Return(openid4vci.OAuth2ClientMetadata{CredentialOfferEndpoint: "here-please"}) wallet.EXPECT().OfferCredential(gomock.Any(), gomock.Any()).Return(errors.New("failed")) service := requireNewTestHandler(t, nil) - service.walletClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (oidc4vci.WalletAPIClient, error) { + service.walletClientCreator = func(_ context.Context, _ core.HTTPRequestDoer, _ string) (openid4vci.WalletAPIClient, error) { return wallet, nil } @@ -397,16 +397,16 @@ func Test_memoryIssuer_HandleAccessTokenRequest(t *testing.T) { }) t.Run("pre-authorized code issued by other issuer", func(t *testing.T) { store := NewOpenIDMemoryStore() - service, err := NewOpenIDHandler(issuerDID, issuerIdentifier, definitionsDIR, oidc4vci.ClientConfig{}, nil, store) + service, err := NewOpenIDHandler(issuerDID, issuerIdentifier, definitionsDIR, openid4vci.ClientConfig{}, nil, store) require.NoError(t, err) _, err = service.(*openidHandler).createOffer(ctx, issuedVC, "code") require.NoError(t, err) - otherService, err := NewOpenIDHandler(did.MustParseDID("did:nuts:other"), "http://example.com/other", definitionsDIR, oidc4vci.ClientConfig{}, nil, store) + otherService, err := NewOpenIDHandler(did.MustParseDID("did:nuts:other"), "http://example.com/other", definitionsDIR, openid4vci.ClientConfig{}, nil, store) require.NoError(t, err) accessToken, _, err := otherService.HandleAccessTokenRequest(audit.TestContext(), "code") - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, "invalid_grant - pre-authorized code not issued by this issuer") assert.Equal(t, http.StatusBadRequest, protocolError.StatusCode) @@ -419,7 +419,7 @@ func Test_memoryIssuer_HandleAccessTokenRequest(t *testing.T) { accessToken, _, err := service.HandleAccessTokenRequest(audit.TestContext(), "code") - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, "invalid_grant - unknown pre-authorized code") assert.Equal(t, http.StatusBadRequest, protocolError.StatusCode) @@ -428,14 +428,14 @@ func Test_memoryIssuer_HandleAccessTokenRequest(t *testing.T) { } func assertProtocolError(t *testing.T, err error, statusCode int, message string) { - var protocolError oidc4vci.Error + var protocolError openid4vci.Error require.ErrorAs(t, err, &protocolError) assert.EqualError(t, protocolError, message) assert.Equal(t, statusCode, protocolError.StatusCode) } func requireNewTestHandler(t *testing.T, keyResolver types.KeyResolver) *openidHandler { - service, err := NewOpenIDHandler(issuerDID, issuerIdentifier, definitionsDIR, oidc4vci.ClientConfig{}, keyResolver, NewOpenIDMemoryStore()) + service, err := NewOpenIDHandler(issuerDID, issuerIdentifier, definitionsDIR, openid4vci.ClientConfig{}, keyResolver, NewOpenIDMemoryStore()) require.NoError(t, err) return service.(*openidHandler) } diff --git a/vcr/mock.go b/vcr/mock.go index 4b5eedce39..7c6e563b6b 100644 --- a/vcr/mock.go +++ b/vcr/mock.go @@ -9,7 +9,7 @@ import ( reflect "reflect" time "time" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" did "github.com/nuts-foundation/go-did/did" vc "github.com/nuts-foundation/go-did/vc" holder "github.com/nuts-foundation/nuts-node/vcr/holder" @@ -80,7 +80,7 @@ func (m *MockTrustManager) EXPECT() *MockTrustManagerMockRecorder { } // Trust mocks base method. -func (m *MockTrustManager) Trust(credentialType, issuer go_did.URI) error { +func (m *MockTrustManager) Trust(credentialType, issuer ssi.URI) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trust", credentialType, issuer) ret0, _ := ret[0].(error) @@ -94,10 +94,10 @@ func (mr *MockTrustManagerMockRecorder) Trust(credentialType, issuer interface{} } // Trusted mocks base method. -func (m *MockTrustManager) Trusted(credentialType go_did.URI) ([]go_did.URI, error) { +func (m *MockTrustManager) Trusted(credentialType ssi.URI) ([]ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trusted", credentialType) - ret0, _ := ret[0].([]go_did.URI) + ret0, _ := ret[0].([]ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -109,7 +109,7 @@ func (mr *MockTrustManagerMockRecorder) Trusted(credentialType interface{}) *gom } // Untrust mocks base method. -func (m *MockTrustManager) Untrust(credentialType, issuer go_did.URI) error { +func (m *MockTrustManager) Untrust(credentialType, issuer ssi.URI) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Untrust", credentialType, issuer) ret0, _ := ret[0].(error) @@ -123,10 +123,10 @@ func (mr *MockTrustManagerMockRecorder) Untrust(credentialType, issuer interface } // Untrusted mocks base method. -func (m *MockTrustManager) Untrusted(credentialType go_did.URI) ([]go_did.URI, error) { +func (m *MockTrustManager) Untrusted(credentialType ssi.URI) ([]ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Untrusted", credentialType) - ret0, _ := ret[0].([]go_did.URI) + ret0, _ := ret[0].([]ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -161,7 +161,7 @@ func (m *MockResolver) EXPECT() *MockResolverMockRecorder { } // Resolve mocks base method. -func (m *MockResolver) Resolve(ID go_did.URI, resolveTime *time.Time) (*vc.VerifiableCredential, error) { +func (m *MockResolver) Resolve(ID ssi.URI, resolveTime *time.Time) (*vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Resolve", ID, resolveTime) ret0, _ := ret[0].(*vc.VerifiableCredential) @@ -256,22 +256,22 @@ func (mr *MockVCRMockRecorder) Issuer() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Issuer", reflect.TypeOf((*MockVCR)(nil).Issuer)) } -// OIDC4VCIEnabled mocks base method. -func (m *MockVCR) OIDC4VCIEnabled() bool { +// OpenID4VCIEnabled mocks base method. +func (m *MockVCR) OpenID4VCIEnabled() bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "OIDC4VCIEnabled") + ret := m.ctrl.Call(m, "OpenID4VCIEnabled") ret0, _ := ret[0].(bool) return ret0 } -// OIDC4VCIEnabled indicates an expected call of OIDC4VCIEnabled. -func (mr *MockVCRMockRecorder) OIDC4VCIEnabled() *gomock.Call { +// OpenID4VCIEnabled indicates an expected call of OpenID4VCIEnabled. +func (mr *MockVCRMockRecorder) OpenID4VCIEnabled() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OIDC4VCIEnabled", reflect.TypeOf((*MockVCR)(nil).OIDC4VCIEnabled)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OpenID4VCIEnabled", reflect.TypeOf((*MockVCR)(nil).OpenID4VCIEnabled)) } // Resolve mocks base method. -func (m *MockVCR) Resolve(ID go_did.URI, resolveTime *time.Time) (*vc.VerifiableCredential, error) { +func (m *MockVCR) Resolve(ID ssi.URI, resolveTime *time.Time) (*vc.VerifiableCredential, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Resolve", ID, resolveTime) ret0, _ := ret[0].(*vc.VerifiableCredential) @@ -315,7 +315,7 @@ func (mr *MockVCRMockRecorder) StoreCredential(vc, validAt interface{}) *gomock. } // Trust mocks base method. -func (m *MockVCR) Trust(credentialType, issuer go_did.URI) error { +func (m *MockVCR) Trust(credentialType, issuer ssi.URI) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trust", credentialType, issuer) ret0, _ := ret[0].(error) @@ -329,10 +329,10 @@ func (mr *MockVCRMockRecorder) Trust(credentialType, issuer interface{}) *gomock } // Trusted mocks base method. -func (m *MockVCR) Trusted(credentialType go_did.URI) ([]go_did.URI, error) { +func (m *MockVCR) Trusted(credentialType ssi.URI) ([]ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trusted", credentialType) - ret0, _ := ret[0].([]go_did.URI) + ret0, _ := ret[0].([]ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -344,7 +344,7 @@ func (mr *MockVCRMockRecorder) Trusted(credentialType interface{}) *gomock.Call } // Untrust mocks base method. -func (m *MockVCR) Untrust(credentialType, issuer go_did.URI) error { +func (m *MockVCR) Untrust(credentialType, issuer ssi.URI) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Untrust", credentialType, issuer) ret0, _ := ret[0].(error) @@ -358,10 +358,10 @@ func (mr *MockVCRMockRecorder) Untrust(credentialType, issuer interface{}) *gomo } // Untrusted mocks base method. -func (m *MockVCR) Untrusted(credentialType go_did.URI) ([]go_did.URI, error) { +func (m *MockVCR) Untrusted(credentialType ssi.URI) ([]ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Untrusted", credentialType) - ret0, _ := ret[0].([]go_did.URI) + ret0, _ := ret[0].([]ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/vcr/oidc4vci/error.go b/vcr/openid4vci/error.go similarity index 99% rename from vcr/oidc4vci/error.go rename to vcr/openid4vci/error.go index 002c354627..6c61c3dbc1 100644 --- a/vcr/oidc4vci/error.go +++ b/vcr/openid4vci/error.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci // ErrorCode specifies error codes as defined by the OpenID4VCI spec. type ErrorCode string diff --git a/vcr/oidc4vci/error_test.go b/vcr/openid4vci/error_test.go similarity index 98% rename from vcr/oidc4vci/error_test.go rename to vcr/openid4vci/error_test.go index ea255a8d44..6592a62c55 100644 --- a/vcr/oidc4vci/error_test.go +++ b/vcr/openid4vci/error_test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "errors" diff --git a/vcr/oidc4vci/identifiers.go b/vcr/openid4vci/identifiers.go similarity index 99% rename from vcr/oidc4vci/identifiers.go rename to vcr/openid4vci/identifiers.go index fe597a71ec..c2457e76ce 100644 --- a/vcr/oidc4vci/identifiers.go +++ b/vcr/openid4vci/identifiers.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "crypto/tls" diff --git a/vcr/oidc4vci/identifiers_mock.go b/vcr/openid4vci/identifiers_mock.go similarity index 92% rename from vcr/oidc4vci/identifiers_mock.go rename to vcr/openid4vci/identifiers_mock.go index a4a15c0591..af131af52f 100644 --- a/vcr/oidc4vci/identifiers_mock.go +++ b/vcr/openid4vci/identifiers_mock.go @@ -1,8 +1,8 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: vcr/oidc4vci/identifiers.go +// Source: vcr/openid4vci/identifiers.go -// Package oidc4vci is a generated GoMock package. -package oidc4vci +// Package openid4vci is a generated GoMock package. +package openid4vci import ( reflect "reflect" diff --git a/vcr/oidc4vci/identifiers_test.go b/vcr/openid4vci/identifiers_test.go similarity index 99% rename from vcr/oidc4vci/identifiers_test.go rename to vcr/openid4vci/identifiers_test.go index 8ff5b196ff..e894fec216 100644 --- a/vcr/oidc4vci/identifiers_test.go +++ b/vcr/openid4vci/identifiers_test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "crypto/tls" diff --git a/vcr/oidc4vci/issuer_client.go b/vcr/openid4vci/issuer_client.go similarity index 98% rename from vcr/oidc4vci/issuer_client.go rename to vcr/openid4vci/issuer_client.go index 4721d7ce27..df8ab89350 100644 --- a/vcr/oidc4vci/issuer_client.go +++ b/vcr/openid4vci/issuer_client.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "bytes" @@ -50,8 +50,8 @@ func NewIssuerAPIClient(ctx context.Context, httpClient core.HTTPRequestDoer, cr return nil, errors.New("empty Credential Issuer Identifier") } - // Load OIDC4VCI metadata and OIDC metadata - // TODO: Use the OIDC4VCI credential issuers metadata to load the OIDC metadata? + // Load OpenID4VCI metadata and OIDC metadata + // TODO: Use the OpenID4VCI credential issuers metadata to load the OIDC metadata? metadata, err := loadCredentialIssuerMetadata(ctx, credentialIssuerIdentifier, httpClient) if err != nil { return nil, fmt.Errorf("unable to load Credential Issuer Metadata (identifier=%s): %w", credentialIssuerIdentifier, err) diff --git a/vcr/oidc4vci/issuer_client_mock.go b/vcr/openid4vci/issuer_client_mock.go similarity index 97% rename from vcr/oidc4vci/issuer_client_mock.go rename to vcr/openid4vci/issuer_client_mock.go index c49860ff74..4bad77b317 100644 --- a/vcr/oidc4vci/issuer_client_mock.go +++ b/vcr/openid4vci/issuer_client_mock.go @@ -1,8 +1,8 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: vcr/oidc4vci/issuer_client.go +// Source: vcr/openid4vci/issuer_client.go -// Package oidc4vci is a generated GoMock package. -package oidc4vci +// Package openid4vci is a generated GoMock package. +package openid4vci import ( context "context" diff --git a/vcr/oidc4vci/issuer_client_test.go b/vcr/openid4vci/issuer_client_test.go similarity index 99% rename from vcr/oidc4vci/issuer_client_test.go rename to vcr/openid4vci/issuer_client_test.go index a4fb819449..2e7f48491e 100644 --- a/vcr/oidc4vci/issuer_client_test.go +++ b/vcr/openid4vci/issuer_client_test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "context" diff --git a/vcr/oidc4vci/test.go b/vcr/openid4vci/test.go similarity index 97% rename from vcr/oidc4vci/test.go rename to vcr/openid4vci/test.go index 2847f98f62..eb5c88dc70 100644 --- a/vcr/oidc4vci/test.go +++ b/vcr/openid4vci/test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "context" @@ -28,7 +28,7 @@ import ( "time" ) -// setupClientTest starts an HTTP server that stubs OIDC4VCI operations, which can then be used to test OIDC4VCI clients. +// setupClientTest starts an HTTP server that stubs OpenID4VCI operations, which can then be used to test OpenID4VCI clients. func setupClientTest(t *testing.T) *oidcClientTestContext { issuerMetadata := new(CredentialIssuerMetadata) providerMetadata := new(ProviderMetadata) diff --git a/vcr/oidc4vci/types.go b/vcr/openid4vci/types.go similarity index 95% rename from vcr/oidc4vci/types.go rename to vcr/openid4vci/types.go index 9fb295c573..5433db5971 100644 --- a/vcr/oidc4vci/types.go +++ b/vcr/openid4vci/types.go @@ -18,7 +18,7 @@ // This file defines types specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html -package oidc4vci +package openid4vci import ( "crypto/tls" @@ -26,7 +26,7 @@ import ( "time" ) -// PreAuthorizedCodeGrant is the grant type used for pre-authorized code grant from the OIDC4VCI specification. +// PreAuthorizedCodeGrant is the grant type used for pre-authorized code grant from the OpenID4VCI specification. // Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-pre-authorized-code-flow const PreAuthorizedCodeGrant = "urn:ietf:params:oauth:grant-type:pre-authorized_code" @@ -38,7 +38,7 @@ const WalletMetadataWellKnownPath = "/.well-known/openid-credential-wallet" // Specified by https://www.rfc-editor.org/rfc/rfc8414.html#section-3 const ProviderMetadataWellKnownPath = "/.well-known/oauth-authorization-server" -// CredentialIssuerMetadataWellKnownPath defines the well-known path for retrieving OIDC4VCI CredentialIssuerMetadata +// CredentialIssuerMetadataWellKnownPath defines the well-known path for retrieving OpenID4VCI CredentialIssuerMetadata // Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-credential-issuer-metadata- const CredentialIssuerMetadataWellKnownPath = "/.well-known/openid-credential-issuer" @@ -57,7 +57,7 @@ type CredentialOfferStatus string // CredentialOfferStatusReceived indicates that the wallet has received the credential. const CredentialOfferStatusReceived CredentialOfferStatus = "credential_received" -// CredentialIssuerMetadata defines the OIDC4VCI Credential Issuer Metadata. +// CredentialIssuerMetadata defines the OpenID4VCI Credential Issuer Metadata. // Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-credential-issuer-metadata type CredentialIssuerMetadata struct { // CredentialIssuer defines the identifier of the credential issuer. @@ -70,7 +70,7 @@ type CredentialIssuerMetadata struct { CredentialsSupported []map[string]interface{} `json:"credentials_supported"` } -// OAuth2ClientMetadata defines the OAuth2 Client Metadata, extended with OIDC4VCI parameters. +// OAuth2ClientMetadata defines the OAuth2 Client Metadata, extended with OpenID4VCI parameters. // Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-client-metadata. type OAuth2ClientMetadata struct { // CredentialOfferEndpoint defines URL of the verifiable credential wallet's offer endpoint @@ -122,7 +122,7 @@ type CredentialDefinition struct { } // CredentialOfferResponse defines the response for credential offer requests. -// It is an extension to the OIDC4VCI specification to better support server-to-server issuance. +// It is an extension to the OpenID4VCI specification to better support server-to-server issuance. type CredentialOfferResponse struct { // Status defines the status of the credential offer. Status CredentialOfferStatus `json:"status"` @@ -151,7 +151,7 @@ type CredentialResponse struct { CNonce *string `json:"c_nonce,omitempty"` } -// TokenResponse defines the response for OAuth2 access token requests, extended with OIDC4VCI parameters. +// TokenResponse defines the response for OAuth2 access token requests, extended with OpenID4VCI parameters. // Specified by https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-successful-token-response type TokenResponse struct { // AccessToken defines the access token issued by the authorization server. @@ -170,11 +170,11 @@ type TokenResponse struct { TokenType string `json:"token_type"` } -// Config holds the config for the OIDC4VCI credential issuer and wallet +// Config holds the config for the OpenID4VCI credential issuer and wallet type Config struct { // DefinitionsDIR defines the directory where the additional credential definitions are stored DefinitionsDIR string `koanf:"definitionsdir"` - // Enabled indicates if issuing and receiving credentials over OIDC4VCI is enabled + // Enabled indicates if issuing and receiving credentials over OpenID4VCI is enabled Enabled bool `koanf:"enabled"` // Timeout defines the timeout for HTTP client operations Timeout time.Duration `koanf:"timeout"` diff --git a/vcr/oidc4vci/validators.go b/vcr/openid4vci/validators.go similarity index 99% rename from vcr/oidc4vci/validators.go rename to vcr/openid4vci/validators.go index 9d6fe585b4..b9f854fbb0 100644 --- a/vcr/oidc4vci/validators.go +++ b/vcr/openid4vci/validators.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "errors" diff --git a/vcr/oidc4vci/validators_test.go b/vcr/openid4vci/validators_test.go similarity index 99% rename from vcr/oidc4vci/validators_test.go rename to vcr/openid4vci/validators_test.go index e382ff5510..d5d3572bad 100644 --- a/vcr/oidc4vci/validators_test.go +++ b/vcr/openid4vci/validators_test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( ssi "github.com/nuts-foundation/go-did" diff --git a/vcr/oidc4vci/wallet_client.go b/vcr/openid4vci/wallet_client.go similarity index 99% rename from vcr/oidc4vci/wallet_client.go rename to vcr/openid4vci/wallet_client.go index 937a62d83a..edb73262ec 100644 --- a/vcr/oidc4vci/wallet_client.go +++ b/vcr/openid4vci/wallet_client.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "context" diff --git a/vcr/oidc4vci/wallet_client_mock.go b/vcr/openid4vci/wallet_client_mock.go similarity index 94% rename from vcr/oidc4vci/wallet_client_mock.go rename to vcr/openid4vci/wallet_client_mock.go index c5d9cb0338..01bccc4096 100644 --- a/vcr/oidc4vci/wallet_client_mock.go +++ b/vcr/openid4vci/wallet_client_mock.go @@ -1,8 +1,8 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: vcr/oidc4vci/wallet_client.go +// Source: vcr/openid4vci/wallet_client.go -// Package oidc4vci is a generated GoMock package. -package oidc4vci +// Package openid4vci is a generated GoMock package. +package openid4vci import ( context "context" diff --git a/vcr/oidc4vci/wallet_client_test.go b/vcr/openid4vci/wallet_client_test.go similarity index 99% rename from vcr/oidc4vci/wallet_client_test.go rename to vcr/openid4vci/wallet_client_test.go index 5261b564e9..5310eb4ec0 100644 --- a/vcr/oidc4vci/wallet_client_test.go +++ b/vcr/openid4vci/wallet_client_test.go @@ -16,7 +16,7 @@ * */ -package oidc4vci +package openid4vci import ( "context" diff --git a/vcr/signature/mock.go b/vcr/signature/mock.go index 0f0dc7e371..2c52ac4834 100644 --- a/vcr/signature/mock.go +++ b/vcr/signature/mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" crypto "github.com/nuts-foundation/nuts-node/crypto" gomock "go.uber.org/mock/gomock" ) @@ -66,10 +66,10 @@ func (mr *MockSuiteMockRecorder) CanonicalizeDocument(doc interface{}) *gomock.C } // GetType mocks base method. -func (m *MockSuite) GetType() go_did.ProofType { +func (m *MockSuite) GetType() ssi.ProofType { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetType") - ret0, _ := ret[0].(go_did.ProofType) + ret0, _ := ret[0].(ssi.ProofType) return ret0 } diff --git a/vcr/test/openid4vci_integration_test.go b/vcr/test/openid4vci_integration_test.go index f2cde638f8..b03bb3fb35 100644 --- a/vcr/test/openid4vci_integration_test.go +++ b/vcr/test/openid4vci_integration_test.go @@ -23,7 +23,7 @@ import ( "encoding/json" "github.com/nuts-foundation/nuts-node/core" httpModule "github.com/nuts-foundation/nuts-node/http" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/stretchr/testify/assert" "io" "net/http" @@ -47,13 +47,13 @@ import ( "github.com/stretchr/testify/require" ) -// TestOpenID4VCIHappyFlow tests issuing a VC using OIDC4VCI. +// TestOpenID4VCIHappyFlow tests issuing a VC using OpenID4VCI. func TestOpenID4VCIHappyFlow(t *testing.T) { auditLogs := audit.CaptureLogs(t) ctx := audit.TestContext() baseURL, system := node.StartServer(t, func(serverURL string) { - t.Setenv("NUTS_VCR_OIDC4VCI_ENABLED", "true") - t.Setenv("NUTS_VCR_OIDC4VCI_URL", serverURL) + t.Setenv("NUTS_VCR_OPENID4VCI_ENABLED", "true") + t.Setenv("NUTS_VCR_OPENID4VCI_URL", serverURL) }) vcrService := system.FindEngineByName("vcr").(vcr.VCR) @@ -79,12 +79,12 @@ func TestOpenID4VCIHappyFlow(t *testing.T) { }, 5*time.Second, "credential not retrieved by holder") } -// TestOpenID4VCI_Metadata tests resolving OIDC4VCI metadata, while the party hasn't registered its base URL. +// TestOpenID4VCI_Metadata tests resolving OpenID4VCI metadata, while the party hasn't registered its base URL. func TestOpenID4VCI_Metadata(t *testing.T) { ctx := audit.TestContext() baseURL, system := node.StartServer(t, func(serverURL string) { - t.Setenv("NUTS_VCR_OIDC4VCI_ENABLED", "true") - t.Setenv("NUTS_VCR_OIDC4VCI_URL", serverURL) + t.Setenv("NUTS_VCR_OPENID4VCI_ENABLED", "true") + t.Setenv("NUTS_VCR_OPENID4VCI_URL", serverURL) t.Setenv("NUTS_HTTP_DEFAULT_TLS", string(httpModule.TLServerClientCertMode)) }) vcrService := system.FindEngineByName("vcr").(vcr.VCR) @@ -92,7 +92,7 @@ func TestOpenID4VCI_Metadata(t *testing.T) { // Set OpenID4VCI Wallet Identifier TLS resolver port to the server port generated by the test server parsedURL, _ := url.Parse(baseURL) serverPort, _ := strconv.Atoi(parsedURL.Port()) - oidc4vci.SetTLSIdentifierResolverPort(t, serverPort) + openid4vci.SetTLSIdentifierResolverPort(t, serverPort) issuer, err := vcrService.GetOpenIDIssuer(ctx, issuerDID) @@ -102,7 +102,7 @@ func TestOpenID4VCI_Metadata(t *testing.T) { require.NotNil(t, metadata) } -// TestOpenID4VCIDisabled tests the issuer won't try to issue over OIDC4VCI when it's disabled. +// TestOpenID4VCIDisabled tests the issuer won't try to issue over OpenID4VCI when it's disabled. func TestOpenID4VCIDisabled(t *testing.T) { baseURL, system := node.StartServer(t) @@ -111,7 +111,7 @@ func TestOpenID4VCIDisabled(t *testing.T) { registerBaseURL(t, baseURL, system, walletDID) t.Run("API returns 404", func(t *testing.T) { - resp, err := http.Get(core.JoinURLPaths(baseURL, "n2n", "identity", url.PathEscape(walletDID.String()), oidc4vci.WalletMetadataWellKnownPath)) + resp, err := http.Get(core.JoinURLPaths(baseURL, "n2n", "identity", url.PathEscape(walletDID.String()), openid4vci.WalletMetadataWellKnownPath)) require.NoError(t, err) assert.Equal(t, http.StatusNotFound, resp.StatusCode) data, _ := io.ReadAll(resp.Body) @@ -119,12 +119,12 @@ func TestOpenID4VCIDisabled(t *testing.T) { }) } -// TestOpenID4VCIErrorResponses tests the API returns the correct error responses (as specified in the OIDC4VCI spec, not as Problem types). +// TestOpenID4VCIErrorResponses tests the API returns the correct error responses (as specified in the OpenID4VCI spec, not as Problem types). func TestOpenID4VCIErrorResponses(t *testing.T) { ctx := audit.TestContext() httpServerURL, system := node.StartServer(t, func(serverURL string) { - t.Setenv("NUTS_VCR_OIDC4VCI_ENABLED", "true") - t.Setenv("NUTS_VCR_OIDC4VCI_URL", serverURL) + t.Setenv("NUTS_VCR_OPENID4VCI_ENABLED", "true") + t.Setenv("NUTS_VCR_OPENID4VCI_URL", serverURL) }) vcrService := system.FindEngineByName("vcr").(vcr.VCR) @@ -134,8 +134,8 @@ func TestOpenID4VCIErrorResponses(t *testing.T) { issuer, err := vcrService.GetOpenIDIssuer(ctx, walletDID) require.NoError(t, err) - requestBody, _ := json.Marshal(oidc4vci.CredentialRequest{ - Format: oidc4vci.VerifiableCredentialJSONLDFormat, + requestBody, _ := json.Marshal(openid4vci.CredentialRequest{ + Format: openid4vci.VerifiableCredentialJSONLDFormat, }) t.Run("error from API layer (missing access token)", func(t *testing.T) { diff --git a/vcr/vcr.go b/vcr/vcr.go index 3c7828cd7f..3ea6d50d24 100644 --- a/vcr/vcr.go +++ b/vcr/vcr.go @@ -26,7 +26,7 @@ import ( "errors" "fmt" "github.com/nuts-foundation/nuts-node/pki" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/nuts-foundation/nuts-node/vdr/didstore" "io/fs" "net/http" @@ -101,7 +101,7 @@ type vcr struct { eventManager events.Event storageClient storage.Engine openidIsssuerStore issuer.OpenIDStore - localWalletResolver oidc4vci.IdentifierResolver + localWalletResolver openid4vci.IdentifierResolver documentOwner vdr.DocumentOwner pkiProvider pki.Provider clientTLSConfig *tls.Config @@ -112,12 +112,12 @@ func (c *vcr) GetOpenIDIssuer(ctx context.Context, id did.DID) (issuer.OpenIDHan if err != nil { return nil, err } - clientConfig := oidc4vci.ClientConfig{ - Timeout: c.config.OIDC4VCI.Timeout, + clientConfig := openid4vci.ClientConfig{ + Timeout: c.config.OpenID4VCI.Timeout, TLS: c.clientTLSConfig, HTTPSOnly: c.strictmode, } - return issuer.NewOpenIDHandler(id, identifier, c.config.OIDC4VCI.DefinitionsDIR, clientConfig, c.keyResolver, c.openidIsssuerStore) + return issuer.NewOpenIDHandler(id, identifier, c.config.OpenID4VCI.DefinitionsDIR, clientConfig, c.keyResolver, c.openidIsssuerStore) } func (c *vcr) GetOpenIDHolder(ctx context.Context, id did.DID) (holder.OpenIDHandler, error) { @@ -125,8 +125,8 @@ func (c *vcr) GetOpenIDHolder(ctx context.Context, id did.DID) (holder.OpenIDHan if err != nil { return nil, err } - clientConfig := oidc4vci.ClientConfig{ - Timeout: c.config.OIDC4VCI.Timeout, + clientConfig := openid4vci.ClientConfig{ + Timeout: c.config.OpenID4VCI.Timeout, TLS: c.clientTLSConfig, HTTPSOnly: c.strictmode, } @@ -136,9 +136,9 @@ func (c *vcr) GetOpenIDHolder(ctx context.Context, id did.DID) (holder.OpenIDHan func (c *vcr) resolveOpenID4VCIIdentifier(ctx context.Context, id did.DID) (string, error) { identifier, err := c.localWalletResolver.Resolve(id) if err != nil { - return "", oidc4vci.Error{ + return "", openid4vci.Error{ Err: fmt.Errorf("error resolving OpenID4VCI identifier: %w", err), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusNotFound, } } @@ -147,9 +147,9 @@ func (c *vcr) resolveOpenID4VCIIdentifier(ctx context.Context, id did.DID) (stri return "", err } if !isOwner { - return "", oidc4vci.Error{ + return "", openid4vci.Error{ Err: errors.New("DID is not owned by this node"), - Code: oidc4vci.InvalidRequest, + Code: openid4vci.InvalidRequest, StatusCode: http.StatusNotFound, } } @@ -198,13 +198,13 @@ func (c *vcr) Configure(config core.ServerConfig) error { c.trustConfig = trust.NewConfig(tcPath) networkPublisher := issuer.NewNetworkPublisher(c.network, c.didstore, c.keyStore) - if c.config.OIDC4VCI.Enabled { + if c.config.OpenID4VCI.Enabled { c.clientTLSConfig, err = c.pkiProvider.CreateTLSConfig(config.TLS) // returns nil if TLS is disabled if err != nil { return err } - c.localWalletResolver = oidc4vci.NewTLSIdentifierResolver( - oidc4vci.DIDIdentifierResolver{ServiceResolver: c.serviceResolver}, + c.localWalletResolver = openid4vci.NewTLSIdentifierResolver( + openid4vci.DIDIdentifierResolver{ServiceResolver: c.serviceResolver}, c.clientTLSConfig, ) c.openidIsssuerStore = issuer.NewOpenIDMemoryStore() @@ -355,8 +355,8 @@ func (c *vcr) Config() interface{} { return &c.config } -func (c *vcr) OIDC4VCIEnabled() bool { - return c.config.OIDC4VCI.Enabled +func (c *vcr) OpenID4VCIEnabled() bool { + return c.config.OpenID4VCI.Enabled } func (c *vcr) Resolve(ID ssi.URI, resolveTime *time.Time) (*vc.VerifiableCredential, error) { diff --git a/vcr/vcr_test.go b/vcr/vcr_test.go index 3f2a56cbc8..d4d9726574 100644 --- a/vcr/vcr_test.go +++ b/vcr/vcr_test.go @@ -25,7 +25,7 @@ import ( "errors" "github.com/nuts-foundation/nuts-node/pki" "github.com/nuts-foundation/nuts-node/storage" - "github.com/nuts-foundation/nuts-node/vcr/oidc4vci" + "github.com/nuts-foundation/nuts-node/vcr/openid4vci" "github.com/stretchr/testify/require" "os" "strings" @@ -57,7 +57,7 @@ func TestVCR_Configure(t *testing.T) { pkiProvider := pki.NewMockProvider(ctrl) pkiProvider.EXPECT().CreateTLSConfig(gomock.Any()).Return(nil, nil).AnyTimes() instance := NewVCRInstance(nil, nil, nil, jsonld.NewTestJSONLDManager(t), nil, storage.NewTestStorageEngine(testDirectory), pkiProvider, nil).(*vcr) - instance.config.OIDC4VCI.Enabled = true + instance.config.OpenID4VCI.Enabled = true err := instance.Configure(core.TestServerConfig(core.ServerConfig{Datadir: testDirectory})) @@ -73,12 +73,12 @@ func TestVCR_Configure(t *testing.T) { ctrl := gomock.NewController(t) pkiProvider := pki.NewMockProvider(ctrl) pkiProvider.EXPECT().CreateTLSConfig(gomock.Any()).Return(nil, nil).AnyTimes() - localWalletResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + localWalletResolver := openid4vci.NewMockIdentifierResolver(ctrl) localWalletResolver.EXPECT().Resolve(issuerDID).Return("https://example.com", nil).AnyTimes() documentOwner := types.NewMockDocumentOwner(ctrl) documentOwner.EXPECT().IsOwner(gomock.Any(), gomock.Any()).Return(true, nil).AnyTimes() instance := NewVCRInstance(nil, nil, nil, jsonld.NewTestJSONLDManager(t), nil, storage.NewTestStorageEngine(testDirectory), pkiProvider, documentOwner).(*vcr) - instance.config.OIDC4VCI.Enabled = true + instance.config.OpenID4VCI.Enabled = true err := instance.Configure(core.TestServerConfig(core.ServerConfig{Datadir: testDirectory, Strictmode: true})) require.NoError(t, err) @@ -279,7 +279,7 @@ func Test_vcr_GetOIDCIssuer(t *testing.T) { ctrl := gomock.NewController(t) documentOwner := types.NewMockDocumentOwner(ctrl) documentOwner.EXPECT().IsOwner(ctx, id).Return(true, nil) - identifierResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + identifierResolver := openid4vci.NewMockIdentifierResolver(ctrl) identifierResolver.EXPECT().Resolve(id).Return(identifier, nil) instance := NewTestVCRInstance(t) instance.documentOwner = documentOwner @@ -294,7 +294,7 @@ func Test_vcr_GetOIDCIssuer(t *testing.T) { ctrl := gomock.NewController(t) documentOwner := types.NewMockDocumentOwner(ctrl) documentOwner.EXPECT().IsOwner(ctx, id).Return(false, nil) - identifierResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + identifierResolver := openid4vci.NewMockIdentifierResolver(ctrl) identifierResolver.EXPECT().Resolve(id).Return(identifier, nil) instance := NewTestVCRInstance(t) instance.documentOwner = documentOwner @@ -308,7 +308,7 @@ func Test_vcr_GetOIDCIssuer(t *testing.T) { t.Run("resolver error", func(t *testing.T) { ctrl := gomock.NewController(t) documentOwner := types.NewMockDocumentOwner(ctrl) - identifierResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + identifierResolver := openid4vci.NewMockIdentifierResolver(ctrl) identifierResolver.EXPECT().Resolve(id).Return("", errors.New("failed")) instance := NewTestVCRInstance(t) instance.documentOwner = documentOwner @@ -329,7 +329,7 @@ func Test_vcr_GetOIDCWallet(t *testing.T) { ctrl := gomock.NewController(t) documentOwner := types.NewMockDocumentOwner(ctrl) documentOwner.EXPECT().IsOwner(ctx, id).Return(true, nil) - identifierResolver := oidc4vci.NewMockIdentifierResolver(ctrl) + identifierResolver := openid4vci.NewMockIdentifierResolver(ctrl) identifierResolver.EXPECT().Resolve(id).Return(identifier, nil) instance := NewTestVCRInstance(t) instance.documentOwner = documentOwner diff --git a/vcr/verifier/mock.go b/vcr/verifier/mock.go index 7525468496..c7d8a643e5 100644 --- a/vcr/verifier/mock.go +++ b/vcr/verifier/mock.go @@ -8,7 +8,7 @@ import ( reflect "reflect" time "time" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" vc "github.com/nuts-foundation/go-did/vc" core "github.com/nuts-foundation/nuts-node/core" credential "github.com/nuts-foundation/nuts-node/vcr/credential" @@ -39,7 +39,7 @@ func (m *MockVerifier) EXPECT() *MockVerifierMockRecorder { } // GetRevocation mocks base method. -func (m *MockVerifier) GetRevocation(id go_did.URI) (*credential.Revocation, error) { +func (m *MockVerifier) GetRevocation(id ssi.URI) (*credential.Revocation, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetRevocation", id) ret0, _ := ret[0].(*credential.Revocation) @@ -54,7 +54,7 @@ func (mr *MockVerifierMockRecorder) GetRevocation(id interface{}) *gomock.Call { } // IsRevoked mocks base method. -func (m *MockVerifier) IsRevoked(credentialID go_did.URI) (bool, error) { +func (m *MockVerifier) IsRevoked(credentialID ssi.URI) (bool, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "IsRevoked", credentialID) ret0, _ := ret[0].(bool) @@ -177,7 +177,7 @@ func (mr *MockStoreMockRecorder) Diagnostics() *gomock.Call { } // GetRevocations mocks base method. -func (m *MockStore) GetRevocations(id go_did.URI) ([]*credential.Revocation, error) { +func (m *MockStore) GetRevocations(id ssi.URI) ([]*credential.Revocation, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetRevocations", id) ret0, _ := ret[0].([]*credential.Revocation) diff --git a/vdr/types/mock.go b/vdr/types/mock.go index 080a8f7d3d..cbdbe1e8ff 100644 --- a/vdr/types/mock.go +++ b/vdr/types/mock.go @@ -10,7 +10,7 @@ import ( reflect "reflect" time "time" - go_did "github.com/nuts-foundation/go-did" + ssi "github.com/nuts-foundation/go-did" did "github.com/nuts-foundation/go-did/did" crypto0 "github.com/nuts-foundation/nuts-node/crypto" hash "github.com/nuts-foundation/nuts-node/crypto/hash" @@ -287,10 +287,10 @@ func (m *MockKeyResolver) EXPECT() *MockKeyResolverMockRecorder { } // ResolveAssertionKeyID mocks base method. -func (m *MockKeyResolver) ResolveAssertionKeyID(id did.DID) (go_did.URI, error) { +func (m *MockKeyResolver) ResolveAssertionKeyID(id did.DID) (ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ResolveAssertionKeyID", id) - ret0, _ := ret[0].(go_did.URI) + ret0, _ := ret[0].(ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -347,10 +347,10 @@ func (mr *MockKeyResolverMockRecorder) ResolveRelationKey(keyID, validAt, relati } // ResolveRelationKeyID mocks base method. -func (m *MockKeyResolver) ResolveRelationKeyID(id did.DID, relationType RelationType) (go_did.URI, error) { +func (m *MockKeyResolver) ResolveRelationKeyID(id did.DID, relationType RelationType) (ssi.URI, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ResolveRelationKeyID", id, relationType) - ret0, _ := ret[0].(go_did.URI) + ret0, _ := ret[0].(ssi.URI) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -633,7 +633,7 @@ func (m *MockServiceResolver) EXPECT() *MockServiceResolverMockRecorder { } // Resolve mocks base method. -func (m *MockServiceResolver) Resolve(query go_did.URI, maxDepth int) (did.Service, error) { +func (m *MockServiceResolver) Resolve(query ssi.URI, maxDepth int) (did.Service, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Resolve", query, maxDepth) ret0, _ := ret[0].(did.Service) @@ -648,7 +648,7 @@ func (mr *MockServiceResolverMockRecorder) Resolve(query, maxDepth interface{}) } // ResolveEx mocks base method. -func (m *MockServiceResolver) ResolveEx(endpoint go_did.URI, depth, maxDepth int, documentCache map[string]*did.Document) (did.Service, error) { +func (m *MockServiceResolver) ResolveEx(endpoint ssi.URI, depth, maxDepth int, documentCache map[string]*did.Document) (did.Service, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ResolveEx", endpoint, depth, maxDepth, documentCache) ret0, _ := ret[0].(did.Service)