mirror of
https://github.com/go-i2p/go-i2p.git
synced 2025-07-14 04:44:40 -04:00
Merge pull request #30 from satk0/add-signature-tests
Add signature tests
This commit is contained in:
3
.github/workflows/tests.yml
vendored
3
.github/workflows/tests.yml
vendored
@ -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
7
doc/tests/signatures.mk
Normal 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
|
@ -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
|
||||
|
79
lib/common/signature/signature_test.go
Normal file
79
lib/common/signature/signature_test.go
Normal 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 ")
|
||||
}
|
Reference in New Issue
Block a user