PowerBuilder
PowerBuilder
Get ETK Public Key (api-acpt.ehealth.fgov.be)
See more Belgian eHealth Platform Examples
The following URL returns JSON, which contains a PKCS7 signed data:https://api-acpt.ehealth.fgov.be/etee/v1/etks?identifier=12345678901&type=SSIN
This example extracts the signed data, validates it, and then extracts the public key from the certificate (obtained from signed content in the PKCS7)
Note: The URL above uses "12345678901" which is not valid. You should replace it with a valid number.
Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Http
string ls_JsonStr
oleobject loo_Jarr
oleobject loo_Json
oleobject loo_BdPkcs7
oleobject loo_Crypt
oleobject loo_Cert
oleobject loo_PubKey
li_Success = 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
destroy loo_Http
MessageBox("Error","Connecting to COM object failed")
return
end if
ls_JsonStr = loo_Http.QuickGetStr("https://api-acpt.ehealth.fgov.be/etee/v1/etks?identifier=12345678901&type=SSIN")
if loo_Http.LastMethodSuccess = 0 then
Write-Debug loo_Http.LastErrorText
destroy loo_Http
return
end if
Write-Debug ls_JsonStr
// The JSON contains something like this:
// [
// {
// "key": {
// "applicationIdentifier": "",
// "ssin": "12345678901"
// },
// "value": "MIAGCSq....AAAAAAAA=="
// }
// ]
// Note: The above is a JSON array (not a JSON object)
// It should be loaded into a Chilkat JSON array.
loo_Jarr = create oleobject
li_rc = loo_Jarr.ConnectToNewObject("Chilkat.JsonArray")
li_Success = loo_Jarr.Load(ls_JsonStr)
if li_Success = 0 then
Write-Debug "Failed to load JSON."
destroy loo_Http
destroy loo_Jarr
return
end if
loo_Json = loo_Jarr.ObjectAt(0)
loo_BdPkcs7 = create oleobject
li_rc = loo_BdPkcs7.ConnectToNewObject("Chilkat.BinData")
loo_BdPkcs7.AppendEncoded(loo_Json.StringOf("value"),"base64")
destroy loo_Json
// Let's verify the PKCS7, and then examine the signing cert,
// and get the signing cert's public key.
loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
// Validate the signedData PKCS7, and replace the contents of bdPkcs7 with the extracted signed content.
li_Success = loo_Crypt.OpaqueVerifyBd(loo_BdPkcs7)
if li_Success = 0 then
Write-Debug loo_Crypt.LastErrorText
destroy loo_Http
destroy loo_Jarr
destroy loo_BdPkcs7
destroy loo_Crypt
return
end if
// The signed content is the DER of a certificate.
// In other words, bdPkcs7 now contains a certificate.
loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")
li_Success = loo_Cert.LoadFromBd(loo_BdPkcs7)
if li_Success = 0 then
Write-Debug loo_Cert.LastErrorText
destroy loo_Http
destroy loo_Jarr
destroy loo_BdPkcs7
destroy loo_Crypt
destroy loo_Cert
return
end if
// Show some certificate information:
Write-Debug "Subject: " + loo_Cert.SubjectDN
Write-Debug "Serial: " + loo_Cert.SerialNumber
Write-Debug "Issuer: " + loo_Cert.IssuerDN
// Let's get the cert's public key...
loo_PubKey = create oleobject
li_rc = loo_PubKey.ConnectToNewObject("Chilkat.PublicKey")
loo_Cert.GetPublicKey(loo_PubKey)
// OK, you now have the public key and can do whatever is needed..
Write-Debug loo_PubKey.KeyType
Write-Debug string(loo_PubKey.KeySize)
destroy loo_Http
destroy loo_Jarr
destroy loo_BdPkcs7
destroy loo_Crypt
destroy loo_Cert
destroy loo_PubKey