DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
String sPrivKeyHex
String sPubKeyHex
Variant vPrivKey
Handle hoPrivKey
Variant vBd
Handle hoBd
Handle hoEddsa
String sHexSig
Variant vPubKey
Handle hoPubKey
Boolean iBVerified
String sTemp1
Move False To iSuccess
// 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
Move "833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42" To sPrivKeyHex
Move "ec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf" To sPubKeyHex
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get ComLoadEd25519 Of hoPrivKey sPrivKeyHex sPubKeyHex To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
// The data to be signed...
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
Get ComAppendEncoded Of hoBd "616263" "hex" To iSuccess
Get Create (RefClass(cComChilkatEdDSA)) To hoEddsa
If (Not(IsComObjectCreated(hoEddsa))) Begin
Send CreateComObject of hoEddsa
End
// Indicate we want the Ed25519ph instance.
Set ComAlgorithm Of hoEddsa To "Ed25519ph"
Get pvComObject of hoBd to vBd
Get pvComObject of hoPrivKey to vPrivKey
Get ComSignBdENC Of hoEddsa vBd "hexlower" vPrivKey To sHexSig
Showln "signature = " sHexSig
// The expected output is: 98a70222f0b8121aa9d30f813d683f80....
// Verify the signature..
Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
If (Not(IsComObjectCreated(hoPubKey))) Begin
Send CreateComObject of hoPubKey
End
Get ComLoadEd25519 Of hoPubKey sPubKeyHex To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPubKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get pvComObject of hoBd to vBd
Get pvComObject of hoPubKey to vPubKey
Get ComVerifyBdENC Of hoEddsa vBd sHexSig "hexlower" vPubKey To iBVerified
If (iBVerified = False) Begin
Get ComLastErrorText Of hoEddsa To sTemp1
Showln sTemp1
Showln "Failed to verify the signature."
Procedure_Return
End
Showln "The Ed25519ph signature is verified!"
End_Procedure