aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/crypto/rsa/pkcs1v15_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/crypto/rsa/pkcs1v15_test.go')
-rw-r--r--src/pkg/crypto/rsa/pkcs1v15_test.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/pkg/crypto/rsa/pkcs1v15_test.go b/src/pkg/crypto/rsa/pkcs1v15_test.go
index dbfc64a996..4d62deac14 100644
--- a/src/pkg/crypto/rsa/pkcs1v15_test.go
+++ b/src/pkg/crypto/rsa/pkcs1v15_test.go
@@ -7,7 +7,9 @@ package rsa
import (
"big";
"bytes";
+ "crypto/sha1";
"encoding/base64";
+ "encoding/hex";
"os";
"io";
"strings";
@@ -154,6 +156,49 @@ func TestNonZeroRandomBytes(t *testing.T) {
}
}
+type signPKCS1v15Test struct {
+ in, out string;
+}
+
+// These vectors have been tested with
+// `openssl rsautl -verify -inkey pk -in signature | hexdump -C`
+var signPKCS1v15Tests = []signPKCS1v15Test{
+ signPKCS1v15Test{"Test.\n", "a4f3fa6ea93bcdd0c57be020c1193ecbfd6f200a3d95c409769b029578fa0e336ad9a347600e40d3ae823b8c7e6bad88cc07c1d54c3a1523cbbb6d58efc362ae"},
+}
+
+func TestSignPKCS1v15(t *testing.T) {
+ for i, test := range signPKCS1v15Tests {
+ h := sha1.New();
+ h.Write(strings.Bytes(test.in));
+ digest := h.Sum();
+
+ s, err := SignPKCS1v15(nil, rsaPrivateKey, HashSHA1, digest);
+ if err != nil {
+ t.Errorf("#%d %s", i, err)
+ }
+
+ expected, _ := hex.DecodeString(test.out);
+ if bytes.Compare(s, expected) != 0 {
+ t.Errorf("#%d got: %x want: %x", i, s, expected)
+ }
+ }
+}
+
+func TestVerifyPKCS1v15(t *testing.T) {
+ for i, test := range signPKCS1v15Tests {
+ h := sha1.New();
+ h.Write(strings.Bytes(test.in));
+ digest := h.Sum();
+
+ sig, _ := hex.DecodeString(test.out);
+
+ err := VerifyPKCS1v15(&rsaPrivateKey.PublicKey, HashSHA1, digest, sig);
+ if err != nil {
+ t.Errorf("#%d %s", i, err)
+ }
+ }
+}
+
func bigFromString(s string) *big.Int {
ret := new(big.Int);
ret.SetString(s, 10);