ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
LibrarySupported public key import formatsSupported public key export formatsCommitted to supporting JWK as native import/export format?Notes
2
Botan(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
3
Bouncy Castle(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
4
cryptlib(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
5
Crypto++(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
6
Forge(RSA) PEM / DER
(ed25519) PEM / DER / base58-raw-bytes
(curve25519) unsupported
(secp256k1) unsupported
(secp256r1) unsupported
(RSA) PEM / DER
(ed25519) PEM / DER / base58-raw-bytes
(curve25519) unsupported
(secp256k1) unsupported
(secp256r1) unsupported
No plans to support
7
Libgcrypt(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
8
libsodium(RSA) unsupported
(ed25519) raw bytes
(curve25519) raw bytes
(secp256k1) unsupported
(secp256r1) unsupported
(RSA) unsupported
(ed25519) raw bytes
(curve25519) raw bytes
(secp256k1) unsupported
(secp256r1) unsupported
9
tweetNacl(RSA) unsupported
(ed25519) raw bytes
(curve25519) raw bytes
(secp256k1) unsupported
(secp256r1) unsupported
(RSA) unsupported
(ed25519) raw bytes
(curve25519) raw bytes
(secp256k1) unsupported
(secp256r1) unsupported
10
Nettle(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
11
OpenSSL(RSA) PEM DER
(ed25519) PEM DER
(curve25519) PEM DER
(secp256k1) PEM DER
(secp256r1) PEM DER
(RSA) PEM DER
(ed25519) PEM DER
(curve25519) PEM DER
(secp256k1) PEM DER
(secp256r1) PEM DER
No plans to supportConverting JWK to OpenSSL RSA format is non-trivial
12
RSA BSAFECrypto-C Micro Edition(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
13
RSA BSAFECrypto-J(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
14
WebCrypto(RSA) JWK DER
(ed25519) unsuported
(curve25519) unsupported
(secp256k1) unsupported
(secp256r1) JWK DER
(RSA) JWK DER
(ed25519) unsupported
(curve25519) unsupported
(secp256k1) unsupported
(secp256r1) JWK DER
Webcrypto didn't define specific algorithms in the specification, but browsers today unamiously don't support the EC Curves listed. In regards to key format though, the enum of possible formats listed are "raw", "spki", "pkcs8", "jwk".

Should we attempt to start the EC support discussion in the WebCrypto WG?
15
wolfCrypt(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
16
mbed TLS(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
(RSA) ???
(ed25519) ???
(curve25519) ???
(secp256k1) ???
(secp256r1) ???
17
UrsaRSA unsupported
ed25519 raw bytes
curve225519 raw bytes
secp256k1 raw bytes
secp256r1 unsupported
BLS raw bytes
RSA unsupported
ed25519 raw bytes
curve225519 raw bytes
secp256k1 raw bytes
secp256r1 unsupported
BLS raw bytes
No plans to support
18
@panva/joseRSA JWK PEM
ed25519 JWK PEM
curve25519 JWK PEM
secp256k1 JWK PEM
secp256r1 JWK PEM
BLS ??? (unsupported?)
RSA JWK
ed25519 JWK
curve25519 JWK
secp256k1 JWK
secp256r1 JWK
BLS ??? (unsupported?)
https://github.com/panva/jose
now: https://www.npmjs.com/package/jose
Used in OpenID Connect implementations. Limited support for browser based solutions for certain crypto such as secp256k1... Note: It's for Node.js only, not for in-browser.
Supports import of PEM-encoded public/private keys
19
nimbus/joseRSA JWK PEM
ed25519 JWK PEM
curve25519 JWK PEM
secp256k1 JWK PEM
secp256r1 JWK PEM
BLS ???
RSA JWK
ed25519 JWK
curve25519 JWK
secp256k1 JWK
secp256r1 JWK
BLS ???
supports import of PEM-encoded public/private keys
20
Node cryptoRSA PEM/DER
ed25519 PEM/DER
curve25519 unsupported
secp256k1 PEM/DER
secp256r1 PEM/DER
BLS ???
RSA PEM/DER
ed25519 PEM/DER
curve25519 unsupported
secp256k1 PEM/DER
secp256r1 PEM/DER
BLS ???
21
22
23
Helpful Information / Links
24
Comparison of cryptography libraries
https://en.wikipedia.org/wiki/Comparison_of_cryptography_libraries
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100