DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
String sAlicePrivKey
String sBobPubKey
Variant vPrivKey
Handle hoPrivKey
Variant vPubKey
Handle hoPubKey
Handle hoEddsa
String sSharedSecret
String sTemp1
Boolean bTemp1
Move False To iSuccess
// 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
Move "77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a" To sAlicePrivKey
Move "de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f" To sBobPubKey
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
// 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.
Get ComLoadEd25519 Of hoPrivKey sAlicePrivKey "" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
If (Not(IsComObjectCreated(hoPubKey))) Begin
Send CreateComObject of hoPubKey
End
Get ComLoadEd25519 Of hoPubKey sBobPubKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPubKey To sTemp1
Showln sTemp1
Procedure_Return
End
// Create the shared secret:
Get Create (RefClass(cComChilkatEdDSA)) To hoEddsa
If (Not(IsComObjectCreated(hoEddsa))) Begin
Send CreateComObject of hoEddsa
End
Get pvComObject of hoPrivKey to vPrivKey
Get pvComObject of hoPubKey to vPubKey
Get ComSharedSecretENC Of hoEddsa vPrivKey vPubKey "hexlower" To sSharedSecret
Get ComLastMethodSuccess Of hoEddsa To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoEddsa To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Computed: " sSharedSecret
Showln "Expected: 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742"
End_Procedure