@@ -19,99 +19,16 @@ package msp
19
19
import (
20
20
"testing"
21
21
22
- "github.com/golang/protobuf/proto"
23
- "github.com/hyperledger/fabric/bccsp"
24
- "github.com/hyperledger/fabric/protos/msp"
25
22
"github.com/stretchr/testify/assert"
26
23
)
27
24
28
- // the following strings contain the credentials for a test MSP setup that has
29
- // 1) a key and a signcert (used to populate the default signing identity);
30
- // signcert is not signed by a CA directly but by an intermediate CA
31
- // 2) intermediatecert is an intermediate CA, signed by the CA
32
- // 3) cacert is the CA that signed the intermediate
33
- const key = `-----BEGIN EC PRIVATE KEY-----
34
- MHcCAQEEII27gKS2mFIIGkyGFEvHyv1khaJHe+p+sDt0++JByCDToAoGCCqGSM49
35
- AwEHoUQDQgAEJUUpwMg/jQ+qpmkVewEvwTySl+XWbd4AXtb/0XsDqXNcyXl0DVgA
36
- gJNGnt5r+bvZdB8SOk1ySAEEsCQArkarMg==
37
- -----END EC PRIVATE KEY-----`
38
-
39
- var signcert = `-----BEGIN CERTIFICATE-----
40
- MIIDAzCCAqigAwIBAgIBAjAKBggqhkjOPQQDAjBsMQswCQYDVQQGEwJHQjEQMA4G
41
- A1UECAwHRW5nbGFuZDEOMAwGA1UECgwFQmFyMTkxDjAMBgNVBAsMBUJhcjE5MQ4w
42
- DAYDVQQDDAVCYXIxOTEbMBkGCSqGSIb3DQEJARYMQmFyMTktY2xpZW50MB4XDTE3
43
- MDIwOTE2MDcxMFoXDTE4MDIxOTE2MDcxMFowfDELMAkGA1UEBhMCR0IxEDAOBgNV
44
- BAgMB0VuZ2xhbmQxEDAOBgNVBAcMB0lwc3dpY2gxDjAMBgNVBAoMBUJhcjE5MQ4w
45
- DAYDVQQLDAVCYXIxOTEOMAwGA1UEAwwFQmFyMTkxGTAXBgkqhkiG9w0BCQEWCkJh
46
- cjE5LXBlZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQlRSnAyD+ND6qmaRV7
47
- AS/BPJKX5dZt3gBe1v/RewOpc1zJeXQNWACAk0ae3mv5u9l0HxI6TXJIAQSwJACu
48
- Rqsyo4IBKTCCASUwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAwMwYJYIZI
49
- AYb4QgENBCYWJE9wZW5TU0wgR2VuZXJhdGVkIFNlcnZlciBDZXJ0aWZpY2F0ZTAd
50
- BgNVHQ4EFgQUwHzbLJQMaWd1cpHdkSaEFxdKB1owgYsGA1UdIwSBgzCBgIAUYxFe
51
- +cXOD5iQ223bZNdOuKCRiTKhZaRjMGExCzAJBgNVBAYTAkdCMRAwDgYDVQQIDAdF
52
- bmdsYW5kMRAwDgYDVQQHDAdJcHN3aWNoMQ4wDAYDVQQKDAVCYXIxOTEOMAwGA1UE
53
- CwwFQmFyMTkxDjAMBgNVBAMMBUJhcjE5ggEBMA4GA1UdDwEB/wQEAwIFoDATBgNV
54
- HSUEDDAKBggrBgEFBQcDATAKBggqhkjOPQQDAgNJADBGAiEAuMq65lOaie4705Ol
55
- Ow52DjbaO2YuIxK2auBCqNIu0gECIQCDoKdUQ/sa+9Ah1mzneE6iz/f/YFVWo4EP
56
- HeamPGiDTQ==
57
- -----END CERTIFICATE-----`
58
-
59
- var intermediatecert = `-----BEGIN CERTIFICATE-----
60
- MIICITCCAcigAwIBAgIBATAKBggqhkjOPQQDAjBhMQswCQYDVQQGEwJHQjEQMA4G
61
- A1UECAwHRW5nbGFuZDEQMA4GA1UEBwwHSXBzd2ljaDEOMAwGA1UECgwFQmFyMTkx
62
- DjAMBgNVBAsMBUJhcjE5MQ4wDAYDVQQDDAVCYXIxOTAeFw0xNzAyMDkxNTUyMDBa
63
- Fw0yNzAyMDcxNTUyMDBaMGwxCzAJBgNVBAYTAkdCMRAwDgYDVQQIDAdFbmdsYW5k
64
- MQ4wDAYDVQQKDAVCYXIxOTEOMAwGA1UECwwFQmFyMTkxDjAMBgNVBAMMBUJhcjE5
65
- MRswGQYJKoZIhvcNAQkBFgxCYXIxOS1jbGllbnQwWTATBgcqhkjOPQIBBggqhkjO
66
- PQMBBwNCAAQBymfTx4GWt1lnTV4Xp3skM5LJpZ40HVhCDLfvfrD8/3WQLHaLc7XW
67
- KpphhXW8HYLyyjkEZVLsAFHkKjwmlcpzo2YwZDAdBgNVHQ4EFgQUYxFe+cXOD5iQ
68
- 223bZNdOuKCRiTIwHwYDVR0jBBgwFoAU4UJ1xRnh6zeW2IKABUOjIt9Wk8gwEgYD
69
- VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwIDRwAw
70
- RAIgGUgzRtqWx98KkgKNDyeEmBmhpptW966iS7+c8ig4ksMCIEyzhATMpiI4pHzH
71
- xSwZMvo3y3wkMwgf/WrhwdCyZNku
72
- -----END CERTIFICATE-----`
73
-
74
- var cacert = `-----BEGIN CERTIFICATE-----
75
- MIICHDCCAcKgAwIBAgIJAJ/qse7uYF0LMAoGCCqGSM49BAMCMGExCzAJBgNVBAYT
76
- AkdCMRAwDgYDVQQIDAdFbmdsYW5kMRAwDgYDVQQHDAdJcHN3aWNoMQ4wDAYDVQQK
77
- DAVCYXIxOTEOMAwGA1UECwwFQmFyMTkxDjAMBgNVBAMMBUJhcjE5MB4XDTE3MDIw
78
- OTE1MzE1MloXDTM3MDIwNDE1MzE1MlowYTELMAkGA1UEBhMCR0IxEDAOBgNVBAgM
79
- B0VuZ2xhbmQxEDAOBgNVBAcMB0lwc3dpY2gxDjAMBgNVBAoMBUJhcjE5MQ4wDAYD
80
- VQQLDAVCYXIxOTEOMAwGA1UEAwwFQmFyMTkwWTATBgcqhkjOPQIBBggqhkjOPQMB
81
- BwNCAAQcG4qwA7jeGzgkakV+IYyQH/GwgtOw6+Y3ZabCmw8dk0vrDwdZ7fEI9C10
82
- b9ckm9n4LvnooSxQEzfLDk9N+S7yo2MwYTAdBgNVHQ4EFgQU4UJ1xRnh6zeW2IKA
83
- BUOjIt9Wk8gwHwYDVR0jBBgwFoAU4UJ1xRnh6zeW2IKABUOjIt9Wk8gwDwYDVR0T
84
- AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwIDSAAwRQIgGvB0
85
- 854QmGi1yG5wnWMiwzQxtcEhvCXbnCuiQvr5VrkCIQDoMooDC/WmhBwuCfo7iGDo
86
- AsFd44a8aa9yzABfALG2Gw==
87
- -----END CERTIFICATE-----`
88
-
89
25
func TestMSPWithIntermediateCAs (t * testing.T ) {
90
- keyinfo := & msp.KeyInfo {KeyIdentifier : "PEER" , KeyMaterial : []byte (key )}
91
-
92
- sigid := & msp.SigningIdentityInfo {PublicSigner : []byte (signcert ), PrivateSigner : keyinfo }
93
-
94
- cryptoConfig := & msp.FabricCryptoConfig {
95
- SignatureHashFamily : bccsp .SHA2 ,
96
- IdentityIdentifierHashFunction : bccsp .SHA256 ,
97
- }
98
-
99
- fmspconf := & msp.FabricMSPConfig {
100
- RootCerts : [][]byte {[]byte (cacert )},
101
- IntermediateCerts : [][]byte {[]byte (intermediatecert )},
102
- SigningIdentity : sigid ,
103
- Name : "DEFAULT" ,
104
- CryptoConfig : cryptoConfig }
105
-
106
- fmpsjs , _ := proto .Marshal (fmspconf )
107
-
108
- mspconf := & msp.MSPConfig {Config : fmpsjs , Type : int32 (FABRIC )}
109
-
110
- thisMSP , err := NewBccspMsp ()
111
- assert .NoError (t , err )
112
-
113
- err = thisMSP .Setup (mspconf )
114
- assert .NoError (t , err )
26
+ // testdata/intermediate contains the credentials for a test MSP setup that has
27
+ // 1) a key and a signcert (used to populate the default signing identity);
28
+ // signcert is not signed by a CA directly but by an intermediate CA
29
+ // 2) intermediatecert is an intermediate CA, signed by the CA
30
+ // 3) cacert is the CA that signed the intermediate
31
+ thisMSP := getLocalMSP (t , "testdata/intermediate" )
115
32
116
33
// This MSP will trust any cert signed by the CA directly OR by the intermediate
117
34
@@ -136,33 +53,13 @@ func TestMSPWithIntermediateCAs(t *testing.T) {
136
53
}
137
54
138
55
func TestIntermediateCAIdentityValidity (t * testing.T ) {
139
- keyinfo := & msp.KeyInfo {KeyIdentifier : "PEER" , KeyMaterial : []byte (key )}
140
-
141
- sigid := & msp.SigningIdentityInfo {PublicSigner : []byte (signcert ), PrivateSigner : keyinfo }
142
-
143
- cryptoConfig := & msp.FabricCryptoConfig {
144
- SignatureHashFamily : bccsp .SHA2 ,
145
- IdentityIdentifierHashFunction : bccsp .SHA256 ,
146
- }
147
-
148
- fmspconf := & msp.FabricMSPConfig {
149
- RootCerts : [][]byte {[]byte (cacert )},
150
- IntermediateCerts : [][]byte {[]byte (intermediatecert )},
151
- SigningIdentity : sigid ,
152
- Name : "DEFAULT" ,
153
- CryptoConfig : cryptoConfig }
154
-
155
- fmpsjs , _ := proto .Marshal (fmspconf )
156
-
157
- mspconf := & msp.MSPConfig {Config : fmpsjs , Type : int32 (FABRIC )}
158
-
159
- thisMSP , err := NewBccspMsp ()
160
- assert .NoError (t , err )
161
-
162
- err = thisMSP .Setup (mspconf )
163
- assert .NoError (t , err )
164
-
165
- id , _ , err := thisMSP .(* bccspmsp ).getIdentityFromConf ([]byte (intermediatecert ))
166
- assert .NoError (t , err )
56
+ // testdata/intermediate contains the credentials for a test MSP setup that has
57
+ // 1) a key and a signcert (used to populate the default signing identity);
58
+ // signcert is not signed by a CA directly but by an intermediate CA
59
+ // 2) intermediatecert is an intermediate CA, signed by the CA
60
+ // 3) cacert is the CA that signed the intermediate
61
+ thisMSP := getLocalMSP (t , "testdata/intermediate" )
62
+
63
+ id := thisMSP .(* bccspmsp ).intermediateCerts [0 ]
167
64
assert .Error (t , id .Validate ())
168
65
}
0 commit comments