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 }