diff options
Diffstat (limited to 'src/crypto/rsa')
-rw-r--r-- | src/crypto/rsa/boring.go | 5 | ||||
-rw-r--r-- | src/crypto/rsa/rsa.go | 19 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/crypto/rsa/boring.go b/src/crypto/rsa/boring.go index 49a195f0f4e..362e9307f86 100644 --- a/src/crypto/rsa/boring.go +++ b/src/crypto/rsa/boring.go @@ -8,6 +8,7 @@ package rsa import ( "crypto/internal/boring" + "crypto/internal/boring/bbig" "math/big" "sync/atomic" "unsafe" @@ -43,7 +44,7 @@ func boringPublicKey(pub *PublicKey) (*boring.PublicKeyRSA, error) { b = new(boringPub) b.orig = copyPublicKey(pub) - key, err := boring.NewPublicKeyRSA(b.orig.N, big.NewInt(int64(b.orig.E))) + key, err := boring.NewPublicKeyRSA(bbig.Enc(b.orig.N), bbig.Enc(big.NewInt(int64(b.orig.E)))) if err != nil { return nil, err } @@ -77,7 +78,7 @@ func boringPrivateKey(priv *PrivateKey) (*boring.PrivateKeyRSA, error) { Dq = b.orig.Precomputed.Dq Qinv = b.orig.Precomputed.Qinv } - key, err := boring.NewPrivateKeyRSA(N, E, D, P, Q, Dp, Dq, Qinv) + key, err := boring.NewPrivateKeyRSA(bbig.Enc(N), bbig.Enc(E), bbig.Enc(D), bbig.Enc(P), bbig.Enc(Q), bbig.Enc(Dp), bbig.Enc(Dq), bbig.Enc(Qinv)) if err != nil { return nil, err } diff --git a/src/crypto/rsa/rsa.go b/src/crypto/rsa/rsa.go index eef967f826e..e084be15cc1 100644 --- a/src/crypto/rsa/rsa.go +++ b/src/crypto/rsa/rsa.go @@ -24,6 +24,9 @@ package rsa import ( "crypto" + "crypto/internal/boring" + "crypto/internal/boring/bbig" + "crypto/internal/randutil" "crypto/rand" "crypto/subtle" "errors" @@ -31,12 +34,6 @@ import ( "io" "math" "math/big" - - "crypto/internal/randutil" -) - -import ( - "crypto/internal/boring" "unsafe" ) @@ -266,10 +263,18 @@ func GenerateMultiPrimeKey(random io.Reader, nprimes int, bits int) (*PrivateKey randutil.MaybeReadByte(random) if boring.Enabled && random == boring.RandReader && nprimes == 2 && (bits == 2048 || bits == 3072) { - N, E, D, P, Q, Dp, Dq, Qinv, err := boring.GenerateKeyRSA(bits) + bN, bE, bD, bP, bQ, bDp, bDq, bQinv, err := boring.GenerateKeyRSA(bits) if err != nil { return nil, err } + N := bbig.Dec(bN) + E := bbig.Dec(bE) + D := bbig.Dec(bD) + P := bbig.Dec(bP) + Q := bbig.Dec(bQ) + Dp := bbig.Dec(bDp) + Dq := bbig.Dec(bDq) + Qinv := bbig.Dec(bQinv) e64 := E.Int64() if !E.IsInt64() || int64(int(e64)) != e64 { return nil, errors.New("crypto/rsa: generated key exponent too large") |