jose

module
v0.0.0-...-ccd4941 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2023 License: MPL-2.0

README

JOSE Go Reference Go Report Card

JavaScript Object Signing and Encryption (JOSE) implemented in Go.

Installation

$ go get github.com/picatz/jose@latest

Example Usage

raw := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6InBpY2F0eiIsImlhdCI6MTUxNjIzOTAyMn0.UOXSwO9AAuqSpOCt-PDjMmek7SmKOR7v35rmMzeyYfM" 

token, _ := jwt.ParseAndVerify(raw, jwt.WithKey("supersecret"))

sub, _ := token.Claims.Get(jwt.Subject)
iat, _ := token.Claims.Get(jwt.IssuedAt)
name, _ := token.Claims.Get("name")
const (
	symmetricKeyID = "test"
	symmetricKey   = "supersecret"
)

token, _ := jwt.New(
	header.Parameters{
		header.Type:      jwt.Type,
		header.Algorithm: jwa.HS256,
	}, jwt.ClaimsSet{
		jwt.Subject:           "1234567890",
		jwk.KeyID:             symmetricKeyID,
		jwt.ClaimName("name"): "John Doe",
	},
	symmetricKey,
)

_, err := jwt.ParseAndVerify(token.String(), jwt.WithIdentifiableKey(symmetricKeyID, symmetricKey))
token := &jwt.Token{
	Header: jws.Header{
		header.Type:      jwt.Type,
		header.Algorithm: jwa.HS256,
	},
	Claims: jwt.ClaimsSet{
		jwt.Subject:  "1234567890",
		jwt.Issuer:   "test",
		jwt.IssuedAt: time.Now(),
	},
}

signature, err := token.Sign("supersecret")

fmt.Println(token)
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9Cg.eyJpYXQiOiIyMDIyLTAyLTE3VDAxOjI5OjQyLjkwMzAzMTY3NFoiLCJpc3MiOiJ0ZXN0Iiwic3ViIjoiMTIzNDU2Nzg5MCJ9Cg.hV13TckmXoXIL1-7gUhZNFvDgGJe7y5EVKpWzmWlvx0
token, _ := jwt.ParseString("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6InBpY2F0eiIsImlhdCI6MTUxNjIzOTAyMn0.UOXSwO9AAuqSpOCt-PDjMmek7SmKOR7v35rmMzeyYfM")

err := token.VerifySignature(ecdsaPublicKey)
token, _ := jwt.ParseString("eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.FhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg")

err := token.VerifySignature(rsaPublicKey)

RFCs

History

JOSE was developed by an IETF working group, started in 2011. The group set out to develop a JSON syntax that could be used by applications to describe "secure data objects". It has become a well known, standardized mechanism for integrity protection and encryption, as well as the format for keys and algorithm identifiers to support interoperability of security services for protocols that use JSON.

Directories

Path Synopsis
examples
pkg
Package jose implements JavaScript Object Signing and Encryption (JOSE) related functionality.
Package jose implements JavaScript Object Signing and Encryption (JOSE) related functionality.
base64
Package base64 provides a package for base64 encoding and decoding using the URL encoding defined in RFC 4648 (Section 5).
Package base64 provides a package for base64 encoding and decoding using the URL encoding defined in RFC 4648 (Section 5).
header
Package header provides a package for JWS and JWE headers as described in RFC 7515 and RFC 7516.
Package header provides a package for JWS and JWE headers as described in RFC 7515 and RFC 7516.
jwa
Package jwa implements JWA (JSON Web Algorithms) as defined in RFC 7518.
Package jwa implements JWA (JSON Web Algorithms) as defined in RFC 7518.
jwe
Package jwe implements JSON Web Enryption (JWE) functionality as defined in RFC 7516.
Package jwe implements JSON Web Enryption (JWE) functionality as defined in RFC 7516.
jwk
Package jwk implements JWK functionality as defined in RFC 7517.
Package jwk implements JWK functionality as defined in RFC 7517.
jwk/thumbprint
Package thumbprint provides a simple and easy-to-use interface for working with JSON Web Key (JWK) Thumbprints as defined by RFC 7638.
Package thumbprint provides a simple and easy-to-use interface for working with JSON Web Key (JWK) Thumbprints as defined by RFC 7638.
jws
Package jws implements JSON Web Signature (JWS) functionality as defined in RFC 7515.
Package jws implements JSON Web Signature (JWS) functionality as defined in RFC 7515.
jwt
Package jwt provides a simple and easy-to-use interface for working with JSON Web Tokens (JWTs) as defined by RFC 7519.
Package jwt provides a simple and easy-to-use interface for working with JSON Web Tokens (JWTs) as defined by RFC 7519.
keyutil
Package keyutil provides utility functions for dealing with keys used by the JOSE package for JWT, JWS, JWE, and JWK.
Package keyutil provides utility functions for dealing with keys used by the JOSE package for JWT, JWS, JWE, and JWK.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL