All Projects → blackdoor → jose

blackdoor / jose

Licence: Unlicense License
Extensible JOSE library for Scala

Programming Languages

scala
5932 projects
shell
77523 projects

Projects that are alternatives of or similar to jose

Go Jose
An implementation of JOSE standards (JWE, JWS, JWT) in Go
Stars: ✭ 1,849 (+15308.33%)
Mutual labels:  signing, jose
jwtpp
JSON Object Signing and Encryption library for C++.
Stars: ✭ 57 (+375%)
Mutual labels:  signing, jose
Joseswift
A framework for the JOSE standards JWS, JWE, and JWK written in Swift.
Stars: ✭ 114 (+850%)
Mutual labels:  signing, jose
Jose
JSON Object Signing and Encryption for Node.js and the browser
Stars: ✭ 25 (+108.33%)
Mutual labels:  signing, jose
jose-simple
Jose-Simple allows the encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
Stars: ✭ 50 (+316.67%)
Mutual labels:  signing, jose
Webcrypto
W3C Web Cryptography API for Node.js
Stars: ✭ 79 (+558.33%)
Mutual labels:  signing, jose
Ios Signer Service
✒ A self-hosted, cross-platform service to sign and install iOS apps, all without a computer
Stars: ✭ 200 (+1566.67%)
Mutual labels:  signing
php-jwt
A PHP implementation of JWT (JSON Web Token) generator, parser, verifier, and validator
Stars: ✭ 57 (+375%)
Mutual labels:  jose
Reactnativeauth
Mobile user authentication flow with React Native, Expo, and AWS Amplify: Sign In, Sign Up, Confirm Sign Up, Forget Password, Reset Password.
Stars: ✭ 108 (+800%)
Mutual labels:  signing
Go Alone
A simple to use, high-performance, Go (golang) MAC signer.
Stars: ✭ 82 (+583.33%)
Mutual labels:  signing
libdigidocpp
Libdigidocpp library offers creating, signing and verification of digitally signed documents, according to XAdES and XML-DSIG standards. Documentation http://open-eid.github.io/libdigidocpp
Stars: ✭ 80 (+566.67%)
Mutual labels:  signing
ruby-jose
JSON Object Signing and Encryption (JOSE) for Ruby
Stars: ✭ 49 (+308.33%)
Mutual labels:  jose
bitski-ios
Bitski iOS SDK
Stars: ✭ 18 (+50%)
Mutual labels:  signing
ripple-binary-codec
Convert between json and hex representations of transactions and ledger entries on the XRP Ledger. Moved to: https://github.com/XRPLF/xrpl.js/tree/develop/packages/ripple-binary-codec
Stars: ✭ 18 (+50%)
Mutual labels:  signing
httpsig
Golang implementation of the HTTP Signatures RFC draft, with SSH support!
Stars: ✭ 58 (+383.33%)
Mutual labels:  signing
Portablesigner2
PortableSigner - A Commandline and GUI Tool to digital sign PDF files with X.509 certificates
Stars: ✭ 92 (+666.67%)
Mutual labels:  signing
jwx
JSON/JWK/JWS/JWT/Base64 library in SPARK
Stars: ✭ 15 (+25%)
Mutual labels:  jose
Kryptor
A simple, modern, and secure encryption and signing tool that aims to be a better version of age and Minisign.
Stars: ✭ 267 (+2125%)
Mutual labels:  signing
node-jose-tools
Command line tools for node-jose's features
Stars: ✭ 29 (+141.67%)
Mutual labels:  jose
Apkmod
Apkmod can decompile, recompile, sign APK, and bind the payload with any legit APP
Stars: ✭ 235 (+1858.33%)
Mutual labels:  signing
<script type='module' src="https://cdn.jsdelivr.net/gh/kag0/[email protected]/sauce.js">

If you're reading this, click HERE

</script>

jose

Travis (.com) Scaladoc Maven Central Gitter Matrix

Extensible JOSE library for Scala.

Installation

The dependency is available on Maven Central.

Usage

Pretty simple: make a key, make something to sign, sign it.

<sauce-code repo='blackdoor/jose' lang='scala' file='docs/src/black/door/jose/docs/SampleCode.scala' lines='15:36'

Selecting a JSON implementation

Currently supported JSON libraries:

To add a JSON support, just import or mix in an implementation like import black.door.jose.json.playjson.JsonSupport._.

If your preferred library isn't supported, just implement Mapper implicits (or open an issue to request they be added).

Async key resolution and validation checks

Frequently you will need to dynamically look up a new key from a keyserver based on a JWS header, or check a centralized cache to see if a token has been revoked.
This is easy to do asynchronously by implementing KeyResolver or JwtValidator.
JwtValidator is a partial function so you can easily chain both sync and async validations.
KeyResolver allows you to return an error in the event that there was a specific reason a key could not be found (perhaps a key does exist, but it's only for encryption and this token is using it for signing).

JWT validation DSL

There is a handy compile-safe DSL for JWT validation that allows you to indicate if you want to use unregistered claims, and if you want to evaluate synchronously or asynchronously. Its structure looks like this

Jwt
|__ .validate(compactJwt)
    |__ .using(keyResolver, etc...)
    |   |__ .now   // validates the JWT synchronously
    |   |__ .async // returns the validation result in a Future
    |__ .apply[UnregisteredClaims]
        |__ .using(keyResolver, etc...)
            |__ .now   // validates the JWT synchronously
            |__ .async // returns the validation result in a Future

So for example you could synchronously validate a JWT with some custom claims with

<sauce-code repo='blackdoor/jose' lang='scala' file='docs/src/black/door/jose/docs/SampleCode.scala' lines='64:77'


Not yet implemented:

  • JWK serialization partly implemented
  • JWE
  • RSA signing (RSA signature verification is supported)
  • Less common key sizes for ECDSA
  • Custom JOSE header parameters (custom JWT claims are supported)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].