Sample code for 30+ languages & platforms
PowerShell

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

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

$pem = New-Object Chilkat.Pem

# No password is required.  Pass an empty password string..
$noPassword = ""
$success = $pem.LoadPemFile("qa_data/csr/csr2.pem",$noPassword)
if ($success -ne $true) {
    $($pem.LastErrorText)
    exit
}

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

$asn = New-Object Chilkat.Asn
$success = $asn.LoadEncoded($strBase64,"base64")
if ($success -ne $true) {
    $($asn.LastErrorText)
    exit
}

# Convert the ASN.1 to XML.
$xml = New-Object Chilkat.Xml
$success = $xml.LoadXml($asn.AsnToXml())
$($xml.GetXml())
$("----")

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

# We need the modulus as base64.
$bd = New-Object Chilkat.BinData
$bd.AppendEncoded($strModulusHex,"hex")
$modulus64 = $bd.GetEncoded("base64")
$("modulus64 = " + $modulus64)
$("----")

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

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

# Load the XML into a Chilkat public key object.
$pubkey = New-Object Chilkat.PublicKey
$success = $pubkey.LoadFromString($xmlPubKey.GetXml())
if ($success -ne $true) {
    $($pubkey.LastErrorText)
    exit
}

# Show the public key as PEM.
$preferPkcs1 = $true
$($pubkey.GetPem($preferPkcs1))