xref: /aosp_15_r20/prebuilts/misc/common/nimbus-jose-jwt/README.md (revision 847dbab7980efcc7f5706bb9c6d844b91a680afd)
1*847dbab7SAndroid Build Coastguard Worker# Nimbus JOSE + JWT
2*847dbab7SAndroid Build Coastguard Worker
3*847dbab7SAndroid Build Coastguard Worker* The most popular and robust Java library for JSON Web Tokens (JWT)
4*847dbab7SAndroid Build Coastguard Worker* Supports all standard signature (JWS) and encryption (JWE) algorithms
5*847dbab7SAndroid Build Coastguard Worker* Open source Apache 2.0 licence
6*847dbab7SAndroid Build Coastguard Worker
7*847dbab7SAndroid Build Coastguard WorkerCheck out the [library homepage](http://connect2id.com/products/nimbus-jose-jwt)
8*847dbab7SAndroid Build Coastguard Workerfor more info and examples.
9*847dbab7SAndroid Build Coastguard Worker
10*847dbab7SAndroid Build Coastguard Worker
11*847dbab7SAndroid Build Coastguard Worker## Full compact JOSE and JWT support
12*847dbab7SAndroid Build Coastguard Worker
13*847dbab7SAndroid Build Coastguard WorkerCreate, serialise and process compact-encoded:
14*847dbab7SAndroid Build Coastguard Worker
15*847dbab7SAndroid Build Coastguard Worker* Plain (unsecured) JOSE objects
16*847dbab7SAndroid Build Coastguard Worker* JSON Web Signature (JWS) objects
17*847dbab7SAndroid Build Coastguard Worker* JSON Web Encryption (JWE) objects
18*847dbab7SAndroid Build Coastguard Worker* JSON Web Key (JWK) objects and JWK sets
19*847dbab7SAndroid Build Coastguard Worker* Plain, signed and encrypted JSON Web Tokens (JWTs)
20*847dbab7SAndroid Build Coastguard Worker
21*847dbab7SAndroid Build Coastguard WorkerThe less frequently used alternative JSON encoding is on the road map.
22*847dbab7SAndroid Build Coastguard Worker
23*847dbab7SAndroid Build Coastguard Worker
24*847dbab7SAndroid Build Coastguard Worker## Supported JOSE algorithms
25*847dbab7SAndroid Build Coastguard Worker
26*847dbab7SAndroid Build Coastguard WorkerThe library can handle all standard JOSE algorithms:
27*847dbab7SAndroid Build Coastguard Worker
28*847dbab7SAndroid Build Coastguard Worker* HMAC integrity protection: HS256, HS384 and HS512
29*847dbab7SAndroid Build Coastguard Worker* RSASSA-PKCS1-V1_5 signatures: RS256, RS384 and RS512
30*847dbab7SAndroid Build Coastguard Worker* RSASSA-PSS signatures: PS256, PS384 and PS512
31*847dbab7SAndroid Build Coastguard Worker* EC signatures: ES256, ES384 and ES512
32*847dbab7SAndroid Build Coastguard Worker* Key encryption with RSAES-PKCS1-V1_5: RSA1_5 (deprecated)
33*847dbab7SAndroid Build Coastguard Worker* Key encryption with RSAES OAEP: RSA-OAEP and RSA-OAEP-256
34*847dbab7SAndroid Build Coastguard Worker* Key encryption with AES key wrap: A128KW, A192KW and A256KW
35*847dbab7SAndroid Build Coastguard Worker* Key encryption with AES GCM: A128CGMKW, A192CGMKW and A256CGMKW
36*847dbab7SAndroid Build Coastguard Worker* Direct shared symmetric key encryption: dir
37*847dbab7SAndroid Build Coastguard Worker* Key Agreement with Elliptic Curve Diffie-Hellman Ephemeral Static: ECDH-ES,
38*847dbab7SAndroid Build Coastguard Worker  ECDH-ES+A128KW, ECDH-ES+A192KW and ECDH-ES+A256KW
39*847dbab7SAndroid Build Coastguard Worker* Password-based encryption: PBES2-HS256+A128KW, PBES2-HS384+A192KW and
40*847dbab7SAndroid Build Coastguard Worker  PBES2-HS512+A256KW
41*847dbab7SAndroid Build Coastguard Worker* Content encryption with AES_CBC_HMAC_SHA2: A128CBC-HS256, A192CBC-HS384,
42*847dbab7SAndroid Build Coastguard Worker  A256CBC-HS512, the deprecated A128CBC+HS256 and A256CBC+HS512 are also
43*847dbab7SAndroid Build Coastguard Worker  supported
44*847dbab7SAndroid Build Coastguard Worker* Content encryption with AES GCM: A128GCM, A192GCM and A256GCM
45*847dbab7SAndroid Build Coastguard Worker* JWE Compression with DEFLATE.
46*847dbab7SAndroid Build Coastguard Worker
47*847dbab7SAndroid Build Coastguard Worker
48*847dbab7SAndroid Build Coastguard Worker## Supported IETF standards
49*847dbab7SAndroid Build Coastguard Worker
50*847dbab7SAndroid Build Coastguard Worker* RFC 7515 - JSON Web Signature (JWS)
51*847dbab7SAndroid Build Coastguard Worker* RFC 7516 - JSON Web Encryption (JWE)
52*847dbab7SAndroid Build Coastguard Worker* RFC 7517 - JSON Web Key (JWK)
53*847dbab7SAndroid Build Coastguard Worker* RFC 7518 - JSON Web Algorithms (JWA)
54*847dbab7SAndroid Build Coastguard Worker* RFC 7519 - JSON Web Token (JWT)
55*847dbab7SAndroid Build Coastguard Worker* RFC 7520 - Examples of Protecting Content Using JSON Object Signing and
56*847dbab7SAndroid Build Coastguard Worker  Encryption (JOSE)
57*847dbab7SAndroid Build Coastguard Worker* RFC 7165 - Use Cases and Requirements for JSON Object Signing and Encryption
58*847dbab7SAndroid Build Coastguard Worker  (JOSE)
59*847dbab7SAndroid Build Coastguard Worker* RFC 8037 - CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON
60*847dbab7SAndroid Build Coastguard Worker  Object Signing and Encryption (JOSE)
61*847dbab7SAndroid Build Coastguard Worker
62*847dbab7SAndroid Build Coastguard Worker
63*847dbab7SAndroid Build Coastguard Worker## System requirements and dependencies
64*847dbab7SAndroid Build Coastguard Worker
65*847dbab7SAndroid Build Coastguard WorkerThe Nimbus JOSE+JWT library requires Java 7+ and has minimal dependencies.
66*847dbab7SAndroid Build Coastguard Worker
67*847dbab7SAndroid Build Coastguard Worker* JSON Smart for highly efficient parsing and serialisation of JSON.
68*847dbab7SAndroid Build Coastguard Worker* JCIP for concurrency annotations.
69*847dbab7SAndroid Build Coastguard Worker* [optional] BouncyCastle as an alternative JCA provider.
70*847dbab7SAndroid Build Coastguard Worker
71*847dbab7SAndroid Build Coastguard Worker
72*847dbab7SAndroid Build Coastguard WorkerFor Maven add:
73*847dbab7SAndroid Build Coastguard Worker
74*847dbab7SAndroid Build Coastguard Worker```
75*847dbab7SAndroid Build Coastguard Worker<dependency>
76*847dbab7SAndroid Build Coastguard Worker    <groupId>com.nimbusds</groupId>
77*847dbab7SAndroid Build Coastguard Worker    <artifactId>nimbus-jose-jwt</artifactId>
78*847dbab7SAndroid Build Coastguard Worker    <version>[ version ]</version>
79*847dbab7SAndroid Build Coastguard Worker</dependency>
80*847dbab7SAndroid Build Coastguard Worker```
81*847dbab7SAndroid Build Coastguard Worker
82*847dbab7SAndroid Build Coastguard Workerwhere `[ version ]` is the latest stable version.
83*847dbab7SAndroid Build Coastguard Worker
84*847dbab7SAndroid Build Coastguard WorkerTo post bug reports and suggestions:
85*847dbab7SAndroid Build Coastguard Worker
86*847dbab7SAndroid Build Coastguard Worker<https://bitbucket.org/connect2id/nimbus-jose-jwt/issues>
87*847dbab7SAndroid Build Coastguard Worker
88*847dbab7SAndroid Build Coastguard Worker
89*847dbab7SAndroid Build Coastguard WorkerFollow updates and new releases on Twitter:
90*847dbab7SAndroid Build Coastguard Worker
91*847dbab7SAndroid Build Coastguard Worker<https://twitter.com/connect2id>
92*847dbab7SAndroid Build Coastguard Worker
93