Pure Rust implementation of Javascript Object Signing and Encryption (JOSE)

Related tags

Command-line JOSE
Overview

RustCrypto: JOSE Project Chat dependency status

Pure Rust implementation of Javascript Object Signing and Encryption (JOSE)

License

All crates licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You might also like...
Build terminal dashboards using ascii/ansi art and javascript
Build terminal dashboards using ascii/ansi art and javascript

blessed-contrib Build dashboards (or any other application) using ascii/ansi art and javascript. Friendly to terminals, ssh and developers.

Valq - macros for querying and extracting value from structured data by JavaScript-like syntax

valq   valq provides a macro for querying and extracting value from structured data in very concise manner, like the JavaScript syntax. Look & Feel: u

Eslint - Find and fix problems in your JavaScript code.
Eslint - Find and fix problems in your JavaScript code.

ESLint Website | Configuring | Rules | Contributing | Reporting Bugs | Code of Conduct | Twitter | Mailing List | Chat Room ESLint is a tool for ident

Execute Javascript code in the Dioxus, and get the return value ( for Dioxus )

Golde Dioxus Execute Javascript code in the Dioxus, and get the return value. This demo can help use Javascript to calc the + operator formula. use di

Js-macros - Quickly prototype Rust procedural macros using JavaScript or TypeScript!

js-macros Quickly prototype Rust procedural macros using JavaScript or TypeScript! Have you ever thought "this would be a great use case for a procedu

Resolve JavaScript/TypeScript module with Rust

ES Resolve JavaScript/TypeScript module resolution in Rust Installation cargo add es_resolve Get Started use std::path::{Path, PathBuf}; use es_resolv

Demo app duplicated in 5 languages (Go/JavaScript/Python/Ruby/Rust) showing how to go from source code to container image using melange+apko

hello-melange-apko 💫 This repo contains an example app duplicated across 5 languages showing how to: Package source code into APKs using melange Buil

High-performance Javascript color gradient library powered by Rust + WebAssembly

colorgrad-js High-performance Javascript color gradient library powered by Rust + WebAssembly. No dependencies. Faster than d3-scale, chroma-js, culor

🚀 JavaScript driver for ScyllaDB, harnessing Rust's power through napi-rs for top performance. Pre-release stage. 🧪🔧
🚀 JavaScript driver for ScyllaDB, harnessing Rust's power through napi-rs for top performance. Pre-release stage. 🧪🔧

🚀 JavaScript driver for ScyllaDB. Pre-release stage. 🧪🔧 ⚠️ Disclaimer ⚠️ This repository and the associated npm package are currently in a 🐣 pre-r

Comments
  • feat[jose]: add initial dump of code

    feat[jose]: add initial dump of code

    I'm very aware a bunch of stuff needs to change. There are lots of improvements to be made as well. I think I also have to add MIT as a license option. But this code dump represents a somewhat fully featured implementation of JWK and JWS. All tests pass. A few things worthy of note:

    1. Signing and verification is streamed. This is useful for large detached signatures.

    2. There is a manual base64 implementation embedded. This needs to be reconciled with base64ct.

    3. There may be some pain points splitting this into separate crates. Particularly, I'm thinking about foreign trait impls.

    4. There are questions about what to do with shared data types. For example: Thumbprint. Also, should JWS/JWE have a hard dependency on JWK?

    5. I don't currently allow unknown header parameters due to this bug: https://github.com/serde-rs/serde/issues/2200

    As always, your feedback is genuinely welcome. I'm not committed to anything.

    @tarcieri @CBenoit @Erik1000

    opened by npmccallum 16
  • Split off the base64 utilities into a `jose-b64` crate

    Split off the base64 utilities into a `jose-b64` crate

    1. Please focus on reviewing the ENTIRE new crate; not just what appears in the diff. This is the first time this code has gone through a RustCrypto review.

    2. This contains an independent implementation of Base64 from base64ct. One particular focus of this new crate is the ability to stream base64 encoding. This is essential for the streamed signing/verification in the future JWS crate.

    3. The Bytes type is the most commonly used type in this crate besides the codec types. It decodes bytes from a base64 string in serde.

    4. The Secret type is similar to Bytes, but adds additional invariants for secret handling.

    5. The Json type is used for JWS (and JWE in the future). It is for nested JSON.

    6. The Optional type is used to make encoding runtime optional. This is important for the b64 header value in JWS.

    7. The Update trait is useful for implementing streaming in downstream crates. For example, it isn't only used for base64, but also for signing and verification.

    MERGE THIS FIRST: https://github.com/RustCrypto/JOSE/pull/5

    @tarcieri @CBenoit @Erik1000

    opened by npmccallum 9
  • jose-jwk implementation

    jose-jwk implementation

    Depends on the jose-b64 PR (#3). This covers four categories of functionality for jose-jwk:

    1. JSON data types for parsing the RFC-defined data types.
    2. The KeyInfo trait which describes core key functionality (strength and algo support).
    3. Conversions to/from existing RustCrypto key types.
    4. A new abstract RustCrypto Key type (matching the runtime invariants of Jwk).

    MERGE THIS FIRST: #3

    @tarcieri @CBenoit @Erik1000

    opened by npmccallum 1
  • refactor(jwa): move algorithm types into jose-jwa

    refactor(jwa): move algorithm types into jose-jwa

    refactor(jwa): move algorithm types into jose-jwa

    Signed-off-by: Nathaniel McCallum [email protected]

    MERGE THIS FIRST: https://github.com/RustCrypto/JOSE/pull/4

    opened by npmccallum 0
Owner
Rust Crypto
Cryptographic algorithms written in pure Rust
Rust Crypto
My solutions for the 2021 edition of the Advent of Code, using Rust and SOM (Simple Object Machine)

Advent of Code 2021 These are my solutions for the 2021 edition of the Advent of Code. The solutions are all implemented using both Rust and SOM (Simp

Nicolas Polomack 1 Dec 23, 2021
Coffee is a loader for ELF (Executable and Linkable Format) object files written in Rust

Coffee is a loader for ELF (Executable and Linkable Format) object files written in Rust. It provides a mechanism to load and parse ELF files similar to COFFLoader, but specifically designed for ELF files used in Unix-like systems.

Sndav Bai 13 Jun 22, 2023
garbage-collecting on-disk object store, supporting higher level KV stores and databases.

marble Garbage-collecting disk-based object-store. See examples/kv.rs for a minimal key-value store built on top of this. Supports 4 methods: read: de

Komora 215 Dec 30, 2022
Just a simple object renderer, written in under 500 lines using Rust.

All cargoes that the project runs are: bitflags: a crate for defining bitflag types cfg-if: a small macro crate for defining cfg-based - conditional c

null 3 May 4, 2023
Object Notation Programming Language?

You may have questions ONLang - Object Notation Language (jsON) VSCode extension - OnLang 1. God, what the f**** is this ONLang is an experimental, es

Artemy Egorov 7 Aug 29, 2022
Process Injection via Component Object Model (COM) IRundown::DoCallback().

COM PROCESS INJECTION for RUST Process Injection via Component Object Model (COM) IRundown::DoCallback(). 该技术由 @modexpblog 挖掘发现,在我对该技术进行深入研究过程中,将原项目 m

Lane 7 Jan 20, 2023
Save decryption/encryption and transfer utility for Automachef

automachef-save Automachef by HermesInteractive encrypts it's save files with the user's account ID (Steam, Epic) or a static key (GOG, Twitch). The I

null 2 Jul 2, 2022
A simple command line program to upload file or directory to web3.storage with optional encryption and compression

w3s-cli A simple command line program to upload file or directory to web3.storage with optional encryption and compression. Features Uploads single fi

qdwang 5 Oct 22, 2022
Tools - The Rome Toolchain. A linter, compiler, bundler, and more for JavaScript, TypeScript, HTML, Markdown, and CSS.

Rome is currently being rewritten in Rust. Read more about it in our latest blog post. The documentation below is out of date and available for poster

Rome 22k Jan 3, 2023
A Faster(⚡) formatter, linter, bundler, and more for JavaScript, TypeScript, JSON, HTML, Markdown, and CSS Lapce Plugin

Lapce Plugin for Rome Lapce-rome is a Lapce plugin for rome, The Rome is faster ⚡ , A formatter, linter, compiler, bundler, and more for JavaScript, T

xiaoxin 7 Dec 16, 2022