Read and write RSA, ECDSA or AES keys as JSON web keys.

read_jwk(file)

write_jwk(x, path = NULL)

Arguments

file

path to file with key data or literal json string

x

an RSA or EC key or pubkey file

path

file path to write output

Examples

# generate an ecdsa key
library(openssl)
key <- ec_keygen("P-521")
write_jwk(key)
#> {"kty":"EC","crv":"P-521","x":"Abk9ARyIOdAe8Jh01e5JxX7nKot7LzcOivuCpLOV51RYuZIobw4kmTpJC3JEJBwhUjDp-rDm9cY8lKmCZmeGWvHY","y":"AXdU4-j1OF5wuCn3oDf7no_ADRWJqSJdLNPOvX8S0fDILuO3060BwMb_wPIJ8U_WdMHCyT5fUyJVKc4_TcfuzPiL","d":"Af97TVL3aMvw0nMW2bN_hbuXdSbwi6yvqtjaB4cu_rYw2LrghE8Lc6Izqa_FkYDHUoK-KhwUQEahEdDa9BLzMVbp"} 
write_jwk(as.list(key)$pubkey)
#> {"kty":"EC","crv":"P-521","x":"Abk9ARyIOdAe8Jh01e5JxX7nKot7LzcOivuCpLOV51RYuZIobw4kmTpJC3JEJBwhUjDp-rDm9cY8lKmCZmeGWvHY","y":"AXdU4-j1OF5wuCn3oDf7no_ADRWJqSJdLNPOvX8S0fDILuO3060BwMb_wPIJ8U_WdMHCyT5fUyJVKc4_TcfuzPiL"} 

# Same for RSA
key <- rsa_keygen()
write_jwk(key)
#> {"e":"AQAB","n":"AM1L3gn3ps6VptMyZLsB-8S-x_wMYtMgYz8r1-W3ljd5VgAxIprOC1NGKuTGuIQpSjfz-Yg31xKXEMhxNg5V0f9N25hxDkru7lQfUvRUxE5fRF22vWhT9wCmybfSkh1ObBQNcTvlfjiH5GG3st0ih0YOcsKpCCL25XrVhW2FSbchJQ6Ql4D5Plqgc2mRB0dcd3VSEt49a_rzoUgwAq-Bznm54Q4vvwjxLN-UTa0VmOTezN9KJw1AUkXjf8Tw12HN_zQ9lupOi64MtLbzEVkh0EbSQpaMxb7yETXJcvEHyOqukA1x9cSu8E610Pp55FIRjdzPm6Gla0994C-yIJ9CjV0","p":"AONTk6h5fCPmyCDExn0IMKYCbGLR6R0UuGkvSlSKKSdYqw51cJRpxrl_vcIW8Xd2FwKgFdbX0oiX7bzkbWEEZZbQXTGT_iPE1xAGWEniNmFFt_J_5p2TVpHkd1r8B2dF7DW8BppEqRwjOZV7u3E4Wvy3DuRpN6scSpANuarAil6T","q":"AOcw7uL7jx0HwE48jvR6Zc_9G48oNGY6UWWkuEGP-2H_ouKUPp4tv2DQ5C0i93ogjswbF8zf8P6kGsjVrkzcXOPYApwii2O7rGpgGN6UMCFEc0O2_TVWZNqzrupLLHZGvBLP6kgZnq2BMUTGG2RgnC9EuSmZjQ4YKlen-qxCj-pP","d":"M2JnZ4BEkJWVhWwqGUKkVTjZTmV9QNHs9W1QYw-B-k2U8IRb4HptDEFWUB_LJE0_ZeTbkrRDUURdb4YinRDu-GNw8OVvSeMm5QhYF461-dXPg1NPcjL98nxMpgV_C_XKiHRa4L6OyrB8wdacXswbJrZMFBwBzNqWUpnqBSEk88BVxZNBgaTmVu1mAP7U_EUBLY3TkLXJ42mpgumxsWsAeB6Pm1jfji3aHcxdRp-pGqOaPMikOLv9B_D2v8pd0o5i9S0khKAt7QXZgjgZ5dIy4WLAbpsXeLVuG4Sx072Wvlh9AlWf2PQ9kccknM83Sq5nTE87K8aa3bhvlP0oPr03cw","dp":"AJsdmWDZXJLm0-JAQyxn3UI53xljIIz-aYMkiLS8_a3ie_5GtoYe00IaXzJEE4ovYy4gbCaIaBlaihddSyFrLaLGFQFSeZSQqSs_GRl5KSAgwY7QJV2afvTYD3VfCfI3LSHRZjP36-jORGmy30k3aiaNBrVm8lxo1pwLMYjJDuHP","dq":"AISP0EoiR_szWJcDrkyMahiKXuUE_panVcjcXDJrpo6YkAMvUYBNZvDSliMza4eBZ5-s4Ua-GWdJHXqO23SC3lheoZB5VkeHcuND2r61ZauNnjHzmNiegxHL-b2qAQKIqIp44TMaTZva-i8fENHLe4K2-xzZSMIOJSlBzkA7ol2N","qi":"SYriWiNULLP9eKJtWxHLl9Vnqrvj4Zth3_7PULXXHJ8gRwR9Ijc7ZIiC0i2BAQM54cV0OPL1Qh5EVcruBtsLrtEyNw9i_pFTKIsLsm5v_JQNXNCaFpeijJIeyYo_WdaYpEylgVmarEOTtjzWeIHsumfhiFE282GFIYqsb-PuXl8","kty":"RSA"} 
write_jwk(as.list(key)$pubkey)
#> {"e":"AQAB","n":"AM1L3gn3ps6VptMyZLsB-8S-x_wMYtMgYz8r1-W3ljd5VgAxIprOC1NGKuTGuIQpSjfz-Yg31xKXEMhxNg5V0f9N25hxDkru7lQfUvRUxE5fRF22vWhT9wCmybfSkh1ObBQNcTvlfjiH5GG3st0ih0YOcsKpCCL25XrVhW2FSbchJQ6Ql4D5Plqgc2mRB0dcd3VSEt49a_rzoUgwAq-Bznm54Q4vvwjxLN-UTa0VmOTezN9KJw1AUkXjf8Tw12HN_zQ9lupOi64MtLbzEVkh0EbSQpaMxb7yETXJcvEHyOqukA1x9cSu8E610Pp55FIRjdzPm6Gla0994C-yIJ9CjV0","kty":"RSA"}