Sample code for 30+ languages & platforms
React Native

Ed25519 Key Exchange (Shared Secret)

See more Ed25519 Examples

Demonstrates how to create an Ed25519 shared secret for use in key exchange.

Note: This example requires Chilkat v9.5.0.83 or greater.

Chilkat React Native Downloads

React Native
import { EdDSA, PrivateKey, PublicKey } from '@chilkat/react-native'

function chilkatExample() {
  // This example assumes the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // Alice's private key, a:
  //     77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
  // Alice's public key, X25519(a, 9):
  //     8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
  // Bob's private key, b:
  //     5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb
  // Bob's public key, X25519(b, 9):
  //     de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f
  // Their shared secret, K:
  //     4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742

  const alicePrivKey = '77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a';
  const bobPubKey = 'de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f';

  const privKey = new PrivateKey();
  // This example shows only one way of loading an Ed25519 private key.
  // Chilkat can load other formats (JWK, PEM, ASN.1 DER, etc.)  
  // You may do so by calling LoadAnyFormat or LoadAnyFormatFile.
  try {
    privKey.loadEd25519(alicePrivKey, '');
  } catch {
    console.log(privKey.lastErrorText);
    return;
  }

  const pubKey = new PublicKey();
  try {
    pubKey.loadEd25519(bobPubKey);
  } catch {
    console.log(pubKey.lastErrorText);
    return;
  }

  // Create the shared secret:
  const eddsa = new EdDSA();
  let sharedSecret: string;
  try {
    sharedSecret = eddsa.sharedSecretENC(privKey, pubKey, 'hexlower');
  } catch {
    console.log(eddsa.lastErrorText);
    return;
  }

  console.log(`Computed: ${sharedSecret}`);
  console.log('Expected: 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742');
}