Sample code for 30+ languages & platforms
PureBasic

Generate an ECDSA Key

See more ECC Examples

Demonstrates how to generate an ECDSA key.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkEcc.pb"
IncludeFile "CkPrng.pb"
IncludeFile "CkPrivateKey.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    ; Create a Fortuna PRNG and seed it with system entropy.
    ; This will be our source of random data for generating the ECC private key.
    fortuna.i = CkPrng::ckCreate()
    If fortuna.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    entropy.s = CkPrng::ckGetEntropy(fortuna,32,"base64")
    success = CkPrng::ckAddEntropy(fortuna,entropy,"base64")

    ecc.i = CkEcc::ckCreate()
    If ecc.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Generate a random ECC private key on the secp256r1 curve.
    ; Chilkat also supports other curves, such as secp384r1, secp521r1, and secp256k1.

    privKey.i = CkPrivateKey::ckCreate()
    If privKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkEcc::ckGenKey(ecc,"secp256r1",fortuna,privKey)
    If success = 0
        Debug CkEcc::ckLastErrorText(ecc)
        CkPrng::ckDispose(fortuna)
        CkEcc::ckDispose(ecc)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

    Debug CkPrivateKey::ckGetXml(privKey)

    ; Save the private key to PKCS8 encrypted PEM
    ; (The private key can be saved in a variety of different formats. See the online reference documentation.)
    success = CkPrivateKey::ckSavePkcs8EncryptedPemFile(privKey,"pemPassword","myPemFiles/eccKey123.pem")
    If success <> 1
        Debug CkPrivateKey::ckLastErrorText(privKey)
    EndIf

    Debug "finished."


    CkPrng::ckDispose(fortuna)
    CkEcc::ckDispose(ecc)
    CkPrivateKey::ckDispose(privKey)


    ProcedureReturn
EndProcedure