github.com/s7techlab/cckit@v0.10.5/identity/testdata/testdata.go (about)

     1  package testdata
     2  
     3  import (
     4  	"crypto/ecdsa"
     5  	"crypto/x509"
     6  	"io/ioutil"
     7  	"path"
     8  	"runtime"
     9  
    10  	"github.com/hyperledger/fabric/msp"
    11  	"github.com/s7techlab/cckit/identity"
    12  	"github.com/s7techlab/cckit/testing"
    13  )
    14  
    15  const DefaultMSP = `SOME_MSP`
    16  
    17  type (
    18  	FileReader func(filename string) ([]byte, error)
    19  
    20  	// Cert certificate data for testing
    21  	Cert struct {
    22  		CertFilename string
    23  		PKeyFilename string
    24  		readFile     FileReader
    25  	}
    26  
    27  	Certs []*Cert
    28  
    29  	IdentitySample struct {
    30  		MspID string
    31  		Cert  *Cert
    32  	}
    33  )
    34  
    35  func (cc Certs) UseReadFile(readFile FileReader) Certs {
    36  	for _, c := range cc {
    37  		c.readFile = readFile
    38  	}
    39  	return cc
    40  }
    41  
    42  func (s *IdentitySample) SigningIdentity() msp.SigningIdentity {
    43  	return s.Cert.MustIdentity(s.MspID)
    44  }
    45  
    46  var (
    47  	Certificates = Certs{{
    48  		CertFilename: `s7techlab.pem`, PKeyFilename: `s7techlab.key.pem`,
    49  	}, {
    50  		CertFilename: `some-person.pem`, PKeyFilename: `some-person.key.pem`,
    51  	}, {
    52  		CertFilename: `victor-nosov.pem`, PKeyFilename: `victor-nosov.key.pem`,
    53  	}}.
    54  		UseReadFile(ReadLocal())
    55  )
    56  
    57  func ReadLocal() func(filename string) ([]byte, error) {
    58  	_, curFile, _, ok := runtime.Caller(1)
    59  	path := path.Dir(curFile)
    60  	if !ok {
    61  		return nil
    62  	}
    63  	return func(filename string) ([]byte, error) {
    64  		return ioutil.ReadFile(path + "/" + filename)
    65  	}
    66  }
    67  
    68  func MustSamples(cc []*Cert, mspId string) []*IdentitySample {
    69  	ss := make([]*IdentitySample, len(cc))
    70  	for i, c := range Certificates {
    71  		ss[i] = &IdentitySample{
    72  			MspID: mspId,
    73  			Cert:  c,
    74  		}
    75  	}
    76  
    77  	return ss
    78  }
    79  func MustIdentities(cc []*Cert, mspId string) []*identity.CertIdentity {
    80  	ii := make([]*identity.CertIdentity, len(cc))
    81  	for i, c := range Certificates {
    82  		ii[i] = c.MustIdentity(mspId)
    83  	}
    84  
    85  	return ii
    86  }
    87  
    88  func (c *Cert) MustIdentity(mspID string) *identity.CertIdentity {
    89  	id, err := c.Identity(mspID)
    90  	if err != nil {
    91  		panic(err)
    92  	}
    93  	return id
    94  }
    95  
    96  func (c *Cert) CertBytes() ([]byte, error) {
    97  	return c.readFile(`./` + c.CertFilename)
    98  }
    99  
   100  func (c *Cert) PKeyBytes() ([]byte, error) {
   101  	return c.readFile(`./` + c.PKeyFilename)
   102  }
   103  
   104  func (c *Cert) MustCertBytes() []byte {
   105  	cert, err := c.CertBytes()
   106  	if err != nil {
   107  		panic(err)
   108  	}
   109  	return cert
   110  }
   111  
   112  func (c *Cert) MustPKeyBytes() []byte {
   113  	cert, err := c.PKeyBytes()
   114  	if err != nil {
   115  		panic(err)
   116  	}
   117  	return cert
   118  }
   119  
   120  func (c *Cert) Identity(mspID string) (*identity.CertIdentity, error) {
   121  	bb, err := c.CertBytes()
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return identity.New(mspID, bb)
   126  }
   127  
   128  func (c *Cert) SigningIdentity(mspID string) (*identity.CertIdentity, error) {
   129  	return c.Identity(mspID)
   130  }
   131  
   132  func (c *Cert) MustSigningIdentity(mspID string) *identity.CertIdentity {
   133  	bb := c.MustCertBytes()
   134  	return testing.MustIdentityFromPem(mspID, bb)
   135  }
   136  
   137  func (c *Cert) Cert() (*x509.Certificate, error) {
   138  	bb, err := c.CertBytes()
   139  	if err != nil {
   140  		return nil, err
   141  	}
   142  	return identity.Certificate(bb)
   143  }
   144  
   145  func (c *Cert) MustCert() *x509.Certificate {
   146  	cert, err := c.Cert()
   147  	if err != nil {
   148  		panic(err)
   149  	}
   150  	return cert
   151  }
   152  
   153  func (c *Cert) Pkey() (*ecdsa.PrivateKey, error) {
   154  	bb, err := c.PKeyBytes()
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	return identity.PrivateKey(bb)
   159  }
   160  
   161  func (c *Cert) MustPKey() *ecdsa.PrivateKey {
   162  	pkey, err := c.Pkey()
   163  	if err != nil {
   164  		panic(err)
   165  	}
   166  	return pkey
   167  }