@smartledger/elliptic-fix
Version:
Security fix for signature malleability vulnerability in Elliptic package v6.5.5 used by bsv@1.5.6
20 lines (15 loc) • 751 B
JavaScript
const elliptic = require('elliptic');
const ed = new elliptic.eddsa('ed25519');
// Generate a key pair
const key = ed.keyFromSecret('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef');
const msg = Buffer.from('test message');
// Create a valid signature
const sig = key.sign(msg);
// Demonstrate vulnerability by creating a malleable signature
// This will pass verification despite being invalid
const malleableSig = Buffer.from(sig);
// Modify S value to be >= n (curve order)
// This should fail verification but doesn't in 6.5.5
malleableSig[63] = 0xff; // Make S very large
console.log('Original signature verification:', key.verify(msg, sig));
console.log('Malleable signature verification:', key.verify(msg, malleableSig));