Sample code for 30+ languages & platforms
React Native

Ed25519ph Sign and Verify

See more Ed25519 Examples

Demonstrates how to create an Ed25519ph signature, and then to verify it.

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

Chilkat React Native Downloads

React Native
import { BinData, 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.

  // Use the following test vector from https://www.rfc-editor.org/rfc/rfc8032#page-30

  //    -----TEST abc
  // 
  //    ALGORITHM:
  //    Ed25519ph
  // 
  //    SECRET KEY:
  //    833fe62409237b9d62ec77587520911e
  //    9a759cec1d19755b7da901b96dca3d42
  // 
  //    PUBLIC KEY:
  //    ec172b93ad5e563bf4932c70e1245034
  //    c35467ef2efd4d64ebf819683467e2bf
  // 
  //    MESSAGE (length 3 bytes):
  //    616263
  // 
  //    SIGNATURE:
  //    98a70222f0b8121aa9d30f813d683f80
  //    9e462b469c7ff87639499bb94e6dae41
  //    31f85042463c2a355a2003d062adf5aa
  //    a10b8c61e636062aaad11c2a26083406

  const privKeyHex = '833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42';
  const pubKeyHex = 'ec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf';

  const privKey = new PrivateKey();
  try {
    privKey.loadEd25519(privKeyHex, pubKeyHex);
  } catch {
    console.log(privKey.lastErrorText);
    return;
  }

  // The data to be signed...
  const bd = new BinData();
  bd.appendEncoded('616263', 'hex');

  const eddsa = new EdDSA();
  // Indicate we want the Ed25519ph instance.
  eddsa.algorithm = 'Ed25519ph';

  const hexSig = eddsa.signBdENC(bd, 'hexlower', privKey);

  console.log(`signature = ${hexSig}`);

  // The expected output is: 98a70222f0b8121aa9d30f813d683f80....

  // Verify the signature..
  const pubKey = new PublicKey();
  try {
    pubKey.loadEd25519(pubKeyHex);
  } catch {
    console.log(pubKey.lastErrorText);
    return;
  }

  try {
    eddsa.verifyBdENC(bd, hexSig, 'hexlower', pubKey);
  } catch {
    console.log(eddsa.lastErrorText);
    console.log('Failed to verify the signature.');
    return;
  }

  console.log('The Ed25519ph signature is verified!');
}