|
8 | 8 | "bufio"
|
9 | 9 | "bytes"
|
10 | 10 | "crypto"
|
| 11 | + "crypto/internal/boring" |
11 | 12 | "crypto/internal/cryptotest"
|
12 | 13 | "crypto/internal/fips140"
|
13 | 14 | "crypto/rand"
|
@@ -352,6 +353,30 @@ func testEverything(t *testing.T, priv *PrivateKey) {
|
352 | 353 | if err == nil {
|
353 | 354 | t.Errorf("DecryptPKCS1v15 accepted a long ciphertext")
|
354 | 355 | }
|
| 356 | + |
| 357 | + der, err := x509.MarshalPKCS8PrivateKey(priv) |
| 358 | + if err != nil { |
| 359 | + t.Errorf("MarshalPKCS8PrivateKey: %v", err) |
| 360 | + } |
| 361 | + key, err := x509.ParsePKCS8PrivateKey(der) |
| 362 | + if err != nil { |
| 363 | + t.Errorf("ParsePKCS8PrivateKey: %v", err) |
| 364 | + } |
| 365 | + if !key.(*PrivateKey).Equal(priv) { |
| 366 | + t.Errorf("private key mismatch") |
| 367 | + } |
| 368 | + |
| 369 | + der, err = x509.MarshalPKIXPublicKey(&priv.PublicKey) |
| 370 | + if err != nil { |
| 371 | + t.Errorf("MarshalPKIXPublicKey: %v", err) |
| 372 | + } |
| 373 | + pub, err := x509.ParsePKIXPublicKey(der) |
| 374 | + if err != nil { |
| 375 | + t.Errorf("ParsePKIXPublicKey: %v", err) |
| 376 | + } |
| 377 | + if !pub.(*PublicKey).Equal(&priv.PublicKey) { |
| 378 | + t.Errorf("public key mismatch") |
| 379 | + } |
355 | 380 | }
|
356 | 381 |
|
357 | 382 | func TestKeyTooSmall(t *testing.T) {
|
@@ -1015,3 +1040,21 @@ var testEncryptOAEPData = []testEncryptOAEPStruct{
|
1015 | 1040 | },
|
1016 | 1041 | },
|
1017 | 1042 | }
|
| 1043 | + |
| 1044 | +func TestPSmallerThanQ(t *testing.T) { |
| 1045 | + // This key has a 256-bit P and a 257-bit Q. |
| 1046 | + k := parseKey(testingKey(`-----BEGIN RSA TESTING KEY----- |
| 1047 | +MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu |
| 1048 | +KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm |
| 1049 | +o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k |
| 1050 | +TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7 |
| 1051 | +9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy |
| 1052 | +v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs |
| 1053 | +/5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00 |
| 1054 | +-----END RSA TESTING KEY-----`)) |
| 1055 | + t.Setenv("GODEBUG", "rsa1024min=0") |
| 1056 | + if boring.Enabled { |
| 1057 | + t.Skip("BoringCrypto mode returns the wrong error from SignPSS") |
| 1058 | + } |
| 1059 | + testEverything(t, k) |
| 1060 | +} |
0 commit comments