PureBasic
PureBasic
Generate an Ed25519 Key Pair
See more Ed25519 Examples
Demonstrates how to generate a new Ed25519 public/private key pair.Note: This example requires Chilkat v9.5.0.83 or greater.
Chilkat PureBasic Downloads
IncludeFile "CkEdDSA.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkPrng.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
eddsa.i = CkEdDSA::ckCreate()
If eddsa.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
prng.i = CkPrng::ckCreate()
If prng.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
privKey.i = CkPrivateKey::ckCreate()
If privKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Generates a new eddsa key and stores it in privKey.
success = CkEdDSA::ckGenEd25519Key(eddsa,prng,privKey)
If success = 0
Debug CkEdDSA::ckLastErrorText(eddsa)
CkEdDSA::ckDispose(eddsa)
CkPrng::ckDispose(prng)
CkPrivateKey::ckDispose(privKey)
ProcedureReturn
EndIf
; Examine the ed25519 key in JWK format;
jwk.s = CkPrivateKey::ckGetJwk(privKey)
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoad(json,jwk)
CkJsonObject::setCkEmitCompact(json, 0)
Debug CkJsonObject::ckEmit(json)
; Sample output:
; {
; "kty": "OKP",
; "crv": "Ed25519",
; "x": "SE2Kne5xt51z1eciMH2T2ftDQp96Gl6FhY6zSQujiP0",
; "d": "O-eRXewadF0sNyB0U9omcnt8Qg2ZmeK3WSXPYgqe570",
; "use": "sig"
; }
; In the above JWK, x is the public key, y is the private key.
; Both are 32 bytes and are base64-url encoded.
CkEdDSA::ckDispose(eddsa)
CkPrng::ckDispose(prng)
CkPrivateKey::ckDispose(privKey)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure