40 lines
948 B
Go
40 lines
948 B
Go
package keys
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
const testSK = "f43a0435f69529f310bbd1d6263d2fbf0977f54bfe2310cc37ae5904b83bb167"
|
|
const testPK = "cfa87f35acbde29ba1ab3ee42de527b2cad33ac487e80cf2d6405ea0042c8fef"
|
|
|
|
var Hex64Pattern = regexp.MustCompile("^[a-f0-9]{64}$")
|
|
|
|
func TestGeneratePrivateKey(t *testing.T) {
|
|
sk, err := GeneratePrivateKey()
|
|
|
|
assert.NoError(t, err)
|
|
if !Hex64Pattern.MatchString(sk) {
|
|
t.Errorf("invalid private key format: %s", sk)
|
|
}
|
|
}
|
|
|
|
func TestGenerateUniquePrivateKeys(t *testing.T) {
|
|
sk1, _ := GeneratePrivateKey()
|
|
sk2, _ := GeneratePrivateKey()
|
|
assert.NotEqual(t, sk1, sk2)
|
|
}
|
|
|
|
func TestGetPublicKey(t *testing.T) {
|
|
pk, err := GetPublicKey(testSK)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, testPK, pk)
|
|
}
|
|
|
|
func TestGetPublicKeyInvalidPrivateKey(t *testing.T) {
|
|
_, err := GetPublicKey("abc123")
|
|
assert.ErrorContains(t, err, "private key must be 64 lowercase hex characters")
|
|
}
|