A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Library | Supported public key import formats | Supported public key export formats | Committed 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 support | Converting 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 | Ursa | RSA 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/jose | RSA 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/jose | RSA 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 crypto | RSA 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 |