Visual FoxPro
Visual FoxPro
Get Public Key from CSR
See more CSR Examples
Demonstrates how to get the public key from a CSR.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loPem
LOCAL lcNoPassword
LOCAL lcStrBase64
LOCAL loAsn
LOCAL loXml
LOCAL lcStrModulusHex
LOCAL loBd
LOCAL lcModulus64
LOCAL loXmlPubKey
LOCAL loPubkey
LOCAL lnPreferPkcs1
lnSuccess = 0
* This requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loPem = CreateObject('Chilkat.Pem')
* No password is required. Pass an empty password string..
lcNoPassword = ""
lnSuccess = loPem.LoadPemFile("qa_data/csr/csr2.pem",lcNoPassword)
IF (lnSuccess <> 1) THEN
? loPem.LastErrorText
RELEASE loPem
CANCEL
ENDIF
lcStrBase64 = loPem.GetEncodedItem("csr","","base64",0)
loAsn = CreateObject('Chilkat.Asn')
lnSuccess = loAsn.LoadEncoded(lcStrBase64,"base64")
IF (lnSuccess <> 1) THEN
? loAsn.LastErrorText
RELEASE loPem
RELEASE loAsn
CANCEL
ENDIF
* Convert the ASN.1 to XML.
loXml = CreateObject('Chilkat.Xml')
lnSuccess = loXml.LoadXml(loAsn.AsnToXml())
? loXml.GetXml()
? "----"
lcStrModulusHex = loXml.GetChildContent("bits")
? "strModulusHex = " + lcStrModulusHex
? "----"
* We need the modulus as base64.
loBd = CreateObject('Chilkat.BinData')
loBd.AppendEncoded(lcStrModulusHex,"hex")
lcModulus64 = loBd.GetEncoded("base64")
? "modulus64 = " + lcModulus64
? "----"
* Build the XML for the public key.
loXmlPubKey = CreateObject('Chilkat.Xml')
loXmlPubKey.Tag = "RSAPublicKey"
loXmlPubKey.UpdateChildContent("Modulus",lcModulus64)
* The RSA exponent will always be decimal 65537 (base64 = AQAB)
loXmlPubKey.UpdateChildContent("Exponent","AQAB")
? "RSA public key as XML:"
? loXmlPubKey.GetXml()
? "----"
* Load the XML into a Chilkat public key object.
loPubkey = CreateObject('Chilkat.PublicKey')
lnSuccess = loPubkey.LoadFromString(loXmlPubKey.GetXml())
IF (lnSuccess <> 1) THEN
? loPubkey.LastErrorText
RELEASE loPem
RELEASE loAsn
RELEASE loXml
RELEASE loBd
RELEASE loXmlPubKey
RELEASE loPubkey
CANCEL
ENDIF
* Show the public key as PEM.
lnPreferPkcs1 = 1
? loPubkey.GetPem(lnPreferPkcs1)
RELEASE loPem
RELEASE loAsn
RELEASE loXml
RELEASE loBd
RELEASE loXmlPubKey
RELEASE loPubkey