jose

package
Version: v0.0.0-...-53c5426 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2016 License: Apache-2.0, Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HeaderMediaType    = "typ"
	HeaderKeyAlgorithm = "alg"
	HeaderKeyID        = "kid"
)
View Source
const (
	// Encryption Algorithm Header Parameter Values for JWS
	// See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-6
	AlgHS256 = "HS256"
	AlgHS384 = "HS384"
	AlgHS512 = "HS512"
	AlgRS256 = "RS256"
	AlgRS384 = "RS384"
	AlgRS512 = "RS512"
	AlgES256 = "ES256"
	AlgES384 = "ES384"
	AlgES512 = "ES512"
	AlgPS256 = "PS256"
	AlgPS384 = "PS384"
	AlgPS512 = "PS512"
	AlgNone  = "none"
)
View Source
const (
	// Algorithm Header Parameter Values for JWE
	// See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#section-4.1
	AlgRSA15            = "RSA1_5"
	AlgRSAOAEP          = "RSA-OAEP"
	AlgRSAOAEP256       = "RSA-OAEP-256"
	AlgA128KW           = "A128KW"
	AlgA192KW           = "A192KW"
	AlgA256KW           = "A256KW"
	AlgDir              = "dir"
	AlgECDHES           = "ECDH-ES"
	AlgECDHESA128KW     = "ECDH-ES+A128KW"
	AlgECDHESA192KW     = "ECDH-ES+A192KW"
	AlgECDHESA256KW     = "ECDH-ES+A256KW"
	AlgA128GCMKW        = "A128GCMKW"
	AlgA192GCMKW        = "A192GCMKW"
	AlgA256GCMKW        = "A256GCMKW"
	AlgPBES2HS256A128KW = "PBES2-HS256+A128KW"
	AlgPBES2HS384A192KW = "PBES2-HS384+A192KW"
	AlgPBES2HS512A256KW = "PBES2-HS512+A256KW"
)
View Source
const (
	// Encryption Algorithm Header Parameter Values for JWE
	// See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-22
	EncA128CBCHS256 = "A128CBC-HS256"
	EncA128CBCHS384 = "A128CBC-HS384"
	EncA256CBCHS512 = "A256CBC-HS512"
	EncA128GCM      = "A128GCM"
	EncA192GCM      = "A192GCM"
	EncA256GCM      = "A256GCM"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Claims

type Claims map[string]interface{}

func (Claims) Add

func (c Claims) Add(name string, value interface{})

func (Claims) Float64Claim

func (c Claims) Float64Claim(name string) (float64, bool, error)

func (Claims) Int64Claim

func (c Claims) Int64Claim(name string) (int64, bool, error)

func (Claims) StringClaim

func (c Claims) StringClaim(name string) (string, bool, error)

func (Claims) StringsClaim

func (c Claims) StringsClaim(name string) ([]string, bool, error)

func (Claims) TimeClaim

func (c Claims) TimeClaim(name string) (time.Time, bool, error)

type JOSEHeader

type JOSEHeader map[string]string

func (JOSEHeader) Validate

func (j JOSEHeader) Validate() error

type JWK

type JWK struct {
	ID       string
	Type     string
	Alg      string
	Use      string
	Exponent int
	Modulus  *big.Int
	Secret   []byte
}

JSON Web Key https://tools.ietf.org/html/draft-ietf-jose-json-web-key-36#page-5

func (*JWK) MarshalJSON

func (j *JWK) MarshalJSON() ([]byte, error)

func (*JWK) UnmarshalJSON

func (j *JWK) UnmarshalJSON(data []byte) error

type JWKSet

type JWKSet struct {
	Keys []JWK `json:"keys"`
}

type JWS

type JWS struct {
	RawHeader  string
	Header     JOSEHeader
	RawPayload string
	Payload    []byte
	Signature  []byte
}

func ParseJWS

func ParseJWS(raw string) (JWS, error)

Given a raw encoded JWS token parses it and verifies the structure.

type JWT

type JWT JWS

func NewJWT

func NewJWT(header JOSEHeader, claims Claims) (jwt JWT, err error)

func NewSignedJWT

func NewSignedJWT(claims Claims, s Signer) (*JWT, error)

func ParseJWT

func ParseJWT(token string) (jwt JWT, err error)

func (*JWT) Claims

func (j *JWT) Claims() (Claims, error)

func (*JWT) Data

func (j *JWT) Data() string

Encoded data part of the token which may be signed.

func (*JWT) Encode

func (j *JWT) Encode() string

Full encoded JWT token string in format: header.claims.signature

func (*JWT) KeyID

func (j *JWT) KeyID() (string, bool)

type Signer

type Signer interface {
	Verifier
	Sign(data []byte) (sig []byte, err error)
}

type SignerHMAC

type SignerHMAC struct {
	VerifierHMAC
}

func NewSignerHMAC

func NewSignerHMAC(kid string, secret []byte) *SignerHMAC

func (*SignerHMAC) Sign

func (s *SignerHMAC) Sign(data []byte) ([]byte, error)

type SignerRSA

type SignerRSA struct {
	PrivateKey rsa.PrivateKey
	VerifierRSA
}

func NewSignerRSA

func NewSignerRSA(kid string, key rsa.PrivateKey) *SignerRSA

func (*SignerRSA) Sign

func (s *SignerRSA) Sign(data []byte) ([]byte, error)

type Verifier

type Verifier interface {
	ID() string
	Alg() string
	Verify(sig []byte, data []byte) error
}

func NewVerifier

func NewVerifier(jwk JWK) (Verifier, error)

type VerifierHMAC

type VerifierHMAC struct {
	KeyID  string
	Hash   crypto.Hash
	Secret []byte
}

func NewVerifierHMAC

func NewVerifierHMAC(jwk JWK) (*VerifierHMAC, error)

func (*VerifierHMAC) Alg

func (v *VerifierHMAC) Alg() string

func (*VerifierHMAC) ID

func (v *VerifierHMAC) ID() string

func (*VerifierHMAC) Verify

func (v *VerifierHMAC) Verify(sig []byte, data []byte) error

type VerifierRSA

type VerifierRSA struct {
	KeyID     string
	Hash      crypto.Hash
	PublicKey rsa.PublicKey
}

func NewVerifierRSA

func NewVerifierRSA(jwk JWK) (*VerifierRSA, error)

func (*VerifierRSA) Alg

func (v *VerifierRSA) Alg() string

func (*VerifierRSA) ID

func (v *VerifierRSA) ID() string

func (*VerifierRSA) Verify

func (v *VerifierRSA) Verify(sig []byte, data []byte) error

Jump to

Keyboard shortcuts

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