]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/tls (part 5/5)
authorAdam Langley <agl@golang.org>
Fri, 6 Nov 2009 00:44:02 +0000 (16:44 -0800)
committerAdam Langley <agl@golang.org>
Fri, 6 Nov 2009 00:44:02 +0000 (16:44 -0800)
Make RSA and X509 build by using big. (This involves commenting out
key generation for now since I haven't written Miller-Rabin in big
yet.)

Add entries to the Makefile.

R=rsc
CC=go-dev
http://go/go-review/1022005

src/pkg/Make.deps
src/pkg/Makefile
src/pkg/crypto/rsa/pkcs1v15.go
src/pkg/crypto/rsa/pkcs1v15_test.go
src/pkg/crypto/rsa/rsa.go
src/pkg/crypto/rsa/rsa_test.go
src/pkg/crypto/x509/x509.go
src/pkg/crypto/x509/x509_test.go

index 4cc7ce96c0f5bb9ebe8956ea793911e139800e56..b1f6b3d67b66965ea27d56576a3763ac2db923fb 100644 (file)
@@ -5,8 +5,8 @@ bignum.install: fmt.install
 bufio.install: io.install os.install strconv.install utf8.install
 bytes.install: os.install unicode.install utf8.install
 compress/flate.install: bufio.install bytes.install io.install math.install os.install sort.install strconv.install
-compress/gzip.install: bufio.install compress/flate.install hash.install hash/crc32.install io.install os.install
-compress/zlib.install: bufio.install compress/flate.install hash.install hash/adler32.install io.install os.install
+compress/gzip.install: bufio.install compress/flate.install hash/crc32.install hash.install io.install os.install
+compress/zlib.install: bufio.install compress/flate.install hash/adler32.install hash.install io.install os.install
 container/heap.install: sort.install
 container/list.install:
 container/ring.install:
@@ -16,8 +16,11 @@ crypto/block.install: fmt.install hash.install io.install os.install strconv.ins
 crypto/hmac.install: crypto/md5.install crypto/sha1.install hash.install os.install
 crypto/md5.install: hash.install os.install
 crypto/rc4.install: os.install strconv.install
+crypto/rsa.install: big.install bytes.install crypto/subtle.install hash.install io.install os.install
 crypto/sha1.install: hash.install os.install
 crypto/subtle.install:
+crypto/tls.install: bufio.install bytes.install container/list.install crypto/hmac.install crypto/md5.install crypto/rc4.install crypto/rsa.install crypto/sha1.install crypto/subtle.install fmt.install hash.install io.install net.install os.install strings.install time.install
+crypto/x509.install: asn1.install big.install crypto/rsa.install os.install
 debug/dwarf.install: encoding/binary.install os.install strconv.install
 debug/macho.install: bytes.install debug/dwarf.install encoding/binary.install fmt.install io.install os.install strconv.install
 debug/elf.install: bytes.install debug/dwarf.install encoding/binary.install fmt.install io.install os.install strconv.install
@@ -49,7 +52,7 @@ hash/adler32.install: hash.install os.install
 hash/crc32.install: hash.install os.install
 http.install: bufio.install bytes.install container/vector.install fmt.install io.install log.install net.install os.install path.install strconv.install strings.install utf8.install
 image.install:
-image/png.install: bufio.install compress/zlib.install hash.install hash/crc32.install image.install io.install os.install strconv.install
+image/png.install: bufio.install compress/zlib.install hash/crc32.install hash.install image.install io.install os.install strconv.install
 io.install: bytes.install os.install sort.install strings.install sync.install
 json.install: bytes.install container/vector.install fmt.install math.install reflect.install strconv.install strings.install utf8.install
 log.install: fmt.install io.install os.install runtime.install time.install
index 252237183b3c3fb52a535894329145655af26c7c..2869af2e0760023643e1ad9a898f453a28cd4816 100644 (file)
@@ -30,8 +30,11 @@ DIRS=\
        crypto/hmac\
        crypto/md5\
        crypto/rc4\
+       crypto/rsa\
        crypto/sha1\
        crypto/subtle\
+       crypto/tls\
+       crypto/x509\
        debug/dwarf\
        debug/macho\
        debug/elf\
index 2583f191144b45b7385d77073802bc8c483ddcd6..58f860facf3457b7dc345e5bb17260fa3d302915 100644 (file)
@@ -5,9 +5,9 @@
 package rsa
 
 import (
+       "big";
        "bytes";
        "crypto/subtle";
-       big "gmp";
        "io";
        "os";
 )
index b2cdc2660260e9b677d0edad9a8b3c7b62c7a148..1f5cf463a2a67503f80f80db9c62246aefcc796c 100644 (file)
@@ -5,9 +5,9 @@
 package rsa
 
 import (
+       "big";
        "bytes";
        "encoding/base64";
-       big "gmp";
        "os";
        "io";
        "strings";
index 65258781bd9ddbecd253320c7acfcd5afdc121a6..701c4cd4f5de74f44d56153949bf7786e1663c95 100644 (file)
@@ -8,9 +8,9 @@ package rsa
 // TODO(agl): Add support for PSS padding.
 
 import (
+       "big";
        "bytes";
        "crypto/subtle";
-       big "gmp";
        "hash";
        "io";
        "os";
@@ -19,6 +19,10 @@ import (
 var bigZero = big.NewInt(0)
 var bigOne = big.NewInt(1)
 
+/*
+
+TODO(agl): Enable once big implements ProbablyPrime.
+
 // randomSafePrime returns a number, p, of the given size, such that p and
 // (p-1)/2 are both prime with high probability.
 func randomSafePrime(rand io.Reader, bits int) (p *big.Int, err os.Error) {
@@ -53,6 +57,8 @@ func randomSafePrime(rand io.Reader, bits int) (p *big.Int, err os.Error) {
        return;
 }
 
+*/
+
 // randomNumber returns a uniform random value in [0, max).
 func randomNumber(rand io.Reader, max *big.Int) (n *big.Int, err os.Error) {
        k := (max.Len() + 7)/8;
@@ -103,6 +109,9 @@ type PrivateKey struct {
 // It returns nil if the key is valid, or else an os.Error describing a problem.
 
 func (priv PrivateKey) Validate() os.Error {
+       /*
+       TODO(agl): Enable once big implements ProbablyPrime.
+
        // Check that p and q are prime.
        if !priv.P.ProbablyPrime(20) {
                return os.ErrorString("P is composite");
@@ -110,6 +119,7 @@ func (priv PrivateKey) Validate() os.Error {
        if !priv.Q.ProbablyPrime(20) {
                return os.ErrorString("Q is composite");
        }
+       */
        // Check that p*q == n.
        modulus := new(big.Int).Mul(priv.P, priv.Q);
        if big.CmpInt(modulus, priv.N) != 0 {
@@ -136,6 +146,8 @@ func (priv PrivateKey) Validate() os.Error {
        return nil;
 }
 
+/*
+
 // GenerateKeyPair generates an RSA keypair of the given bit size.
 func GenerateKey(rand io.Reader, bits int) (priv *PrivateKey, err os.Error) {
        priv = new(PrivateKey);
@@ -192,6 +204,8 @@ func GenerateKey(rand io.Reader, bits int) (priv *PrivateKey, err os.Error) {
        return;
 }
 
+*/
+
 // incCounter increments a four byte, big-endian counter.
 func incCounter(c *[4]byte) {
        if c[3]++; c[3] != 0 {
index 3bdfc66a796837c43d99975c04d4c7ee837a7100..7070a8ba8e4d13a8f5195ff8c34f53237e14fe4b 100644 (file)
@@ -5,13 +5,17 @@
 package rsa
 
 import (
+       "big";
        "bytes";
        "crypto/sha1";
-       big "gmp";
        "os";
        "testing";
 )
 
+/*
+
+TODO(agl): Enable once big implements ProbablyPrime.
+
 func TestKeyGeneration(t *testing.T) {
        urandom, err := os.Open("/dev/urandom", os.O_RDONLY, 0);
        if err != nil {
@@ -42,6 +46,8 @@ func TestKeyGeneration(t *testing.T) {
        }
 }
 
+*/
+
 type testEncryptOAEPMessage struct {
        in      []byte;
        seed    []byte;
index 1997ec9a587daab6d83754fa127fe45056e076e5..87829ec8e27261a4bc8e2a723d7453ddf455f580 100644 (file)
@@ -9,9 +9,9 @@ package x509
 
 import (
        "asn1";
+       "big";
        "crypto/rsa";
        "os";
-       big "gmp";
 )
 
 // pkcs1PrivateKey is a structure which mirrors the PKCS#1 ASN.1 for an RSA private key.
index e5ca0f0f030573a3cc93e188014c1ffd3aba3c17..4b2a5ec8a2d89d097bde2d9c8f52ddadd4a2e00d 100644 (file)
@@ -5,12 +5,12 @@
 package x509
 
 import (
+       "big";
        "crypto/rsa";
        "encoding/pem";
        "reflect";
        "strings";
        "testing";
-       big "gmp";
 )
 
 func TestParsePKCS1PrivateKey(t *testing.T) {