github.com/hyperledger/aries-framework-go@v0.3.2/pkg/doc/signature/verifier/api.go (about) 1 /* 2 Copyright SecureKey Technologies Inc. All Rights Reserved. 3 SPDX-License-Identifier: Apache-2.0 4 */ 5 6 package verifier 7 8 import ( 9 "github.com/hyperledger/aries-framework-go/component/models/signature/api" 10 "github.com/hyperledger/aries-framework-go/component/models/signature/verifier" 11 ) 12 13 // TODO pull SignatureSuite interface and PublicKey type out into an API package 14 15 // SignatureSuite encapsulates signature suite methods required for signature verification. 16 type SignatureSuite = api.SignatureSuite 17 18 // PublicKey contains a result of public key resolution. 19 type PublicKey = api.PublicKey 20 21 // keyResolver encapsulates key resolution. 22 type keyResolver interface { 23 // Resolve will return public key bytes and the type of public key 24 Resolve(id string) (*api.PublicKey, error) 25 } 26 27 // DocumentVerifier implements JSON LD document proof verification. 28 type DocumentVerifier = verifier.DocumentVerifier 29 30 // New returns new instance of document verifier. 31 func New(resolver keyResolver, suites ...SignatureSuite) (*DocumentVerifier, error) { 32 return verifier.New(resolver, suites...) 33 } 34 35 // PublicKeyVerifier makes signature verification using the public key 36 // based on one or several signature algorithms. 37 type PublicKeyVerifier = verifier.PublicKeyVerifier 38 39 // PublicKeyVerifierOpt is the PublicKeyVerifier functional option. 40 type PublicKeyVerifierOpt = verifier.PublicKeyVerifierOpt 41 42 // NewPublicKeyVerifier creates a new PublicKeyVerifier based on single signature algorithm. 43 func NewPublicKeyVerifier(sigAlg SignatureVerifier, opts ...PublicKeyVerifierOpt) *PublicKeyVerifier { 44 return verifier.NewPublicKeyVerifier(sigAlg, opts...) 45 } 46 47 // NewCompositePublicKeyVerifier creates a new PublicKeyVerifier based on one or more signature algorithms. 48 func NewCompositePublicKeyVerifier(verifiers []SignatureVerifier, opts ...PublicKeyVerifierOpt) *PublicKeyVerifier { 49 return verifier.NewCompositePublicKeyVerifier(verifiers, opts...) 50 } 51 52 // WithExactPublicKeyType option is used to check the type of the PublicKey. 53 func WithExactPublicKeyType(jwkType string) PublicKeyVerifierOpt { 54 return verifier.WithExactPublicKeyType(jwkType) 55 } 56 57 // SignatureVerifier make signature verification of a certain algorithm (e.g. Ed25519 or ECDSA secp256k1). 58 type SignatureVerifier = verifier.SignatureVerifier 59 60 // Ed25519SignatureVerifier verifies a Ed25519 signature taking Ed25519 public key bytes as input. 61 type Ed25519SignatureVerifier = verifier.Ed25519SignatureVerifier 62 63 // NewEd25519SignatureVerifier creates a new Ed25519SignatureVerifier. 64 func NewEd25519SignatureVerifier() *Ed25519SignatureVerifier { 65 return verifier.NewEd25519SignatureVerifier() 66 } 67 68 // RSAPS256SignatureVerifier verifies a Ed25519 signature taking RSA public key bytes as input. 69 type RSAPS256SignatureVerifier = verifier.RSAPS256SignatureVerifier 70 71 // NewRSAPS256SignatureVerifier creates a new RSAPS256SignatureVerifier. 72 func NewRSAPS256SignatureVerifier() *RSAPS256SignatureVerifier { 73 return verifier.NewRSAPS256SignatureVerifier() 74 } 75 76 // RSARS256SignatureVerifier verifies a Ed25519 signature taking RSA public key bytes as input. 77 type RSARS256SignatureVerifier = verifier.RSARS256SignatureVerifier 78 79 // NewRSARS256SignatureVerifier creates a new RSARS256SignatureVerifier. 80 func NewRSARS256SignatureVerifier() *RSARS256SignatureVerifier { 81 return verifier.NewRSARS256SignatureVerifier() 82 } 83 84 // ECDSASignatureVerifier verifies elliptic curve signatures. 85 type ECDSASignatureVerifier = verifier.ECDSASignatureVerifier 86 87 // NewECDSASecp256k1SignatureVerifier creates a new signature verifier that verifies a ECDSA secp256k1 signature 88 // taking public key bytes and JSON Web Key as input. 89 func NewECDSASecp256k1SignatureVerifier() *ECDSASignatureVerifier { 90 return verifier.NewECDSASecp256k1SignatureVerifier() 91 } 92 93 // NewECDSAES256SignatureVerifier creates a new signature verifier that verifies a ECDSA P-256 signature 94 // taking public key bytes and JSON Web Key as input. 95 func NewECDSAES256SignatureVerifier() *ECDSASignatureVerifier { 96 return verifier.NewECDSAES256SignatureVerifier() 97 } 98 99 // NewECDSAES384SignatureVerifier creates a new signature verifier that verifies a ECDSA P-384 signature 100 // taking public key bytes and JSON Web Key as input. 101 func NewECDSAES384SignatureVerifier() *ECDSASignatureVerifier { 102 return verifier.NewECDSAES384SignatureVerifier() 103 } 104 105 // NewECDSAES521SignatureVerifier creates a new signature verifier that verifies a ECDSA P-521 signature 106 // taking public key bytes and JSON Web Key as input. 107 func NewECDSAES521SignatureVerifier() *ECDSASignatureVerifier { 108 return verifier.NewECDSAES521SignatureVerifier() 109 } 110 111 // NewBBSG2SignatureVerifier creates a new BBSG2SignatureVerifier. 112 func NewBBSG2SignatureVerifier() *BBSG2SignatureVerifier { 113 return verifier.NewBBSG2SignatureVerifier() 114 } 115 116 // BBSG2SignatureVerifier is a signature verifier that verifies a BBS+ Signature 117 // taking Bls12381G2Key2020 public key bytes as input. 118 // The reference implementation https://github.com/mattrglobal/bls12381-key-pair supports public key bytes only, 119 // JWK is not supported. 120 type BBSG2SignatureVerifier = verifier.BBSG2SignatureVerifier 121 122 // NewBBSG2SignatureProofVerifier creates a new BBSG2SignatureProofVerifier. 123 func NewBBSG2SignatureProofVerifier(nonce []byte) *BBSG2SignatureProofVerifier { 124 return verifier.NewBBSG2SignatureProofVerifier(nonce) 125 } 126 127 // BBSG2SignatureProofVerifier is a signature verifier that verifies a BBS+ Signature Proof 128 // taking Bls12381G2Key2020 public key bytes as input. 129 // The reference implementation https://github.com/mattrglobal/bls12381-key-pair supports public key bytes only, 130 // JWK is not supported. 131 type BBSG2SignatureProofVerifier = verifier.BBSG2SignatureProofVerifier