Select Git revision
NicknameViewModel.swift
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" +