Sample code for 30+ languages & platforms
Chilkat2-Python

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

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

pem = chilkat2.Pem()

# No password is required.  Pass an empty password string..
noPassword = ""
success = pem.LoadPemFile("qa_data/csr/csr2.pem",noPassword)
if (success != True):
    print(pem.LastErrorText)
    sys.exit()

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

asn = chilkat2.Asn()
success = asn.LoadEncoded(strBase64,"base64")
if (success != True):
    print(asn.LastErrorText)
    sys.exit()

# Convert the ASN.1 to XML.
xml = chilkat2.Xml()
success = xml.LoadXml(asn.AsnToXml())
print(xml.GetXml())
print("----")

strModulusHex = xml.GetChildContent("bits")
print("strModulusHex = " + strModulusHex)
print("----")

# We need the modulus as base64.
bd = chilkat2.BinData()
bd.AppendEncoded(strModulusHex,"hex")
modulus64 = bd.GetEncoded("base64")
print("modulus64 = " + modulus64)
print("----")

# Build the XML for the public key.
xmlPubKey = chilkat2.Xml()
xmlPubKey.Tag = "RSAPublicKey"
xmlPubKey.UpdateChildContent("Modulus",modulus64)
# The RSA exponent will always be decimal 65537 (base64 = AQAB)
xmlPubKey.UpdateChildContent("Exponent","AQAB")

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

# Load the XML into a Chilkat public key object.
pubkey = chilkat2.PublicKey()
success = pubkey.LoadFromString(xmlPubKey.GetXml())
if (success != True):
    print(pubkey.LastErrorText)
    sys.exit()

# Show the public key as PEM.
preferPkcs1 = True
print(pubkey.GetPem(preferPkcs1))