Private Key

A private key is a 64 or 66 characters hex string, looking like this:

// 64 characters hexadecimal private key
712cb1b773066cf572b6f271cb10be49b3e71ed24dd7b6a2ac876af9f3ad84e7

// 66 characters hexadecimal private key (always start with 00 in that case)
00d32b7c09e8747908b1ed9dbc893ff33987b2275bb3401cd5199f45b1bbbc7d75

6.1 - Create private keys

To obtain a private key, 4 choices are possible:

1) You can type yourself a random 64 hexadecimal string

2) Use the included PRNG:

// Create random bytes from PRNG
var rBytes = nem.crypto.nacl.randomBytes(32);

// Convert the random bytes to hex
var privateKey = nem.utils.convert.ua2hex(rBytes);

3) Create a private key from a passphrase:

// Derive a passphrase to get a private key
var privateKey = nem.crypto.helpers.derivePassSha(passphrase, 6000).priv;

4) Use a private key from another source.

6.2 - Create key pairs

Key pairs are objects representing accounts keys (private, secret and public) and are used to sign data or transactions.

Parameters

Name Type Description
hexData string 64 or 66 hexadecimal characters

Example

// A funny but valid private key
var privateKey = "aaaaaaaaaaeeeeeeeeeebbbbbbbbbb5555555555dddddddddd1111111111aaee";

// Create a key pair
var keyPair = nem.crypto.keyPair.create(privateKey);

6.3 - Sign with key pair

To sign a transaction or any other data simply use the above keyPair object

Example

var signature = keyPair.sign(data);

6.4 - Extract public key from key pair

You can extract the public key from the keyPair object very easily

Example

var publicKey = keyPair.publicKey.toString();

6.5 - Verify a signature

To verify a signature you need the signer public key, the data that have been signed and the signature.

Parameters

Name Type Description
publicKey string The signer public key
data string The data that were signed
signature string The signature of the data

Example

var signer = "0257b05f601ff829fdff84956fb5e3c65470a62375a1cc285779edd5ca3b42f6"
var signature = "392511e5b1d78e0991d4cb2a10037cc8be775e56d76b8157a4da726ccb44042e9b419084c09128ffe2a78fe78e2a19beb0e2f57e14b66c962187e61457bd9e09"
var data = "NEM is awesome !";
// Verify
var result = nem.crypto.verifySignature(signer, data, signature);
  • See examples/nodejs/verifySignature.js for node demonstration