Tcl
Tcl
Get ECC Public Key in JWK Format (JSON Web Key)
See more ECC Examples
Demonstrates how to get an ECC public key in JWK (JSON Web Key) format.Note: This example requires Chilkat v9.5.0.66 or later.
Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Note: This example requires Chilkat v9.5.0.66 or later.
# Load a PEM file into memory.
set sbPem [new_CkStringBuilder]
set success [CkStringBuilder_LoadFile $sbPem "qa_data/pem/ecc_public.pem" "utf-8"]
if {$success != 1} then {
puts "Failed to load PEM file."
delete_CkStringBuilder $sbPem
exit
}
# Load the PEM into a public key object.
set pubKey [new_CkPublicKey]
set success [CkPublicKey_LoadFromString $pubKey [CkStringBuilder_getAsString $sbPem]]
if {$success != 1} then {
puts [CkPublicKey_lastErrorText $pubKey]
delete_CkStringBuilder $sbPem
delete_CkPublicKey $pubKey
exit
}
# Get the public key in JWK format:
set jwk [CkPublicKey_getJwk $pubKey]
# The GetJwk method will return the JWK in the most compact JSON format possible,
# as a single line with no extra whitespace. To get a more human-readable JWK (for this example),
# load into a Chilkat JSON object and emit non-compact:
set json [new_CkJsonObject]
CkJsonObject_Load $json $jwk
CkJsonObject_put_EmitCompact $json 0
puts "ECC Public Key in JWK format:"
puts [CkJsonObject_emit $json]
# Sample output:
# {
# "kty": "EC",
# "crv": "P-256",
# "x": "oBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxE",
# "y": "vvQyxZkUjJQUPU_0bCy3Pj5qQdfu8jwEfqEeYGZ95CU"
# }
#
# Additional information can be added like this:
CkJsonObject_AppendString $json "use" "enc"
CkJsonObject_AppendString $json "kid" "123ABC"
# Now examine the JSON:
puts [CkJsonObject_emit $json]
# {
# "kty": "EC",
# "crv": "P-256",
# "x": "oBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxE",
# "y": "vvQyxZkUjJQUPU_0bCy3Pj5qQdfu8jwEfqEeYGZ95CU",
# "use": "enc",
# "kid": "123ABC"
# }
delete_CkStringBuilder $sbPem
delete_CkPublicKey $pubKey
delete_CkJsonObject $json