A Go implementation of JOSE standards (JWE, JWS, JWT) for secure JSON object signing and encryption.
Go JOSE is a Go library that implements the Javascript Object Signing and Encryption (JOSE) standards, including JSON Web Encryption (JWE), JSON Web Signature (JWS), and JSON Web Token (JWT). It provides a comprehensive toolkit for securely signing, encrypting, and transmitting JSON data, which is fundamental for building authentication systems, API security, and data protection in Go applications.
Go developers building secure applications that require standards-compliant JSON Web Tokens, encrypted data exchange, or digital signatures, such as authentication servers, API gateways, and microservices.
Developers choose Go JOSE for its rigorous implementation of JOSE standards, broad algorithm support, and focus on interoperability, offering a reliable and well-maintained alternative to rolling custom cryptographic solutions for JSON-based security.
An implementation of JOSE standards (JWE, JWS, JWT) in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Covers a wide range of JOSE-standard algorithms including RSA variants, ECDSA, HMAC, AES-GCM, and Ed25519, as detailed in the README's comprehensive tables for encryption, signing, and key types.
Implements JWE, JWS, and JWT RFCs (7516, 7515, 7519) rigorously, ensuring interoperability with other JOSE libraries and reducing security vulnerabilities from non-compliance.
Offers optional support for encrypting data to multiple recipients in a single JOSE message, useful for secure group communications or broadcast scenarios in APIs.
Includes jose-util for shell-based handling of JOSE messages, providing a practical tool for debugging, scripting, and testing without writing Go code.
Uses a forked version of Go's encoding/json for case-sensitive matching, which can lead to compatibility issues with other Go libraries or code expecting standard JSON behavior.
Version 5 is planned with significant API changes and requires Go 1.25 built with GOEXPERIMENT=jsonv2, posing migration challenges and potential disruption for existing projects.
Relies heavily on Godoc references without extensive tutorials or step-by-step guides, making it less accessible for developers new to JOSE concepts or Go cryptography.