Sample code for 30+ languages & platforms
PureBasic

Load EC Public Key from X,Y Values

See more ECC Examples

Demonstrates how to load an EC public key from X and Y values.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkPublicKey.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; We have the following x and y values in base64 (for an EC point on the P-256 curve).
    x.s = "Dn7uB1O7kgk74G6qfQwFJESeDnxO6lLjGZFWZJE16tw"
    y.s = "iOWA5DInzK6nuUGvHJbMVq1Dpj248FqSV2teN3HzmhU"

    ; Build a JWK that looks like this:

    ; {
    ;   "kty": "EC",
    ;   "crv": "P-256",
    ;   "x": "Dn7uB1O7kgk74G6qfQwFJESeDnxO6lLjGZFWZJE16tw",
    ;   "y": "iOWA5DInzK6nuUGvHJbMVq1Dpj248FqSV2teN3HzmhU"
    ; }

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

    CkJsonObject::ckUpdateString(json,"kty","EC")
    CkJsonObject::ckUpdateString(json,"crv","P-256")
    CkJsonObject::ckUpdateString(json,"x",x)
    CkJsonObject::ckUpdateString(json,"y",y)

    ; Load from the JWK.
    pubkey.i = CkPublicKey::ckCreate()
    If pubkey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkPublicKey::ckLoadFromString(pubkey,CkJsonObject::ckEmit(json))
    If success = 0
        Debug CkPublicKey::ckLastErrorText(pubkey)
        CkJsonObject::ckDispose(json)
        CkPublicKey::ckDispose(pubkey)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkJsonObject::ckDispose(json)
    CkPublicKey::ckDispose(pubkey)


    ProcedureReturn
EndProcedure