mirror of
https://github.com/go-i2p/go-i2p.git
synced 2025-07-13 11:54:46 -04:00
fix some tests
This commit is contained in:
@ -263,7 +263,7 @@ func generateTestDestination(t *testing.T) (*destination.Destination, crypto.Rec
|
||||
|
||||
// Create Destination
|
||||
dest := &destination.Destination{
|
||||
KeysAndCert: *kac,
|
||||
KeysAndCert: kac,
|
||||
}
|
||||
|
||||
return dest, elg_pubkey, ed25519_pubkey, &ed25519_privkey, nil
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/go-i2p/go-i2p/lib/common/certificate"
|
||||
"github.com/go-i2p/go-i2p/lib/common/signature"
|
||||
"github.com/samber/oops"
|
||||
|
||||
"github.com/go-i2p/go-i2p/lib/crypto"
|
||||
@ -384,28 +385,28 @@ func NewRouterInfo(
|
||||
publishedDate, _, err := ReadDate(dateBytes)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create Published Date")
|
||||
return nil, err
|
||||
return nil, oops.Errorf("failed to create published date: %v", err)
|
||||
}
|
||||
|
||||
// 2. Create Size Integer
|
||||
sizeInt, err := NewIntegerFromInt(len(addresses), 1)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create Size Integer")
|
||||
return nil, err
|
||||
return nil, oops.Errorf("failed to create size integer: %v", err)
|
||||
}
|
||||
|
||||
// 3. Create PeerSize Integer (always 0)
|
||||
peerSizeInt, err := NewIntegerFromInt(0, 1)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create PeerSize Integer")
|
||||
return nil, err
|
||||
return nil, oops.Errorf("failed to create peer size integer: %v", err)
|
||||
}
|
||||
|
||||
// 4. Convert options map to Mapping
|
||||
mapping, err := GoMapToMapping(options)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to convert options map to Mapping")
|
||||
return nil, err
|
||||
return nil, oops.Errorf("failed to convert options to mapping: %v", err)
|
||||
}
|
||||
|
||||
// 5. Assemble RouterInfo without signature
|
||||
@ -422,25 +423,47 @@ func NewRouterInfo(
|
||||
// 6. Serialize RouterInfo without signature
|
||||
dataBytes := routerInfo.serializeWithoutSignature()
|
||||
|
||||
// 7. Compute signature over serialized data
|
||||
signer, err := signingPrivateKey.NewSigner()
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create new signer")
|
||||
return nil, err
|
||||
}
|
||||
signatureBytes, err := signer.Sign(dataBytes)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to sign")
|
||||
// 7. Verify signingPrivateKey is valid
|
||||
if signingPrivateKey == nil {
|
||||
return nil, oops.Errorf("signing private key is nil")
|
||||
}
|
||||
|
||||
// 8. Create Signature struct from signatureBytes
|
||||
// 8. Create new signer based on signature type
|
||||
var signer crypto.Signer
|
||||
switch sigType {
|
||||
case signature.SIGNATURE_TYPE_EDDSA_SHA512_ED25519:
|
||||
ed25519Key, ok := signingPrivateKey.(*crypto.Ed25519PrivateKey)
|
||||
if !ok {
|
||||
return nil, oops.Errorf("expected *Ed25519PrivateKey but got %T", signingPrivateKey)
|
||||
}
|
||||
if len(*ed25519Key) != 64 {
|
||||
return nil, oops.Errorf("invalid Ed25519 private key size: got %d, want 64", len(*ed25519Key))
|
||||
}
|
||||
signer, err = ed25519Key.NewSigner()
|
||||
default:
|
||||
return nil, oops.Errorf("unsupported signature type: %d", sigType)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create signer")
|
||||
return nil, oops.Errorf("failed to create signer: %v", err)
|
||||
}
|
||||
|
||||
// 9. Sign the data
|
||||
signatureBytes, err := signer.Sign(dataBytes)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to sign RouterInfo data")
|
||||
return nil, oops.Errorf("failed to sign data: %v", err)
|
||||
}
|
||||
|
||||
// 10. Create Signature struct from signature bytes
|
||||
sig, _, err := ReadSignature(signatureBytes, sigType)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create Signature from signature bytes")
|
||||
return nil, err
|
||||
return nil, oops.Errorf("failed to create signature: %v", err)
|
||||
}
|
||||
|
||||
// 9. Attach signature to RouterInfo
|
||||
// 11. Attach signature to RouterInfo
|
||||
routerInfo.signature = &sig
|
||||
|
||||
log.WithFields(logrus.Fields{
|
||||
|
@ -22,12 +22,18 @@ import (
|
||||
func TestCreateRouterInfo(t *testing.T) {
|
||||
// Generate signing key pair (Ed25519)
|
||||
var ed25519_privkey crypto.Ed25519PrivateKey
|
||||
ed25519_signingprivkey, err := ed25519_privkey.Generate()
|
||||
ed25519_signingprivkey, err := crypto.GenerateEd25519Key() // Use direct key generation
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to generate Ed25519 private key: %v\n", err)
|
||||
}
|
||||
ed25519_privkey = ed25519_signingprivkey.(crypto.Ed25519PrivateKey) // Store the generated key
|
||||
|
||||
ed25519_pubkey_raw, err := ed25519_signingprivkey.Public()
|
||||
// Verify key size
|
||||
if len(ed25519_privkey) != 64 {
|
||||
t.Fatalf("Generated Ed25519 private key has wrong size: got %d, want 64", len(ed25519_privkey))
|
||||
}
|
||||
|
||||
ed25519_pubkey_raw, err := ed25519_privkey.Public()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to derive Ed25519 public key: %v\n", err)
|
||||
}
|
||||
|
@ -23,10 +23,17 @@ import (
|
||||
func generateTestRouterInfo(t *testing.T, publishedTime time.Time) (*RouterInfo, error) {
|
||||
// Generate signing key pair (Ed25519)
|
||||
var ed25519_privkey crypto.Ed25519PrivateKey
|
||||
_, err := (&ed25519_privkey).Generate()
|
||||
ed25519_signingprivkey, err := crypto.GenerateEd25519Key() // Use direct key generation
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to generate Ed25519 private key: %v\n", err)
|
||||
}
|
||||
ed25519_privkey = ed25519_signingprivkey.(crypto.Ed25519PrivateKey) // Store the generated key
|
||||
|
||||
// Verify key size
|
||||
if len(ed25519_privkey) != 64 {
|
||||
t.Fatalf("Generated Ed25519 private key has wrong size: got %d, want 64", len(ed25519_privkey))
|
||||
}
|
||||
|
||||
ed25519_pubkey_raw, err := ed25519_privkey.Public()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to derive Ed25519 public key: %v\n", err)
|
||||
|
@ -19,6 +19,14 @@ var (
|
||||
ErrInvalidPublicKeySize = oops.Errorf("failed to verify: invalid ed25519 public key size")
|
||||
)
|
||||
|
||||
func GenerateEd25519Key() (SigningPrivateKey, error) {
|
||||
_, priv, err := ed25519.GenerateKey(rand.Reader)
|
||||
if err != nil {
|
||||
return nil, oops.Errorf("failed to generate ed25519")
|
||||
}
|
||||
return Ed25519PrivateKey(priv), nil
|
||||
}
|
||||
|
||||
type Ed25519PublicKey []byte
|
||||
|
||||
type Ed25519Verifier struct {
|
||||
|
Reference in New Issue
Block a user