Merge pull request #30 from satk0/add-signature-tests

Add signature tests
This commit is contained in:
idk
2024-12-14 00:19:14 +00:00
committed by GitHub
4 changed files with 104 additions and 1 deletions

View File

@ -47,6 +47,7 @@ jobs:
- "test-lease-all"
- "test-date-time-from-milliseconds"
- "test-cert-all"
- "test-signatures"
steps:
- name: Checkout repository
@ -85,4 +86,4 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.test_target }}-logs
path: ./test-logs/${{ matrix.test_target }}.log # Adjust this path as needed
path: ./test-logs/${{ matrix.test_target }}.log # Adjust this path as needed

7
doc/tests/signatures.mk Normal file
View File

@ -0,0 +1,7 @@
test-signatures:
$(GO) test -v ./lib/common/signature/ -run TestReadSignatureErrors
$(GO) test -v ./lib/common/signature/ -run TestReadSignature
$(GO) test -v ./lib/common/signature/ -run TestNewSignatureError
$(GO) test -v ./lib/common/signature/ -run TestNewSignature
.PHONY: test-signatures

View File

@ -69,8 +69,24 @@ func ReadSignature(data []byte, sigType int) (sig Signature, remainder []byte, e
switch sigType {
case SIGNATURE_TYPE_DSA_SHA1:
sigLength = DSA_SHA1_SIZE
case SIGNATURE_TYPE_ECDSA_SHA256_P256:
sigLength = ECDSA_SHA256_P256_SIZE
case SIGNATURE_TYPE_ECDSA_SHA384_P384:
sigLength = ECDSA_SHA384_P384_SIZE
case SIGNATURE_TYPE_ECDSA_SHA512_P521:
sigLength = ECDSA_SHA512_P512_SIZE
case SIGNATURE_TYPE_RSA_SHA256_2048:
sigLength = RSA_SHA256_2048_SIZE
case SIGNATURE_TYPE_RSA_SHA384_3072:
sigLength = RSA_SHA384_3072_SIZE
case SIGNATURE_TYPE_RSA_SHA512_4096:
sigLength = RSA_SHA512_4096_SIZE
case SIGNATURE_TYPE_EDDSA_SHA512_ED25519:
sigLength = EdDSA_SHA512_Ed25519_SIZE
case SIGNATURE_TYPE_EDDSA_SHA512_ED25519PH:
sigLength = EdDSA_SHA512_Ed25519ph_SIZE
case SIGNATURE_TYPE_REDDSA_SHA512_ED25519:
sigLength = RedDSA_SHA512_Ed25519_SIZE
default:
err = fmt.Errorf("unsupported signature type: %d", sigType)
return

View File

@ -0,0 +1,79 @@
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 ")
}