From d415e766b50ade8585ac3a7b89cd908fdabe07d9 Mon Sep 17 00:00:00 2001 From: ilya-korotya Date: Thu, 30 Oct 2025 16:29:21 +0100 Subject: [PATCH 1/2] add aditional options --- verifiable/credential.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/verifiable/credential.go b/verifiable/credential.go index f77e829..1bb00f1 100644 --- a/verifiable/credential.go +++ b/verifiable/credential.go @@ -6,6 +6,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "io" "math/big" "time" @@ -16,6 +17,7 @@ import ( "github.com/iden3/go-merkletree-sql/v2" "github.com/iden3/go-schema-processor/v2/merklize" "github.com/iden3/go-schema-processor/v2/utils" + "github.com/piprate/json-gold/ld" "github.com/pkg/errors" ) @@ -564,6 +566,32 @@ func WithStatusResolverRegistry(registry *CredentialStatusResolverRegistry) W3CP } } +// WithDocumentLoader adds document loader option for merklization +func WithDocumentLoader(loader ld.DocumentLoader) W3CProofVerificationOpt { + return func(opts *w3CProofVerificationConfig) { + opts.merklizeOptions = append(opts.merklizeOptions, + merklize.WithDocumentLoader(loader)) + } +} + +// WithIPFSGateway adds IPFS gateway option for merklization +func WithIPFSGateway(gateway string) W3CProofVerificationOpt { + return func(opts *w3CProofVerificationConfig) { + opts.merklizeOptions = append(opts.merklizeOptions, + merklize.WithIPFSGateway(gateway)) + } +} + +// WithIPFSClient adds IPFS client option for merklization +func WithIPFSClient(ipfsCli interface { + Cat(string) (io.ReadCloser, error) +}) W3CProofVerificationOpt { + return func(opts *w3CProofVerificationConfig) { + opts.merklizeOptions = append(opts.merklizeOptions, + merklize.WithIPFSClient(ipfsCli)) + } +} + // W3CProofVerificationOpt returns configuration options for W3C proof verification type W3CProofVerificationOpt func(opts *w3CProofVerificationConfig) From 4e9c2f5781cbb9c86b137e10630c1e926152cc98 Mon Sep 17 00:00:00 2001 From: ilya-korotya Date: Thu, 30 Oct 2025 16:55:24 +0100 Subject: [PATCH 2/2] use one opts to pass merklize opts --- verifiable/credential.go | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/verifiable/credential.go b/verifiable/credential.go index 1bb00f1..1c97ad9 100644 --- a/verifiable/credential.go +++ b/verifiable/credential.go @@ -6,7 +6,6 @@ import ( "encoding/hex" "encoding/json" "fmt" - "io" "math/big" "time" @@ -17,7 +16,6 @@ import ( "github.com/iden3/go-merkletree-sql/v2" "github.com/iden3/go-schema-processor/v2/merklize" "github.com/iden3/go-schema-processor/v2/utils" - "github.com/piprate/json-gold/ld" "github.com/pkg/errors" ) @@ -566,29 +564,10 @@ func WithStatusResolverRegistry(registry *CredentialStatusResolverRegistry) W3CP } } -// WithDocumentLoader adds document loader option for merklization -func WithDocumentLoader(loader ld.DocumentLoader) W3CProofVerificationOpt { +// WithMerklizeOptions return new options +func WithMerklizeOptions(merklizeOpts ...merklize.MerklizeOption) W3CProofVerificationOpt { return func(opts *w3CProofVerificationConfig) { - opts.merklizeOptions = append(opts.merklizeOptions, - merklize.WithDocumentLoader(loader)) - } -} - -// WithIPFSGateway adds IPFS gateway option for merklization -func WithIPFSGateway(gateway string) W3CProofVerificationOpt { - return func(opts *w3CProofVerificationConfig) { - opts.merklizeOptions = append(opts.merklizeOptions, - merklize.WithIPFSGateway(gateway)) - } -} - -// WithIPFSClient adds IPFS client option for merklization -func WithIPFSClient(ipfsCli interface { - Cat(string) (io.ReadCloser, error) -}) W3CProofVerificationOpt { - return func(opts *w3CProofVerificationConfig) { - opts.merklizeOptions = append(opts.merklizeOptions, - merklize.WithIPFSClient(ipfsCli)) + opts.merklizeOptions = merklizeOpts } }