Sample code for 30+ languages & platforms
PureBasic

Load RSA Public Key from Hex Modulus and Exponent

See more RSA Examples

Load an RSA public key from a hex modulus and exponent.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkXml.pb"
IncludeFile "CkPublicKey.pb"

Procedure ChilkatExample()

    success.i = 0

    ; Load a 128-byte (1024-bit) modulus + exponent into a Chilkat public key object..
    modulus.s = "BF5F4AF9A018B5F324A0C10448C0D3248D9BE78967FDC551A27876AC5789ADCBA8245D3D942AE3799563D895DA801E765D225A54FA15DAB2C4731DD817DCF94A9AD62197074C2349442093A206234BF3747F0E88AA6F538355684CC1FB26FCE029C9050A1DAF9F507C2BABF6EFC9FB16320C8036721BE0279FBB76122C41E429"

    exponent.s = "00000003"

    ; We'll need to re-encode from hex to base64..
    bdModulus.i = CkBinData::ckCreate()
    If bdModulus.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkBinData::ckAppendEncoded(bdModulus,modulus,"hex")
    bdExponent.i = CkBinData::ckCreate()
    If bdExponent.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkBinData::ckAppendEncoded(bdExponent,exponent,"hex")

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

    CkXml::setCkTag(xml, "RsaKeyValue")
    CkXml::ckNewChild2(xml,"Modulus",CkBinData::ckGetEncoded(bdModulus,"base64"))
    CkXml::ckNewChild2(xml,"Exponent",CkBinData::ckGetEncoded(bdExponent,"base64"))

    ; Now load into the pubkey object..
    pubkey.i = CkPublicKey::ckCreate()
    If pubkey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkPublicKey::ckLoadFromString(pubkey,CkXml::ckGetXml(xml))
    If success = 0
        Debug CkPublicKey::ckLastErrorText(pubkey)
        CkBinData::ckDispose(bdModulus)
        CkBinData::ckDispose(bdExponent)
        CkXml::ckDispose(xml)
        CkPublicKey::ckDispose(pubkey)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkBinData::ckDispose(bdModulus)
    CkBinData::ckDispose(bdExponent)
    CkXml::ckDispose(xml)
    CkPublicKey::ckDispose(pubkey)


    ProcedureReturn
EndProcedure