79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
package signature
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestReadSignatureErrors(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data := []byte{0xbe, 0xef}
|
|
unsupportedSigType := 1000
|
|
_, _, err := ReadSignature(data, unsupportedSigType)
|
|
assert.NotNil(err, "unsupported signature error should be reported")
|
|
|
|
sigType := SIGNATURE_TYPE_DSA_SHA1
|
|
_, _, err = ReadSignature(data, sigType)
|
|
assert.NotNil(err, "insufficient data error should be reported")
|
|
}
|
|
|
|
func TestReadSignature(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
sigTypes := []int{
|
|
SIGNATURE_TYPE_DSA_SHA1, SIGNATURE_TYPE_ECDSA_SHA256_P256,
|
|
SIGNATURE_TYPE_ECDSA_SHA384_P384, SIGNATURE_TYPE_ECDSA_SHA512_P521,
|
|
SIGNATURE_TYPE_RSA_SHA256_2048, SIGNATURE_TYPE_RSA_SHA384_3072,
|
|
SIGNATURE_TYPE_RSA_SHA512_4096, SIGNATURE_TYPE_EDDSA_SHA512_ED25519,
|
|
SIGNATURE_TYPE_EDDSA_SHA512_ED25519PH, SIGNATURE_TYPE_REDDSA_SHA512_ED25519,
|
|
}
|
|
sigLengths := []int{
|
|
DSA_SHA1_SIZE, EdDSA_SHA512_Ed25519_SIZE,
|
|
ECDSA_SHA384_P384_SIZE, ECDSA_SHA512_P512_SIZE,
|
|
RSA_SHA256_2048_SIZE, RSA_SHA384_3072_SIZE,
|
|
RSA_SHA512_4096_SIZE, EdDSA_SHA512_Ed25519_SIZE,
|
|
EdDSA_SHA512_Ed25519ph_SIZE, RedDSA_SHA512_Ed25519_SIZE,
|
|
}
|
|
|
|
dataLen := 1024
|
|
data := []byte{}
|
|
for i := 0; i < dataLen; i++ {
|
|
data = append(data, byte(i%10))
|
|
}
|
|
|
|
for i, sigType := range sigTypes {
|
|
sig, rem, err := ReadSignature(data, sigType)
|
|
assert.Nil(err, "no errors should be returned")
|
|
assert.Equal(sig, Signature(data[:sigLengths[i]]), "signature should be sliced from data")
|
|
assert.Equal(rem, data[sigLengths[i]:], "remainder should be sliced from data ")
|
|
}
|
|
}
|
|
|
|
func TestNewSignatureError(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data := []byte{0xbe, 0xef}
|
|
unsupportedSigType := 1000
|
|
_, _, err := NewSignature(data, unsupportedSigType)
|
|
assert.NotNil(err, "NewSignature error should be reported")
|
|
}
|
|
|
|
func TestNewSignature(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data := []byte{}
|
|
sigLength := EdDSA_SHA512_Ed25519_SIZE
|
|
remLength := 20
|
|
for i := 0; i < sigLength+remLength; i++ {
|
|
data = append(data, byte(i%10))
|
|
}
|
|
sigType := SIGNATURE_TYPE_EDDSA_SHA512_ED25519
|
|
|
|
sig, rem, err := NewSignature(data, sigType)
|
|
assert.Nil(err, "no errors should be returned")
|
|
assert.Equal(*sig, Signature(data[:sigLength]), "signature should be sliced from data")
|
|
assert.Equal(rem, data[sigLength:], "remainder should be sliced from data ")
|
|
}
|