DataFlex
DataFlex
Download Google OAuth2 Certs (JWK) and Load into Chilkat PublicKey Objects
See more OAuth2 Examples
Demonstrates how to download the JWK from https://www.googleapis.com/oauth2/v3/certs and load the public keys into Chilkat public key objects.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
String sJwkStr
Handle hoJson
Variant vJsonKey
Handle hoJsonKey
Handle hoPubKey
Integer iNumKeys
Integer i
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get ComQuickGetStr Of hoHttp "https://www.googleapis.com/oauth2/v3/certs" To sJwkStr
Get ComLastMethodSuccess Of hoHttp To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
// We have the following:
// {
// "keys": [
// {
// "kid": "e8732db06287515556213b80acbcfd08cfb302a9",
// "n": "4RIrO30287Wsq3gqXCMkUYMVAeI3H8...w2mbMNEBQ",
// "kty": "RSA",
// "e": "AQAB",
// "alg": "RS256",
// "use": "sig"
// },
// {
// "kid": "8462a71da4f6d611fc0fecf0fc4ba9c37d65e6cd",
// "e": "AQAB",
// "n": "xT_ngLZNmT5GBtJZeTB...Ft4gK0eoFi0d3l8bcw",
// "alg": "RS256",
// "use": "sig",
// "kty": "RSA"
// }
// ]
// }
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoad Of hoJson sJwkStr To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonKey
If (Not(IsComObjectCreated(hoJsonKey))) Begin
Send CreateComObject of hoJsonKey
End
Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
If (Not(IsComObjectCreated(hoPubKey))) Begin
Send CreateComObject of hoPubKey
End
Get ComSizeOfArray Of hoJson "keys" To iNumKeys
Move 0 To i
While (i < iNumKeys)
Set ComI Of hoJson To i
Get pvComObject of hoJsonKey to vJsonKey
Get ComObjectOf2 Of hoJson "keys[i]" vJsonKey To iSuccess
Get ComEmit Of hoJsonKey To sTemp1
Get ComLoadFromString Of hoPubKey sTemp1 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPubKey To sTemp1
Showln sTemp1
Procedure_Return
End
Showln i
Get ComGetPem Of hoPubKey True To sTemp1
Showln sTemp1
Move (i + 1) To i
Loop
Showln "Success."
// Sample output:
// 0
// -----BEGIN RSA PUBLIC KEY-----
// MIIBCgKCAQEA4RIrO30287Wsq3gqXCMkUYMVAeI3H8LVE6IXR1krdFeGnZLiGUPw
// cbkeVpXf3lmJdsStOg+jijces2DZCfPyIBiQuLYfxxmAZE6ErJ0QJFg1stwli2Pz
// 9ncYhFoqi8pXr7kEzEJBTzX4thuw56ydbGsshSEznPXoerCJOc7UI2+n0wFCWQ4Y
// LHbh/PrWt4vdadyUUUW/QpQHXQLdD8q/Qwqdj0O9zlJE7R6Elw2E9EqnHyIGu1hm
// LxhqrTru1M18SUhONYbVskV/BCEdVKs//X96849HorWQDCAgVMWfGsdMVq55FAdJ
// 680N5UmQDRynIZ4+PeNGN4S9iw2mbMNEBQIDAQAB
// -----END RSA PUBLIC KEY-----
//
// 1
// -----BEGIN RSA PUBLIC KEY-----
// MIIBCgKCAQEAxT/ngLZNmT5GBdkLtJZjNeTB+8B5yWgrq/e5eMZ1hrZhcmLK+dSn
// IkpOPV8/OekV67EnQ7I4II2rcNJnHGrGKZziXO3XN2gtUHE+mBJC99oULSbX/QwB
// Kz7gC/IBPq9EuxTt6Oq6fPkVQ9DbRIgWJSEGBF/KRaNl3kyAlIZfpY7XgHyJTTv8
// E7yAcYKPR+36gzdl+ps0sDLKzUuAtZNq8llK0u80z6AtAUIYwWdkEhM9upy6keKI
// TasIxcsO7M6kZPINUSbh6t5VAm8FuqRmxpgg+9c9/GQSGd89InVypoVzWLQ+wOGg
// 5G4H6JqIgtj0TRFt4gK0eoFi2U0d3l8bcwIDAQAB
// -----END RSA PUBLIC KEY-----
//
// Success.
End_Procedure