Sample code for 30+ languages & platforms
Dart

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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // 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

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

  final privKey = CkPrivateKey();
  // 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, '');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final pubKey = CkPublicKey();
  try {
    pubKey.loadEd25519(bobPubKey);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Create the shared secret:
  final eddsa = CkEdDSA();
  final String sharedSecret;
  try {
    sharedSecret = eddsa.sharedSecretENC(privKey, pubKey, 'hexlower');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('Computed: $sharedSecret');
  print('Expected: 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742');
}