154 lines
5.8 KiB
Go
154 lines
5.8 KiB
Go
|
package accountKeys_test
|
||
|
|
||
|
import "seekia/internal/network/accountKeys"
|
||
|
|
||
|
import "seekia/internal/encoding"
|
||
|
|
||
|
import "testing"
|
||
|
import "bytes"
|
||
|
|
||
|
func TestAccountKeys(t *testing.T){
|
||
|
|
||
|
testSeedPhraseHashHex := "2a66776f76662444f2cadbdb408485db11e58ef1f262c9afcc11ab8d07c0e762"
|
||
|
|
||
|
testSeedPhraseHashBytes, err := encoding.DecodeHexStringToBytes(testSeedPhraseHashHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Invalid testSeedPhraseHash: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
if (len(testSeedPhraseHashBytes) != 32){
|
||
|
t.Fatalf("Invalid testSeedPhraseHash: Invalid length.")
|
||
|
}
|
||
|
|
||
|
testSeedPhraseHashArray := [32]byte(testSeedPhraseHashBytes)
|
||
|
|
||
|
expectedPublicKeyHex := "4819fbbac7d06bc21e3e55e7f0286465b72b5468814bf77b9feb38088de21f7c"
|
||
|
|
||
|
expectedPublicKeyBytes, err := encoding.DecodeHexStringToBytes(expectedPublicKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedPublicKeyHex is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
expectedPrivateKeyHex := "30832da4d36f9ec2fd1ce227cad6b3089683fb761fde7242b137cb5d659a48f74819fbbac7d06bc21e3e55e7f0286465b72b5468814bf77b9feb38088de21f7c"
|
||
|
|
||
|
expectedPrivateKeyBytes, err := encoding.DecodeHexStringToBytes(expectedPrivateKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedPrivateKeyBytes is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
publicKey, privateKey, err := accountKeys.GetCreditAccountPublicPrivateKeys(testSeedPhraseHashArray, 1, "Identifier", 1)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive credit account public/private keys: " + err.Error())
|
||
|
}
|
||
|
|
||
|
areEqual := bytes.Equal(publicKey[:], expectedPublicKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
publicKeyHex := encoding.EncodeBytesToHexString(publicKey[:])
|
||
|
t.Fatalf("Account Identifier public key is not expected: " + publicKeyHex)
|
||
|
}
|
||
|
|
||
|
areEqual = bytes.Equal(privateKey[:], expectedPrivateKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
privateKeyHex := encoding.EncodeBytesToHexString(privateKey[:])
|
||
|
t.Fatalf("Account Identifier private key is not expected: " + privateKeyHex)
|
||
|
}
|
||
|
|
||
|
newIdentifier, err := accountKeys.GetAccountIdentifierFromAccountPublicKey(publicKey)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive Identifier from account public key: " + err.Error())
|
||
|
}
|
||
|
|
||
|
if (newIdentifier != "d7d1458ee1ae30f530b6276b3e71"){
|
||
|
t.Fatalf("Account Identifier is not expected: " + newIdentifier)
|
||
|
}
|
||
|
|
||
|
{
|
||
|
expectedAccountPublicKeyHex := "4388ea42cce699c93f2d0f5a44846363620b933f2ccf4038e991aedf96b8ebba"
|
||
|
|
||
|
expectedAccountPublicKeyBytes, err := encoding.DecodeHexStringToBytes(expectedAccountPublicKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedAccountPublicKeyHex is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
expectedAccountPrivateKeyHex := "ecbc905488d03f2dc0ec5cd8b5cd9805ae7bd599cacd33d65de1558c4f8ac3be4388ea42cce699c93f2d0f5a44846363620b933f2ccf4038e991aedf96b8ebba"
|
||
|
|
||
|
expectedAccountPrivateKeyBytes, err := encoding.DecodeHexStringToBytes(expectedAccountPrivateKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedAccountPrivateKeyHex is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
accountPublicKey, accountPrivateKey, err := accountKeys.GetCreditAccountPublicPrivateKeys(testSeedPhraseHashArray, 2, "Ethereum", 1)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive credit accout public/private keys: " + err.Error())
|
||
|
}
|
||
|
|
||
|
areEqual = bytes.Equal(accountPublicKey[:], expectedAccountPublicKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
accountPublicKeyHex := encoding.EncodeBytesToHexString(accountPublicKey[:])
|
||
|
t.Fatalf("Account Ethereum public key is not expected: " + accountPublicKeyHex)
|
||
|
}
|
||
|
|
||
|
areEqual = bytes.Equal(accountPrivateKey[:], expectedAccountPrivateKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
accountPrivateKeyHex := encoding.EncodeBytesToHexString(accountPrivateKey[:])
|
||
|
t.Fatalf("Account Ethereum private key is not expected: " + accountPrivateKeyHex)
|
||
|
}
|
||
|
|
||
|
newAddress, err := accountKeys.GetCryptocurrencyAddressFromAccountPublicKey("Ethereum", accountPublicKey)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive Ethereum address from account public key: " + err.Error())
|
||
|
}
|
||
|
if (newAddress != "0x9470096c6a003F215D5F5497Ab14B9138D36eBAB"){
|
||
|
t.Fatalf("Account Ethereum address is not expected: " + newAddress)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
{
|
||
|
|
||
|
expectedAccountPublicKeyHex := "58af93381ab57eab44d087213737197b99706354f76c717cf10713175f759eff"
|
||
|
|
||
|
expectedAccountPublicKeyBytes, err := encoding.DecodeHexStringToBytes(expectedAccountPublicKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedAccountPublicKeyHex is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
expectedAccountPrivateKeyHex := "776583a8077c411b86ed7ebb431b1e34885020e701ee15d7e80b5919517b24ad58af93381ab57eab44d087213737197b99706354f76c717cf10713175f759eff"
|
||
|
|
||
|
expectedAccountPrivateKeyBytes, err := encoding.DecodeHexStringToBytes(expectedAccountPrivateKeyHex)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("expectedAccountPrivateKeyHex is invalid: Not Hex: " + err.Error())
|
||
|
}
|
||
|
|
||
|
accountPublicKey, accountPrivateKey, err := accountKeys.GetCreditAccountPublicPrivateKeys(testSeedPhraseHashArray, 2, "Cardano", 1)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive credit accout public/private keys: " + err.Error())
|
||
|
}
|
||
|
|
||
|
areEqual = bytes.Equal(accountPublicKey[:], expectedAccountPublicKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
accountPublicKeyHex := encoding.EncodeBytesToHexString(accountPublicKey[:])
|
||
|
t.Fatalf("Account Cardano public key is not expected: " + accountPublicKeyHex)
|
||
|
}
|
||
|
|
||
|
areEqual = bytes.Equal(accountPrivateKey[:], expectedAccountPrivateKeyBytes)
|
||
|
if (areEqual == false){
|
||
|
accountPrivateKeyHex := encoding.EncodeBytesToHexString(accountPrivateKey[:])
|
||
|
t.Fatalf("Account Cardano private key is not expected: " + accountPrivateKeyHex)
|
||
|
}
|
||
|
|
||
|
newAddress, err := accountKeys.GetCryptocurrencyAddressFromAccountPublicKey("Cardano", accountPublicKey)
|
||
|
if (err != nil){
|
||
|
t.Fatalf("Failed to derive Cardano address from account public key: " + err.Error())
|
||
|
}
|
||
|
if (newAddress != "addr1v9j3g9hlca5x9akv2vjm9sp33uu646narslp8pjnr5venuq5c705l"){
|
||
|
t.Fatalf("Account Cardano address is not expected: " + newAddress)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|