Tcl
Tcl
Get ECC Private Key in JWK Format (JSON Web Key)
See more ECC Examples
Demonstrates how to get an ECC private 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_privKey.pem" "utf-8"]
if {$success != 1} then {
puts "Failed to load PEM file."
delete_CkStringBuilder $sbPem
exit
}
# Load the PEM into a private key object.
set privKey [new_CkPrivateKey]
set success [CkPrivateKey_LoadPem $privKey [CkStringBuilder_getAsString $sbPem]]
if {$success != 1} then {
puts [CkPrivateKey_lastErrorText $privKey]
delete_CkStringBuilder $sbPem
delete_CkPrivateKey $privKey
exit
}
# Get the private key in JWK format:
set jwk [CkPrivateKey_getJwk $privKey]
# 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 Private Key in JWK format:"
puts [CkJsonObject_emit $json]
# Sample output:
# {
# "kty": "EC",
# "crv": "P-256",
# "x": "oBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxE",
# "y": "vvQyxZkUjJQUPU_0bCy3Pj5qQdfu8jwEfqEeYGZ95CU",
# "d": "EbVzfPnZPxfAyxqEZV05laAoJAl-_6Xt2O4mOB611sM"
# }
#
# 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",
# "d": "EbVzfPnZPxfAyxqEZV05laAoJAl-_6Xt2O4mOB611sM",
# "use": "enc",
# "kid": "123ABC"
# }
delete_CkStringBuilder $sbPem
delete_CkPrivateKey $privKey
delete_CkJsonObject $json