Sample code for 30+ languages & platforms
B4X

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

'  This requires the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

Dim pem As ChilkatPem
pem.Initialize

'  No password is required.  Pass an empty password string..
Dim noPassword As String = ""
success = pem.LoadPemFile("qa_data/csr/csr2.pem", noPassword)
If success <> True Then
    Log(pem.LastErrorText)
    Return
End If


Dim strBase64 As String = pem.GetEncodedItem("csr", "", "base64", 0)

Dim asn As ChilkatAsn
asn.Initialize
success = asn.LoadEncoded(strBase64, "base64")
If success <> True Then
    Log(asn.LastErrorText)
    Return
End If


'  Convert the ASN.1 to XML.
Dim xml As ChilkatXml
xml.Initialize
success = xml.LoadXml(asn.AsnToXml)
Log(xml.GetXml)
Log("----")

Dim strModulusHex As String = xml.GetChildContent("bits")
Log("strModulusHex = " & strModulusHex)
Log("----")

'  We need the modulus as base64.
Dim bd As ChilkatBinData
bd.Initialize
bd.AppendEncoded(strModulusHex, "hex")
Dim modulus64 As String = bd.GetEncoded("base64")
Log("modulus64 = " & modulus64)
Log("----")

'  Build the XML for the public key.
Dim xmlPubKey As ChilkatXml
xmlPubKey.Initialize
xmlPubKey.Tag = "RSAPublicKey"
xmlPubKey.UpdateChildContent("Modulus", modulus64)
'  The RSA exponent will always be decimal 65537 (base64 = AQAB)
xmlPubKey.UpdateChildContent("Exponent", "AQAB")

Log("RSA public key as XML:")
Log(xmlPubKey.GetXml)
Log("----")

'  Load the XML into a Chilkat public key object.
Dim pubkey As ChilkatPublicKey
pubkey.Initialize
success = pubkey.LoadFromString(xmlPubKey.GetXml)
If success <> True Then
    Log(pubkey.LastErrorText)
    Return
End If


'  Show the public key as PEM.
Dim preferPkcs1 As Boolean = True
Log(pubkey.GetPem(preferPkcs1))