mirror of https://gogs.blitter.com/RLabs/xs
				
				
				
			use crypto/rand in key spots (for KEM seeds) rather than math/rand
Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
		
							parent
							
								
									4e8e064c74
								
							
						
					
					
						commit
						f2929120b6
					
				
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							|  | @ -1,4 +1,4 @@ | ||||||
| VERSION := 0.9.0 | VERSION := 0.9.1 | ||||||
| .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall | .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall | ||||||
| 
 | 
 | ||||||
| ## Tag version of binaries with build info wrt.
 | ## Tag version of binaries with build info wrt.
 | ||||||
|  |  | ||||||
							
								
								
									
										42
									
								
								xsnet/net.go
								
								
								
								
							
							
						
						
									
										42
									
								
								xsnet/net.go
								
								
								
								
							|  | @ -39,6 +39,7 @@ import ( | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"time" | 	"time" | ||||||
|  | 	crand "crypto/rand" | ||||||
| 
 | 
 | ||||||
| 	hkex "blitter.com/go/herradurakex" | 	hkex "blitter.com/go/herradurakex" | ||||||
| 	"blitter.com/go/kyber" | 	"blitter.com/go/kyber" | ||||||
|  | @ -474,24 +475,11 @@ func FrodoKEMDialSetup(c io.ReadWriter, hc *Conn) (err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // randReader wraps rand.Read() in a struct that implements io.Reader
 |  | ||||||
| // for use by the Kyber and NEWHOPE/NEWHOPE_SIMPLE KEM methods.
 |  | ||||||
| type randReader struct { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (r randReader) Read(b []byte) (n int, e error) { |  | ||||||
| 	n, e = rand.Read(b) |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { | func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { | ||||||
| 	// Send xsnet.Conn parameters to remote side
 | 	// Send xsnet.Conn parameters to remote side
 | ||||||
| 
 | 
 | ||||||
| 	// Alice, step 1: Generate a key pair.
 | 	// Alice, step 1: Generate a key pair.
 | ||||||
| 	r := new(randReader) | 	privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairAlice(crand.Reader) | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 
 |  | ||||||
| 	privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairAlice(r) |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  | @ -533,9 +521,7 @@ func NewHopeSimpleDialSetup(c io.ReadWriter, hc *Conn) (err error) { | ||||||
| 	// Send xsnet.Conn parameters to remote side
 | 	// Send xsnet.Conn parameters to remote side
 | ||||||
| 
 | 
 | ||||||
| 	// Alice, step 1: Generate a key pair.
 | 	// Alice, step 1: Generate a key pair.
 | ||||||
| 	r := new(randReader) | 	privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairSimpleAlice(crand.Reader) | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 	privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairSimpleAlice(r) |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  | @ -577,19 +563,17 @@ func KyberDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { | ||||||
| 	// Send xsnet.Conn parameters to remote side
 | 	// Send xsnet.Conn parameters to remote side
 | ||||||
| 
 | 
 | ||||||
| 	// Alice, step 1: Generate a key pair.
 | 	// Alice, step 1: Generate a key pair.
 | ||||||
| 	r := new(randReader) |  | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 	var alicePublicKey *kyber.PublicKey | 	var alicePublicKey *kyber.PublicKey | ||||||
| 	var alicePrivateKey *kyber.PrivateKey | 	var alicePrivateKey *kyber.PrivateKey | ||||||
| 	switch hc.kex { | 	switch hc.kex { | ||||||
| 	case KEX_KYBER512: | 	case KEX_KYBER512: | ||||||
| 		alicePublicKey, alicePrivateKey, err = kyber.Kyber512.GenerateKeyPair(r) | 		alicePublicKey, alicePrivateKey, err = kyber.Kyber512.GenerateKeyPair(crand.Reader) | ||||||
| 	case KEX_KYBER768: | 	case KEX_KYBER768: | ||||||
| 		alicePublicKey, alicePrivateKey, err = kyber.Kyber768.GenerateKeyPair(r) | 		alicePublicKey, alicePrivateKey, err = kyber.Kyber768.GenerateKeyPair(crand.Reader) | ||||||
| 	case KEX_KYBER1024: | 	case KEX_KYBER1024: | ||||||
| 		alicePublicKey, alicePrivateKey, err = kyber.Kyber1024.GenerateKeyPair(r) | 		alicePublicKey, alicePrivateKey, err = kyber.Kyber1024.GenerateKeyPair(crand.Reader) | ||||||
| 	default: | 	default: | ||||||
| 		alicePublicKey, alicePrivateKey, err = kyber.Kyber768.GenerateKeyPair(r) | 		alicePublicKey, alicePrivateKey, err = kyber.Kyber768.GenerateKeyPair(crand.Reader) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | @ -731,8 +715,6 @@ func FrodoKEMAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { | func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| 	r := new(randReader) |  | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 	// Bob, step 1: Deserialize Alice's public key from the binary encoding.
 | 	// Bob, step 1: Deserialize Alice's public key from the binary encoding.
 | ||||||
| 	alicePublicKey := big.NewInt(0) | 	alicePublicKey := big.NewInt(0) | ||||||
| 	_, err = fmt.Fscanln(*c, alicePublicKey) | 	_, err = fmt.Fscanln(*c, alicePublicKey) | ||||||
|  | @ -754,7 +736,7 @@ func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | ||||||
| 	pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeBob(r, &pubKeyAlice) | 	pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeBob(crand.Reader, &pubKeyAlice) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  | @ -769,8 +751,6 @@ func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func NewHopeSimpleAcceptSetup(c *net.Conn, hc *Conn) (err error) { | func NewHopeSimpleAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| 	r := new(randReader) |  | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 	// Bob, step 1: Deserialize Alice's public key from the binary encoding.
 | 	// Bob, step 1: Deserialize Alice's public key from the binary encoding.
 | ||||||
| 	alicePublicKey := big.NewInt(0) | 	alicePublicKey := big.NewInt(0) | ||||||
| 	_, err = fmt.Fscanln(*c, alicePublicKey) | 	_, err = fmt.Fscanln(*c, alicePublicKey) | ||||||
|  | @ -792,7 +772,7 @@ func NewHopeSimpleAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | ||||||
| 	pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeSimpleBob(r, &pubKeyAlice) | 	pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeSimpleBob(crand.Reader, &pubKeyAlice) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  | @ -838,9 +818,7 @@ func KyberAcceptSetup(c *net.Conn, hc *Conn) (err error) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | 	// Bob, step 2: Generate the KEM cipher text and shared secret.
 | ||||||
| 	r := new(randReader) | 	cipherText, bobSharedSecret, err := peerPublicKey.KEMEncrypt(crand.Reader) | ||||||
| 	rand.Seed(time.Now().UnixNano()) |  | ||||||
| 	cipherText, bobSharedSecret, err := peerPublicKey.KEMEncrypt(r) |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue