fix padding + fail on invalid padding instead of warn.

This commit is contained in:
Haris Khan
2024-11-23 22:45:32 -05:00
parent 9b4bf2663d
commit 40c2c4806c
2 changed files with 23 additions and 10 deletions

View File

@@ -2,7 +2,6 @@
package keys_and_cert
import (
"crypto/rand"
"errors"
"fmt"
@@ -220,15 +219,18 @@ func NewKeysAndCert(
log.WithFields(logrus.Fields{
"expected_size": expectedPaddingSize,
"actual_size": len(padding),
}).Warn("Invalid padding size")
}).Error("Invalid padding size")
return nil, fmt.Errorf("Invalid padding size")
/*
// Generate random padding if invalid or missing
padding = make([]byte, expectedPaddingSize)
if _, err := rand.Read(padding); err != nil {
log.WithError(err).Error("Failed to generate random padding")
return nil, err
}
log.Debug("Generated random padding")
// Generate random padding if invalid or missing
padding = make([]byte, expectedPaddingSize)
if _, err := rand.Read(padding); err != nil {
log.WithError(err).Error("Failed to generate random padding")
return nil, err
}
log.Debug("Generated random padding")
*/
}
keysAndCert := &KeysAndCert{

View File

@@ -4,6 +4,8 @@ import (
"bytes"
"crypto/rand"
"encoding/binary"
"github.com/go-i2p/go-i2p/lib/common/key_certificate"
"github.com/go-i2p/go-i2p/lib/common/keys_and_cert"
"testing"
"time"
@@ -95,8 +97,17 @@ func TestCreateRouterInfo(t *testing.T) {
certBytes := cert.Bytes()
t.Logf("Serialized Certificate Size: %d bytes", len(certBytes))
keyCert := key_certificate.KeyCertificateFromCertificate(*cert)
pubKeySize := keyCert.CryptoSize()
sigKeySize := keyCert.SignatureSize()
expectedPaddingSize := keys_and_cert.KEYS_AND_CERT_DATA_SIZE - pubKeySize - sigKeySize
padding := make([]byte, expectedPaddingSize)
_, err = rand.Read(padding)
if err != nil {
t.Fatalf("Failed to generate random padding: %v\n", err)
}
// Create RouterIdentity
routerIdentity, err := router_identity.NewRouterIdentity(elg_pubkey, ed25519_pubkey, *cert, nil)
routerIdentity, err := router_identity.NewRouterIdentity(elg_pubkey, ed25519_pubkey, *cert, padding)
if err != nil {
t.Fatalf("Failed to create router identity: %v\n", err)
}