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