Sample code for 30+ languages & platforms
Visual FoxPro

secp256k1 Key Generation and Keccak-256

See more ECC Examples

Starting in v11.0.0, Chilkat supports both secp256k1 key generation and Keccak-256 directly. These algorithms are typically used for Bitcoin and Ethereum.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loFortuna
LOCAL lcEntropy
LOCAL loEcc
LOCAL loPrivKey
LOCAL loSb
LOCAL loBd

lnSuccess = 0

* This example 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 ECDSA private key.
loFortuna = CreateObject('Chilkat.Prng')
lcEntropy = loFortuna.GetEntropy(32,"base64")
lnSuccess = loFortuna.AddEntropy(lcEntropy,"base64")

loEcc = CreateObject('Chilkat.Ecc')

* Generate a random ECDSA private key on the secp256k1 curve.
loPrivKey = CreateObject('Chilkat.PrivateKey')
lnSuccess = loEcc.GenKey("secp256k1",loFortuna,loPrivKey)
IF (lnSuccess = 0) THEN
    ? loEcc.LastErrorText
    RELEASE loFortuna
    RELEASE loEcc
    RELEASE loPrivKey
    CANCEL
ENDIF

? "Successfully generated a sec256k1 key."

* Show how to compute the Keccak-256 hash in a few ways.
loSb = CreateObject('Chilkat.StringBuilder')
loSb.Append("hello")

? "keccak-256: " + loSb.GetHash("keccak-256","hex_lower","utf-8")

* Output:
* keccak-256: 1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8

* To keccak-256 hash binary data
loBd = CreateObject('Chilkat.BinData')
loBd.AppendEncoded("00010203040506","hex")

? "keccak-256: " + loBd.GetHash("keccak-256","hex_lower")

* Output:
* keccak-256: 801560412425120fa609be232d6fa71c7f64f42aee7977267687dcc0a2f5aa63

RELEASE loFortuna
RELEASE loEcc
RELEASE loPrivKey
RELEASE loSb
RELEASE loBd