...

Text file src/gopkg.in/square/go-jose.v2/README.md

Documentation: gopkg.in/square/go-jose.v2

     1# Go JOSE 
     2
     3[![godoc](http://img.shields.io/badge/godoc-version_1-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1)
     4[![godoc](http://img.shields.io/badge/godoc-version_2-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v2)
     5[![license](http://img.shields.io/badge/license-apache_2.0-blue.svg?style=flat)](https://raw.githubusercontent.com/square/go-jose/master/LICENSE)
     6[![build](https://travis-ci.org/square/go-jose.svg?branch=v2)](https://travis-ci.org/square/go-jose)
     7[![coverage](https://coveralls.io/repos/github/square/go-jose/badge.svg?branch=v2)](https://coveralls.io/r/square/go-jose)
     8
     9Package jose aims to provide an implementation of the Javascript Object Signing
    10and Encryption set of standards. This includes support for JSON Web Encryption,
    11JSON Web Signature, and JSON Web Token standards.
    12
    13**Disclaimer**: This library contains encryption software that is subject to
    14the U.S. Export Administration Regulations. You may not export, re-export,
    15transfer or download this code or any part of it in violation of any United
    16States law, directive or regulation. In particular this software may not be
    17exported or re-exported in any form or on any media to Iran, North Sudan,
    18Syria, Cuba, or North Korea, or to denied persons or entities mentioned on any
    19US maintained blocked list.
    20
    21## Overview
    22
    23The implementation follows the
    24[JSON Web Encryption](http://dx.doi.org/10.17487/RFC7516) (RFC 7516),
    25[JSON Web Signature](http://dx.doi.org/10.17487/RFC7515) (RFC 7515), and
    26[JSON Web Token](http://dx.doi.org/10.17487/RFC7519) (RFC 7519).
    27Tables of supported algorithms are shown below. The library supports both
    28the compact and full serialization formats, and has optional support for
    29multiple recipients. It also comes with a small command-line utility
    30([`jose-util`](https://github.com/square/go-jose/tree/v2/jose-util))
    31for dealing with JOSE messages in a shell.
    32
    33**Note**: We use a forked version of the `encoding/json` package from the Go
    34standard library which uses case-sensitive matching for member names (instead
    35of [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html)).
    36This is to avoid differences in interpretation of messages between go-jose and
    37libraries in other languages.
    38
    39### Versions
    40
    41We use [gopkg.in](https://gopkg.in) for versioning.
    42
    43[Version 2](https://gopkg.in/square/go-jose.v2)
    44([branch](https://github.com/square/go-jose/tree/v2),
    45[doc](https://godoc.org/gopkg.in/square/go-jose.v2)) is the current version:
    46
    47    import "gopkg.in/square/go-jose.v2"
    48
    49The old `v1` branch ([go-jose.v1](https://gopkg.in/square/go-jose.v1)) will
    50still receive backported bug fixes and security fixes, but otherwise
    51development is frozen. All new feature development takes place on the `v2`
    52branch. Version 2 also contains additional sub-packages such as the
    53[jwt](https://godoc.org/gopkg.in/square/go-jose.v2/jwt) implementation
    54contributed by [@shaxbee](https://github.com/shaxbee).
    55
    56### Supported algorithms
    57
    58See below for a table of supported algorithms. Algorithm identifiers match
    59the names in the [JSON Web Algorithms](http://dx.doi.org/10.17487/RFC7518)
    60standard where possible. The Godoc reference has a list of constants.
    61
    62 Key encryption             | Algorithm identifier(s)
    63 :------------------------- | :------------------------------
    64 RSA-PKCS#1v1.5             | RSA1_5
    65 RSA-OAEP                   | RSA-OAEP, RSA-OAEP-256
    66 AES key wrap               | A128KW, A192KW, A256KW
    67 AES-GCM key wrap           | A128GCMKW, A192GCMKW, A256GCMKW
    68 ECDH-ES + AES key wrap     | ECDH-ES+A128KW, ECDH-ES+A192KW, ECDH-ES+A256KW
    69 ECDH-ES (direct)           | ECDH-ES<sup>1</sup>
    70 Direct encryption          | dir<sup>1</sup>
    71
    72<sup>1. Not supported in multi-recipient mode</sup>
    73
    74 Signing / MAC              | Algorithm identifier(s)
    75 :------------------------- | :------------------------------
    76 RSASSA-PKCS#1v1.5          | RS256, RS384, RS512
    77 RSASSA-PSS                 | PS256, PS384, PS512
    78 HMAC                       | HS256, HS384, HS512
    79 ECDSA                      | ES256, ES384, ES512
    80 Ed25519                    | EdDSA<sup>2</sup>
    81
    82<sup>2. Only available in version 2 of the package</sup>
    83
    84 Content encryption         | Algorithm identifier(s)
    85 :------------------------- | :------------------------------
    86 AES-CBC+HMAC               | A128CBC-HS256, A192CBC-HS384, A256CBC-HS512
    87 AES-GCM                    | A128GCM, A192GCM, A256GCM 
    88
    89 Compression                | Algorithm identifiers(s)
    90 :------------------------- | -------------------------------
    91 DEFLATE (RFC 1951)         | DEF
    92
    93### Supported key types
    94
    95See below for a table of supported key types. These are understood by the
    96library, and can be passed to corresponding functions such as `NewEncrypter` or
    97`NewSigner`. Each of these keys can also be wrapped in a JWK if desired, which
    98allows attaching a key id.
    99
   100 Algorithm(s)               | Corresponding types
   101 :------------------------- | -------------------------------
   102 RSA                        | *[rsa.PublicKey](http://golang.org/pkg/crypto/rsa/#PublicKey), *[rsa.PrivateKey](http://golang.org/pkg/crypto/rsa/#PrivateKey)
   103 ECDH, ECDSA                | *[ecdsa.PublicKey](http://golang.org/pkg/crypto/ecdsa/#PublicKey), *[ecdsa.PrivateKey](http://golang.org/pkg/crypto/ecdsa/#PrivateKey)
   104 EdDSA<sup>1</sup>          | [ed25519.PublicKey](https://godoc.org/golang.org/x/crypto/ed25519#PublicKey), [ed25519.PrivateKey](https://godoc.org/golang.org/x/crypto/ed25519#PrivateKey)
   105 AES, HMAC                  | []byte
   106
   107<sup>1. Only available in version 2 of the package</sup>
   108
   109## Examples
   110
   111[![godoc](http://img.shields.io/badge/godoc-version_1-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1)
   112[![godoc](http://img.shields.io/badge/godoc-version_2-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v2)
   113
   114Examples can be found in the Godoc
   115reference for this package. The
   116[`jose-util`](https://github.com/square/go-jose/tree/v2/jose-util)
   117subdirectory also contains a small command-line utility which might be useful
   118as an example.

View as plain text