ECDSA cryptographic signature library for JavaScript.
Elliptic Curve | Hash Algorithm |
---|---|
P-256(Default) | SHA256(Default) |
P-384 | SHA384 |
secp256k1 | SHA256 |
- Node.js 18 or higher
npm i ec-sign
const sign = require('ec-sign')
// Synchronous
const keypair = sign.SignUtils.generateKeyPairSync('secp224r1');
// Asynchronous
const keypair = await sign.SignUtils.generateKeyPair('secp224r1');
const pubPem = sign.SignUtils.toPem(keypair.publicKey);
console.info(pubPem);
// -----BEGIN PUBLIC KEY-----
// MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEm1eVSAq73aR2Oo8L8rvDzBU214+uhgIj
// MkiasZgxKDJtMbGosVVCPd8drgkr3NrZ1Eqhrf0mveProOsJdaF5Ag==
// -----END PUBLIC KEY-----
const priPem = sign.SignUtils.toPem(keypair.privateKey);
console.info(priPem);
// -----BEGIN PRIVATE KEY-----
// MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgH4RMksnOnI68DAm0PzqQ
// rtS1oznTSsb/pVDQLNPguqShRANCAASbV5VICrvdpHY6jwvyu8PMFTbXj66GAiMy
// SJqxmDEoMm0xsaixVUI93x2uCSvc2tnUSqGt/Sa94+ug6wl1oXkC
// -----END PRIVATE KEY-----
const signer = new sign.Signer(priPem);
const result = signer.sign("hello, message");
console.info(result.timestamp);
// 1688895463045
console.info(result.signature);
// MEYCIQCeYobZ2BIoL7jCV4eGYrT/yXGtNLhEFY2MchsIDGCsywIhAMwak6nBiHgJsNfuY2zSdcX235Xy7Ucj2bGMvFh/xdTy
const verifier = new sign.Verifier(pubPem);
const valid = verifier.verify("hello, message", result.timestamp, result.signature.toString());
console.info(`signature was verified: ${valid}`);
// signature was verified: true
node.js, npm, git need to be installed.
git clone https://github.com/rising3/ec-sign-js.git
cd ec-sign-js
npm i
npm run test
npm run build