Sample code for 30+ languages & platforms
Tcl

Load a CSR and Get the SANs (Subject Alternative Names)

See more CSR Examples

Demonstrates how to load a Certificate Signing Request (CSR) and get the Subject Alternative Names (if any).

Note: This example requires Chilkat v9.5.0.91 or greater.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# Note: Requires Chilkat v9.5.0.91 or greater.

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

set csr [new_CkCsr]

# Load a CSR PEM file.  The file should contain content that looks like this:
# 
# -----BEGIN CERTIFICATE REQUEST-----
# MIIDnzCCAocCAQAwgZ4xFDASBgNVBAMMC2V4YW1wbGUuY29tMRQwEgYDVQQHDAtM
# b3MgQW5nZWxlczETMBEGA1UECAwKQ2FsaWZvcm5pYTEUMBIGA1UECgwLRXhhbXBs
# ZSBJbmMxFDASBgNVBAsMC1NTTCBTdXBwb3J0MSIwIAYJKoZIhvcNAQkBFhNleGFt
# cGxlQGV4YW1wbGUuY29tMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQAD
# ggEPADCCAQoCggEBALhIT/q7y1xwpYaR0Coplktwn7RGaJpEBCgbJWxOVPTGL540
# erlhc6MrSEr6fo/HNtAbn6MNWm5F0MwjEU7H1Jxc7DYav+ps3hyhGaK9jalE99Sm
# yFOzKMLDPyWTPpxfT4QBO4rpWxMT2lgixDkZlaNqmC6pUGXArfH+H1F3C0gtH4ZU
# XN/Ipyk6r6ozWnJvIefdMe1JmeMD3RSoVcXd9bNWSpiD4uJnV+2pewkkNzhcGzBH
# MGi4ZjIbpPiYLlri/79fPb6u7wYkYLzCWRKzq6EaJkqY6OQgE33SC1GQKjC/fFRx
# wogub1s9cRjfL6vdqWbTJ5xhOkPeBO3UzHBHIksCAwEAAaCBujCBtwYJKoZIhvcN
# AQkOMYGpMIGmMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsG
# AQUFBwMBBggrBgEFBQcDAjBtBgNVHREEZjBkggtleGFtcGxlLmNvbYIPd3d3LmV4
# YW1wbGUuY29tgg9mdHAuZXhhbXBsZS5jb22CD3N2bi5leGFtcGxlLmNvbYIQc210
# cC5leGFtcGxlLmNvbYIQaW1hcC5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOC
# AQEAsIEDMlZViEVtuQWpfa6vUl5RfqQrop+hh9l4UmEOnERLEzyVO+9Kn7jNxyOR
# Gg7O9H4BYTfet6YwfpawbnQ1HBexduRZaUnET8RiYgKch0vWr/HbP7jvc23XUz2P
# NOAiet/tyTU6U5xJn0H4q1VFIbHjntpBSL+n+aiv8glIUepG8BwTu+vBe2/kVzKG
# ro2tudhbpEJYOwurlHCoubhCah9ryIkDeYEnycsrB6VnaxeGK0/5S2JBQo22/F9s
# T+q0Gee936ISvypLwNoIX+YFAjw2KnqucUM3RKHAAheJin5WNIQXdHHKGsImapun
# VqmPwLN6Kgm+kFVS0H5eyULSnA==
# -----END CERTIFICATE REQUEST-----

set fac [new_CkFileAccess]

set csrPem [CkFileAccess_readEntireTextFile $fac "qa_data/csr/myCsr.pem" "utf-8"]

set success [CkCsr_LoadCsrPem $csr $csrPem]
if {$success != 1} then {
    puts [CkCsr_lastErrorText $csr]
    delete_CkCsr $csr
    delete_CkFileAccess $fac
    exit
}

# Get the SANs
set st [new_CkStringTable]

set success [CkCsr_GetSans $csr $st]
if {$success != 1} then {
    puts [CkCsr_lastErrorText $csr]
    delete_CkCsr $csr
    delete_CkFileAccess $fac
    delete_CkStringTable $st
    exit
}

set i 0
set numSans [CkStringTable_get_Count $st]
while {$i < $numSans} {
    puts [CkStringTable_stringAt $st $i]
    set i [expr $i + 1]
}

delete_CkCsr $csr
delete_CkFileAccess $fac
delete_CkStringTable $st