Skip to content
Snippets Groups Projects
Select Git revision
  • 8a1d2d970ca815bd3e95f15de47b0d2776528380
  • main default protected
  • development
  • integration
  • v1.1.5
  • v1.1.4
  • v1.1.3
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.0
11 results

ClientError.swift

Blame
  • dhkx_test.go 8.18 KiB
    ////////////////////////////////////////////////////////////////////////////////
    // Copyright © 2022 xx foundation                                             //
    //                                                                            //
    // Use of this source code is governed by a license that can be found in the  //
    // LICENSE file.                                                              //
    ////////////////////////////////////////////////////////////////////////////////
    
    package diffieHellman
    
    import (
    	"encoding/hex"
    	"gitlab.com/elixxir/crypto/cyclic"
    	"gitlab.com/xx_network/crypto/csprng"
    	"gitlab.com/xx_network/crypto/large"
    	"testing"
    )
    
    // Tests that private key generates a valid private Key and errors and edge
    // cases are handled correctly
    func TestGeneratePrivateKey(t *testing.T) {
    
    	const numGenerations = 50
    
    	primeString := "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
    		"29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
    		"EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
    		"E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" +
    		"EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" +
    		"C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" +
    		"83655D23DCA3AD961C62F356208552BB9ED529077096966D" +
    		"670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" +
    		"E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" +
    		"DE2BCBF6955817183995497CEA956AE515D2261898FA0510" +
    		"15728E5A8AACAA68FFFFFFFFFFFFFFFF"
    	p := large.NewInt(1)
    	p.SetString(primeString, 16)
    	g := large.NewInt(2)
    	grp := cyclic.NewGroup(p, g)
    
    	rng := csprng.NewSystemRNG()
    
    	// create a private key and check it is the correct length with the default size
    	// do this over and over becasue the size can generate smaller
    	maxSize := 0
    
    	for i := 0; i < numGenerations; i++ {
    		privKey := GeneratePrivateKey(DefaultPrivateKeyLength, grp, rng)
    		if privKey.BitLen() > maxSize {
    			maxSize = privKey.BitLen()
    		}
    	}
    
    	if maxSize != DefaultPrivateKeyLengthBits {
    		t.Errorf("Generated Private Keys never met correct length: "+
    			"Expected :%v, Received: %v", DefaultPrivateKeyLength, maxSize)
    	}
    }
    
    // tests public keys are generated correctly
    func TestGeneratePublicKey(t *testing.T) {
    	const numTests = 50
    
    	primeString := "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
    		"29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
    		"EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
    		"E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" +
    		"EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" +
    		"C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" +
    		"83655D23DCA3AD961C62F356208552BB9ED529077096966D" +
    		"670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" +