Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Ed25519ph Sign and VerifyDemonstrates how to create an Ed25519ph signature, and then to verify it. Note: This example requires Chilkat v9.5.0.91 or greater.
IncludeFile "CkBinData.pb" IncludeFile "CkEdDSA.pb" IncludeFile "CkPrivateKey.pb" IncludeFile "CkPublicKey.pb" Procedure 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 privKeyHex.s = "833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42" pubKeyHex.s = "ec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf" privKey.i = CkPrivateKey::ckCreate() If privKey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkPrivateKey::ckLoadEd25519(privKey,privKeyHex,pubKeyHex) If success = 0 Debug CkPrivateKey::ckLastErrorText(privKey) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndIf ; The data to be signed... bd.i = CkBinData::ckCreate() If bd.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkBinData::ckAppendEncoded(bd,"616263","hex") eddsa.i = CkEdDSA::ckCreate() If eddsa.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Indicate we want the Ed25519ph instance. CkEdDSA::setCkAlgorithm(eddsa, "Ed25519ph") hexSig.s = CkEdDSA::ckSignBdENC(eddsa,bd,"hexlower",privKey) Debug "signature = " + hexSig ; The expected output is: 98a70222f0b8121aa9d30f813d683f80.... ; Verify the signature.. pubKey.i = CkPublicKey::ckCreate() If pubKey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkPublicKey::ckLoadEd25519(pubKey,pubKeyHex) If success = 0 Debug CkPublicKey::ckLastErrorText(pubKey) CkPrivateKey::ckDispose(privKey) CkBinData::ckDispose(bd) CkEdDSA::ckDispose(eddsa) CkPublicKey::ckDispose(pubKey) ProcedureReturn EndIf bVerified.i = CkEdDSA::ckVerifyBdENC(eddsa,bd,hexSig,"hexlower",pubKey) If bVerified = 0 Debug CkEdDSA::ckLastErrorText(eddsa) Debug "Failed to verify the signature." CkPrivateKey::ckDispose(privKey) CkBinData::ckDispose(bd) CkEdDSA::ckDispose(eddsa) CkPublicKey::ckDispose(pubKey) ProcedureReturn EndIf Debug "The Ed25519ph signature is verified!" CkPrivateKey::ckDispose(privKey) CkBinData::ckDispose(bd) CkEdDSA::ckDispose(eddsa) CkPublicKey::ckDispose(pubKey) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.