Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcJsonStr
LOCAL loJarr
LOCAL loJson
LOCAL loBdPkcs7
LOCAL loCrypt
LOCAL loCert
LOCAL loPubKey
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loHttp = CreateObject('Chilkat.Http')
lcJsonStr = loHttp.QuickGetStr("https://api-acpt.ehealth.fgov.be/etee/v1/etks?identifier=12345678901&type=SSIN")
IF (loHttp.LastMethodSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
CANCEL
ENDIF
? lcJsonStr
* 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.
loJarr = CreateObject('Chilkat.JsonArray')
lnSuccess = loJarr.Load(lcJsonStr)
IF (lnSuccess = 0) THEN
? "Failed to load JSON."
RELEASE loHttp
RELEASE loJarr
CANCEL
ENDIF
loJson = loJarr.ObjectAt(0)
loBdPkcs7 = CreateObject('Chilkat.BinData')
loBdPkcs7.AppendEncoded(loJson.StringOf("value"),"base64")
RELEASE loJson
* Let's verify the PKCS7, and then examine the signing cert,
* and get the signing cert's public key.
loCrypt = CreateObject('Chilkat.Crypt2')
* Validate the signedData PKCS7, and replace the contents of bdPkcs7 with the extracted signed content.
lnSuccess = loCrypt.OpaqueVerifyBd(loBdPkcs7)
IF (lnSuccess = 0) THEN
? loCrypt.LastErrorText
RELEASE loHttp
RELEASE loJarr
RELEASE loBdPkcs7
RELEASE loCrypt
CANCEL
ENDIF
* The signed content is the DER of a certificate.
* In other words, bdPkcs7 now contains a certificate.
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadFromBd(loBdPkcs7)
IF (lnSuccess = 0) THEN
? loCert.LastErrorText
RELEASE loHttp
RELEASE loJarr
RELEASE loBdPkcs7
RELEASE loCrypt
RELEASE loCert
CANCEL
ENDIF
* Show some certificate information:
? "Subject: " + loCert.SubjectDN
? "Serial: " + loCert.SerialNumber
? "Issuer: " + loCert.IssuerDN
* Let's get the cert's public key...
loPubKey = CreateObject('Chilkat.PublicKey')
loCert.GetPublicKey(loPubKey)
* OK, you now have the public key and can do whatever is needed..
? loPubKey.KeyType
? STR(loPubKey.KeySize)
RELEASE loHttp
RELEASE loJarr
RELEASE loBdPkcs7
RELEASE loCrypt
RELEASE loCert
RELEASE loPubKey