3.7 KiB
Digital signatures
See also: Libsodium's documentation on its public-key signature features.
crypto_sign
See also: the detached API below.
Sign a message with Ed25519, returning a signed message (prefixed with the signature).
Parameters and their respective types:
{string|Buffer}message{Ed25519SecretKey}secretKey
Returns a Promise that resolves to a Buffer.
crypto_sign_open
Verify a signed message with Ed25519, returning the original message if the signature is valid.
Parameters and their respective types:
{string|Buffer}signedMessage{Ed25519SecretKey}publicKey
Returns a Promise that resolves to a Buffer.
crypto_sign_detached
Returns the Ed25519 signature of the message, for the given secret key.
Parameters and their respective types:
{string|Buffer}message{Ed25519SecretKey}secretKey
Returns a Promise that resolves to a Buffer.
crypto_sign_verify_detached
Returns true if the Ed25519 signature is valid for a given message and public key.
Parameters and their respective types:
{string|Buffer}message{Ed25519PublicKey}publicKey{Buffer}signature
Returns a Promise that resolves to a boolean.
crypto_sign_keypair
Returns a Promise that resolves to a CryptographyKey containing a 96-byte
Buffer. The first 64 bytes are your Ed25519 secret key, the latter 32 are your
Ed25519 public key.
crypto_sign_seed_keypair
Parameters and their respective types:
{Buffer}32 byte seed
Returns a Promise that resolves to a CryptographyKey containing a 96-byte
Buffer. The first 64 bytes are your Ed25519 secret key, the latter 32 are your
Ed25519 public key.
crypto_sign_publickey
Parameters and their respective types:
{CryptographyKey}(buffer must be 96 bytes long)
Returns a Promise that resolves to a Ed25519PublicKey.
crypto_sign_secretkey
Parameters and their respective types:
{CryptographyKey}(buffer must be 96 bytes long)
Returns a Promise that resolves to a Ed25519SecretKey.
crypto_sign_ed25519_sk_to_curve25519
Obtain a birationally equivalent X25519 secret key, given an Ed25519 secret key.
Parameters and their respective types:
{Ed25519SecretKey}
Returns a Promise that resolves to an X25519SecretKey.
crypto_sign_ed25519_pk_to_curve25519
Obtain a birationally equivalent X25519 public key, given an Ed25519 public key.
Parameters and their respective types:
{Ed25519PublicKey}
Returns a Promise that resolves to an X25519PublicKey.
Example for crypto_sign
const { SodiumPlus } = require('sodium-plus');
let sodium;
(async function () {
if (!sodium) sodium = await SodiumPlus.auto();
let aliceKeypair = await sodium.crypto_sign_keypair();
let aliceSecret = await sodium.crypto_sign_secretkey(aliceKeypair);
let alicePublic = await sodium.crypto_sign_publickey(aliceKeypair);
let message = 'This is something I need to sign publicly.';
// Detached mode:
let signature = await sodium.crypto_sign_detached(message, aliceSecret);
console.log(signature.toString('hex'));
if (await sodium.crypto_sign_verify_detached(message, alicePublic, signature)) {
console.log("Signature is valid.");
} else {
console.error("Invalid signature!");
}
// NaCl (crypto_sign / crypto_sign_open):
let signed = await sodium.crypto_sign(message, aliceSecret);
let opened = await sodium.crypto_sign_open(signed, alicePublic);
console.log(opened.toString());
})();