VB.NET
VB.NET
Create JWK Set Containing Certificates
See more Certificates Examples
Demonstrates how to create a JWK Set containing N certificates.Chilkat VB.NET Downloads
Dim success As Boolean = False
' This example creates the following JWK Set from two certificates:
' {
' "keys": [
' {
' "kty": "RSA",
' "use": "sig",
' "kid": "BB8CeFVqyaGrGNuehJIiL4dfjzw",
' "x5t": "BB8CeFVqyaGrGNuehJIiL4dfjzw",
' "n": "nYf1jpn7cFdQ...9Iw",
' "e": "AQAB",
' "x5c": [
' "MIIDBTCCAe2...Z+NTZo"
' ]
' },
' {
' "kty": "RSA",
' "use": "sig",
' "kid": "M6pX7RHoraLsprfJeRCjSxuURhc",
' "x5t": "M6pX7RHoraLsprfJeRCjSxuURhc",
' "n": "xHScZMPo8F...EO4QQ",
' "e": "AQAB",
' "x5c": [
' "MIIC8TCCAdmgA...Vt5432GA=="
' ]
' }
' ]
' }
' First get two certificates from files.
Dim cert1 As New Chilkat.Cert
success = cert1.LoadFromFile("qa_data/certs/brasil_cert.pem")
If (success = False) Then
Debug.WriteLine(cert1.LastErrorText)
Exit Sub
End If
Dim cert2 As New Chilkat.Cert
success = cert2.LoadFromFile("qa_data/certs/testCert.cer")
If (success = False) Then
Debug.WriteLine(cert2.LastErrorText)
Exit Sub
End If
' We'll need this crypt object re-encode the SHA1 thumbprint from hex to base64.
Dim crypt As New Chilkat.Crypt2
Dim json As New Chilkat.JsonObject
' Let's begin with the 1st cert:
json.I = 0
json.UpdateString("keys[i].kty","RSA")
json.UpdateString("keys[i].use","sig")
Dim hexThumbprint As String = cert1.Sha1Thumbprint
Dim base64Thumbprint As String = crypt.ReEncode(hexThumbprint,"hex","base64")
json.UpdateString("keys[i].kid",base64Thumbprint)
json.UpdateString("keys[i].x5t",base64Thumbprint)
' (We're assuming these are RSA certificates)
' To get the modulus (n) and exponent (e), we need to get the cert's public key and then get its JWK.
Dim pubKey As New Chilkat.PublicKey
cert1.GetPublicKey(pubKey)
Dim pubKeyJwk As New Chilkat.JsonObject
pubKeyJwk.Load(pubKey.GetJwk())
json.UpdateString("keys[i].n",pubKeyJwk.StringOf("n"))
json.UpdateString("keys[i].e",pubKeyJwk.StringOf("e"))
' Now add the entire X.509 certificate
json.UpdateString("keys[i].x5c[0]",cert1.GetEncoded())
' Now do the same for cert2..
json.I = 1
json.UpdateString("keys[i].kty","RSA")
json.UpdateString("keys[i].use","sig")
hexThumbprint = cert2.Sha1Thumbprint
base64Thumbprint = crypt.ReEncode(hexThumbprint,"hex","base64")
json.UpdateString("keys[i].kid",base64Thumbprint)
json.UpdateString("keys[i].x5t",base64Thumbprint)
cert2.GetPublicKey(pubKey)
pubKeyJwk.Load(pubKey.GetJwk())
json.UpdateString("keys[i].n",pubKeyJwk.StringOf("n"))
json.UpdateString("keys[i].e",pubKeyJwk.StringOf("e"))
' Now add the entire X.509 certificate
json.UpdateString("keys[i].x5c[0]",cert2.GetEncoded())
' Emit the JSON..
json.EmitCompact = False
Debug.WriteLine(json.Emit())