PureBasic
PureBasic
Add Private Key and Certificate to a PEM
See more PEM Examples
Demonstrates how to add certificates and private keys to a PEM.Chilkat PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkPem.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; The Chilkat PEM class was introduced in v9.5.0.49.
; It requires the bundle to be unlocked, as shown above.
pem.i = CkPem::ckCreate()
If pem.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Add the private key found in alice.key to this PEM.
;
privKey.i = CkPrivateKey::ckCreate()
If privKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkPrivateKey::ckLoadAnyFormatFile(privKey,"qa_data/alice.key","")
If success <> 1
Debug CkPrivateKey::ckLastErrorText(privKey)
CkPem::ckDispose(pem)
CkPrivateKey::ckDispose(privKey)
ProcedureReturn
EndIf
; Add it to the PEM:
success = CkPem::ckAddPrivateKey(pem,privKey)
; Add the certificate found in alice.crt to this PEM.
;
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert,"qa_data/alice.crt")
If success <> 1
Debug CkCert::ckLastErrorText(cert)
CkPem::ckDispose(pem)
CkPrivateKey::ckDispose(privKey)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
; Add it to the PEM:
includeCertChain.i = 0
success = CkPem::ckAddCert(pem,cert,includeCertChain)
; Write the PEM containing the private key and certificate.
; The private key will be output in PKCS8 encrypted form.
; Certificates are never encrypted.
; This is the password that will be required to open and access the private key
; from the PEM we're about to write..
password.s = "secret"
extendedAttrs.i = 0
noKeys.i = 0
noCerts.i = 0
noCaCerts.i = 0
encryptAlg.s = "aes128"
pemStr.s = CkPem::ckToPemEx(pem,extendedAttrs,noKeys,noCerts,noCaCerts,encryptAlg,password)
Debug pemStr
CkPem::ckDispose(pem)
CkPrivateKey::ckDispose(privKey)
CkCert::ckDispose(cert)
ProcedureReturn
EndProcedure