Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

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