Sample code for 30+ languages & platforms
PureBasic

Generate RSA Public/Private Key Pair and Export to PEM

See more RSA Examples

_LANGUAGE_ example code showing how to generate an RSA public/private key pair and export to PEM files.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkPublicKey.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkRsa.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Generate a 2048-bit key.  Chilkat RSA supports
    ; key sizes ranging from 512 bits to 8192 bits.
    privKey.i = CkPrivateKey::ckCreate()
    If privKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkRsa::ckGenKey(rsa,2048,privKey)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkRsa::ckDispose(rsa)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

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

    CkPrivateKey::ckToPublicKey(privKey,pubKey)

    ; Save the private key in PEM format:
    success = CkPrivateKey::ckSavePemFile(privKey,"privateKey.pem")
    If success = 0
        Debug CkPrivateKey::ckLastErrorText(privKey)
        CkRsa::ckDispose(rsa)
        CkPrivateKey::ckDispose(privKey)
        CkPublicKey::ckDispose(pubKey)
        ProcedureReturn
    EndIf

    ; Save the public key in PEM format:
    success = CkPublicKey::ckSavePemFile(pubKey,0,"publicKey.pem")
    If success = 0
        Debug CkPublicKey::ckLastErrorText(pubKey)
        CkRsa::ckDispose(rsa)
        CkPrivateKey::ckDispose(privKey)
        CkPublicKey::ckDispose(pubKey)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkRsa::ckDispose(rsa)
    CkPrivateKey::ckDispose(privKey)
    CkPublicKey::ckDispose(pubKey)


    ProcedureReturn
EndProcedure