Read and write RSA, ECDSA or AES keys as JSON web keys.
Examples
# generate an ecdsa key
library(openssl)
key <- ec_keygen("P-521")
write_jwk(key)
#> {"kty":"EC","crv":"P-521","x":"AdmTWvV2XiZA8vKpcU9QnU6q5xhqPyp1_qqlYQVb0YMTW3O4d69UzauZ6NrM25Q3DOvjszjCvVnUJFOvmzDfkWr0","y":"AL39B59n0aZ--MFQzrCeJUIQReheN16pyl-JVRz5lD3cl0L6Tp1PI84SucrFfeeZ4nDrRsc57ZTRuQF7LKF08rbq","d":"AY1cIKQ2TjfAwm42pY0cXVs9mUB__400aEoA-_WiBjX7Yr4ZbfpCAIx0zSMkZ73U3u8BTnQJq9VEV9eUsYdOO-4H"}
write_jwk(as.list(key)$pubkey)
#> {"kty":"EC","crv":"P-521","x":"AdmTWvV2XiZA8vKpcU9QnU6q5xhqPyp1_qqlYQVb0YMTW3O4d69UzauZ6NrM25Q3DOvjszjCvVnUJFOvmzDfkWr0","y":"AL39B59n0aZ--MFQzrCeJUIQReheN16pyl-JVRz5lD3cl0L6Tp1PI84SucrFfeeZ4nDrRsc57ZTRuQF7LKF08rbq"}
# Same for RSA
key <- rsa_keygen()
write_jwk(key)
#> {"e":"AQAB","n":"AJTfdy46-4fT2D223T_KVwAM_4uH-L_eTuXo4TZhZzkVHUa-y9jzlSMIL9hWZAQpvvlwS5Ycy2j3v2Bie55ssPRH1O6W5IYt4gTFH5xxyPvdOYxFK8NzWzBZTs0v5bZym1hmun9o6MqnZ0lkS3eHz0auJBqzB7HS_hmG4qnmXTaWYEgJVxNx4eQ4x4_0RfbBRRZCkyQ4kNzS03S4QFggaTZShXqoaq4seVyyEs2JQLVt_3k-j0AWYMQqy2SSM_ruLeIIOYpx7gHRbf8-q2m9KsgplDoDWPMflR87g24GM3YTDtnm_4gfS9-R4_W-4ceT-ZJ2zQryx-7uGVBR-EIqY_k","p":"AMbQjgdMG_m8nWOX3lA4eT2__G1f7nb-IJNCZRmnNcWnwlWhRKHbvcPWYRh2OsgYM3MxWgizG1V6MkG3iDeYqKpoheGH9Y7Zw-jHZ5cGsq77PBNk-QZdk4yvgIIRBza3cPWsfts5lL06hDWH4oSMeaIhMU3A1hPUDJAHD7Le_-wD","q":"AL-xhKYrX3jzVt2r9xO9-iGZXGrk05sVWNFmOD-0Ikf_hwD0Gc6erqsdKmLd6juOE1wOSovFEfLpNkKOEM-AhYlqnP9c-uHQ9PXL7_JOOu4Naxdvu-C0jNaTNB0ohiK0j0IvURm34tTE64Xbd8D7Zo9aD2fbab_ZSbobaaIqxvVT","d":"RJ1II10ZAA3SDQOirpt2BLZ481jce6YdDBcM8dDrz-Hc5_XZIymFM6u6zYVnvIl3FSU-GTY1RDBnmqdZXXewCS6wQ7T1J6ivEs691o-U-AyK0Q0ycfdRcJPA344zXCcvVQun6kAyhvCoCKn6pGFKVcO-LTYVlk5uQdqqzm63yIfLZVPd8V2f_GGW2i-jr0s31x2MvSCyp9-Z0uWVT62SkXbEj_ZMJJzez37zcoYSJFFGB05iSNA0paf1Op_SoUunl0T6WfG4ELPnqm5RhXDx3nHfXMtObkqAMylStaJ7sAfl4h9BiJVOdLCZrXtEjpGwZ45NN36wWCj9Wp6N_9fRZw","dp":"AKNF0O4DPhJJKMQKi4M77a2dhjNYjiDgsGXfJ-H6ZPmOvNTP3OpD6ML0wsZxCfMblN0sEXGFjZQUB0Pa8p4d254eupwtqKcJBY-ceuEXmhSDtKGE0dG9dZga5SFr1I3F9pl7cK6eyhzg-oRvtMIADz_rnG7rR6P_B9YcRnMyGeB7","dq":"OYK6t1ff5tuqvgqvr_6ZIqduMKvCSI7Y_MncKlCS0GL7T-_sJi85XCD97HeDpKZ1bHLlLpXLUsNhAgq5RGfcqGOSApMUudcFBxFORbXuvCjOblOZXEsOzfmP8weLZrIhIMwtWrful8MUni4_-WfzVyK_6HrNeT9pfSpoQLzwv_0","qi":"ALiCNx6Az6eYX5CSFuH9TGC1TVYDfoTZ6jYeOLXKkhXpvHflubbMHLwuh9lVraRNXqQaoUg3akt_hiCPUl_xk6YjQlV1gf9Of-nzjSMvmStP316ExzTf0DC7qubff9zvsZ_rK7pw-s9ZNy19qHUJaA9rs-zzSa1JJUzM1r-DghDy","kty":"RSA"}
write_jwk(as.list(key)$pubkey)
#> {"e":"AQAB","n":"AJTfdy46-4fT2D223T_KVwAM_4uH-L_eTuXo4TZhZzkVHUa-y9jzlSMIL9hWZAQpvvlwS5Ycy2j3v2Bie55ssPRH1O6W5IYt4gTFH5xxyPvdOYxFK8NzWzBZTs0v5bZym1hmun9o6MqnZ0lkS3eHz0auJBqzB7HS_hmG4qnmXTaWYEgJVxNx4eQ4x4_0RfbBRRZCkyQ4kNzS03S4QFggaTZShXqoaq4seVyyEs2JQLVt_3k-j0AWYMQqy2SSM_ruLeIIOYpx7gHRbf8-q2m9KsgplDoDWPMflR87g24GM3YTDtnm_4gfS9-R4_W-4ceT-ZJ2zQryx-7uGVBR-EIqY_k","kty":"RSA"}