low-level-api.js 652 B

1234567891011121314151617181920212223
  1. var sodium = require('sodium').api;
  2. // Generate keys
  3. var sender = sodium.crypto_box_keypair();
  4. var receiver = sodium.crypto_box_keypair();
  5. // Generate random nonce
  6. var nonce = Buffer.allocUnsafe(sodium.crypto_box_NONCEBYTES);
  7. sodium.randombytes_buf(nonce);
  8. // Encrypt
  9. var plainText = Buffer.from('this is a message');
  10. var cipherMsg = sodium.crypto_box(plainText, nonce, receiver.publicKey, sender.secretKey);
  11. // Decrypt
  12. var plainBuffer = sodium.crypto_box_open(cipherMsg, nonce, sender.publicKey,
  13. receiver.secretKey);
  14. // We should get the same plainText!
  15. if (plainBuffer.toString() == plainText) {
  16. console.log("Message decrypted correctly");
  17. }