| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
| 3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package x509 | 5 package x509 |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "big" | 8 "big" |
| 9 "crypto/rand" | |
| 9 "crypto/rsa" | 10 "crypto/rsa" |
| 10 "encoding/hex" | 11 "encoding/hex" |
| 11 "encoding/pem" | 12 "encoding/pem" |
| 12 "os" | |
| 13 "reflect" | 13 "reflect" |
| 14 "testing" | 14 "testing" |
| 15 "time" | 15 "time" |
| 16 ) | 16 ) |
| 17 | 17 |
| 18 func TestParsePKCS1PrivateKey(t *testing.T) { | 18 func TestParsePKCS1PrivateKey(t *testing.T) { |
| 19 block, _ := pem.Decode([]byte(pemPrivateKey)) | 19 block, _ := pem.Decode([]byte(pemPrivateKey)) |
| 20 priv, err := ParsePKCS1PrivateKey(block.Bytes) | 20 priv, err := ParsePKCS1PrivateKey(block.Bytes) |
| 21 if err != nil { | 21 if err != nil { |
| 22 t.Errorf("Failed to parse private key: %s", err) | 22 t.Errorf("Failed to parse private key: %s", err) |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 "8620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c303 206082b" + | 138 "8620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c303 206082b" + |
| 139 "0601050507010104263024302206082b060105050730018616687474703a2f2f6f63737 02e7468" + | 139 "0601050507010104263024302206082b060105050730018616687474703a2f2f6f63737 02e7468" + |
| 140 "617774652e636f6d30340603551d25042d302b06082b0601050507030106082b0601050 5070302" + | 140 "617774652e636f6d30340603551d25042d302b06082b0601050507030106082b0601050 5070302" + |
| 141 "06096086480186f8420401060a6086480186f845010801300d06092a864886f70d01010 5050003" + | 141 "06096086480186f8420401060a6086480186f845010801300d06092a864886f70d01010 5050003" + |
| 142 "81810055ac63eadea1ddd2905f9f0bce76be13518f93d9052bc81b774bad6950a1eeded cfddb07" + | 142 "81810055ac63eadea1ddd2905f9f0bce76be13518f93d9052bc81b774bad6950a1eeded cfddb07" + |
| 143 "e9e83994dcab72792f06bfab8170c4a8edea5334edef1e53d906c7562bd15cf4d18a8eb 42bb137" + | 143 "e9e83994dcab72792f06bfab8170c4a8edea5334edef1e53d906c7562bd15cf4d18a8eb 42bb137" + |
| 144 "9048084225c53e8acb7feb6f04d16dc574a2f7a27c7b603c77cd0ece48027f012fb69b3 7e02a2a" + | 144 "9048084225c53e8acb7feb6f04d16dc574a2f7a27c7b603c77cd0ece48027f012fb69b3 7e02a2a" + |
| 145 "36dcd585d6ace53f546f961e05af" | 145 "36dcd585d6ace53f546f961e05af" |
| 146 | 146 |
| 147 func TestCreateSelfSignedCertificate(t *testing.T) { | 147 func TestCreateSelfSignedCertificate(t *testing.T) { |
| 148 » urandom, err := os.Open("/dev/urandom", os.O_RDONLY, 0) | 148 » random := rand.Reader |
| 149 » if err != nil { | 149 » if random == nil { |
| rsc1 2010/07/12 20:15:30 delete peterGo 2010/07/12 21:06:33 Done. | |
| 150 » » t.Errorf("failed to open /dev/urandom") | 150 » » t.Errorf("Failed to find a random reader") |
| 151 } | 151 } |
| 152 | 152 |
| 153 block, _ := pem.Decode([]byte(pemPrivateKey)) | 153 block, _ := pem.Decode([]byte(pemPrivateKey)) |
| 154 priv, err := ParsePKCS1PrivateKey(block.Bytes) | 154 priv, err := ParsePKCS1PrivateKey(block.Bytes) |
| 155 if err != nil { | 155 if err != nil { |
| 156 t.Errorf("Failed to parse private key: %s", err) | 156 t.Errorf("Failed to parse private key: %s", err) |
| 157 return | 157 return |
| 158 } | 158 } |
| 159 | 159 |
| 160 template := Certificate{ | 160 template := Certificate{ |
| 161 SerialNumber: []byte{1}, | 161 SerialNumber: []byte{1}, |
| 162 Subject: Name{ | 162 Subject: Name{ |
| 163 CommonName: "test.example.com", | 163 CommonName: "test.example.com", |
| 164 Organization: "Acme Co", | 164 Organization: "Acme Co", |
| 165 }, | 165 }, |
| 166 NotBefore: time.SecondsToUTC(1000), | 166 NotBefore: time.SecondsToUTC(1000), |
| 167 NotAfter: time.SecondsToUTC(100000), | 167 NotAfter: time.SecondsToUTC(100000), |
| 168 | 168 |
| 169 SubjectKeyId: []byte{1, 2, 3, 4}, | 169 SubjectKeyId: []byte{1, 2, 3, 4}, |
| 170 KeyUsage: KeyUsageCertSign, | 170 KeyUsage: KeyUsageCertSign, |
| 171 | 171 |
| 172 BasicConstraintsValid: true, | 172 BasicConstraintsValid: true, |
| 173 IsCA: true, | 173 IsCA: true, |
| 174 DNSNames: []string{"test.example.com"}, | 174 DNSNames: []string{"test.example.com"}, |
| 175 } | 175 } |
| 176 | 176 |
| 177 » derBytes, err := CreateCertificate(urandom, &template, &template, &priv. PublicKey, priv) | 177 » derBytes, err := CreateCertificate(random, &template, &template, &priv.P ublicKey, priv) |
| 178 if err != nil { | 178 if err != nil { |
| 179 t.Errorf("Failed to create certificate: %s", err) | 179 t.Errorf("Failed to create certificate: %s", err) |
| 180 return | 180 return |
| 181 } | 181 } |
| 182 | 182 |
| 183 cert, err := ParseCertificate(derBytes) | 183 cert, err := ParseCertificate(derBytes) |
| 184 if err != nil { | 184 if err != nil { |
| 185 t.Errorf("Failed to parse certificate: %s", err) | 185 t.Errorf("Failed to parse certificate: %s", err) |
| 186 return | 186 return |
| 187 } | 187 } |
| 188 err = cert.CheckSignatureFrom(cert) | 188 err = cert.CheckSignatureFrom(cert) |
| 189 if err != nil { | 189 if err != nil { |
| 190 t.Errorf("Signature verification failed: %s", err) | 190 t.Errorf("Signature verification failed: %s", err) |
| 191 return | 191 return |
| 192 } | 192 } |
| 193 } | 193 } |
| OLD | NEW |