Sample code for 30+ languages & platforms
Tcl

Iterate Keys and Certs in PEM

See more PEM Examples

Demonstrates how to access each of the private keys and certs contained within a PEM.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set pem [new_CkPem]

# Load the PEM from a file.
# If the PEM is encrypted, provide a password.  Otherwise pass an empty string for the password.
set password "myPassword"
set success [CkPem_LoadPemFile $pem "../myPemFiles/myPem.pem" $password]
if {$success == 0} then {
    puts [CkPem_lastErrorText $pem]
    delete_CkPem $pem
    exit
}

# Note: If the app already has the PEM pre-loaded in a string variable, then load it 
# by calling LoadPem instead.  
set pemContent "... the PEM contents ..."
set success [CkPem_LoadPem $pem $pemContent $password]
# Check for success as before..

# Iterate over the private keys.
set numPrivateKeys [CkPem_get_NumPrivateKeys $pem]
set i 0

set privKey [new_CkPrivateKey]

while {$i < $numPrivateKeys} {
    CkPem_PrivateKeyAt $pem $i $privKey
    puts "Private Key $i is [CkPrivateKey_get_BitLength $privKey] in length"
    set i [expr $i + 1]
}

# Iterate over the certificates.
set cert [new_CkCert]

set numCerts [CkPem_get_NumCerts $pem]
set i 0
while {$i < $numCerts} {
    CkPem_CertAt $pem $i $cert
    puts "Certificate $i : [CkCert_subjectDN $cert]"
    set i [expr $i + 1]
}

delete_CkPem $pem
delete_CkPrivateKey $privKey
delete_CkCert $cert