anchor.diff:  .Example of signing a string using _es256_ (eliptic curve dsa) algorithm.
   [source, clojure]
   ----
  -(require '[buddy.sign.jws :as jws])
   (require '[buddy.core.keys :as keys])
   
   ;; Create keys instances
  
positive.code: |HMAC               | sha256*, sha512   | `:hs256`, `:hs256` | No
  |=====================================================================================
  
  .List of rfcs related JWS/JWT/JWA:
  - http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32
  - http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
  - http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-40
  
  
  === Signing and unsignin data
  
  Due to the nature of the storage format, the input is restricted mainly to json objects
  in the current version.
  
  .Example sign data using JWS
  [source, clojure]
  ----
  (require '[buddy.sign.jws :as jws])
  
  ;; Sign data using default `:hs256` algorithm that does not
  ;; requres special priv/pub key.
  (def data (jws/encode {:userid 1} "secret"))
  
  ;; data will contains omething to
  ;; #<Right [eyJ0eXAiOiJKV1MiLCJhbGciOiJIU...]>
  
  (jws/decode @data "secret")
  ;; => {:userid 1}
  ----
  
  The *encode* and *decode* methods returns a monadic either defined in
  link:https://github/funcool/cats[cats library]. This allows more granural
  error reporting when something wrong is happens in the validation process.
  
  That functions are introduced in *buddy-sign 0.4.0*. Also, the previos
  *sign* and *unsign* functions are conserved for backward compatibility
  and are still returning plain values.
  
  
  === Using Digital Signature algorithms
  
  In order to use any of digital signature algorithms you must have a private/public key.
  If you don't have one, don't worry, it is very easy to generate it using *openssl*, see
  
negative.code: ._on project.clj_
  [source,clojure]
  ----
  [buddy/buddy-sign "0.5.0-SNAPSHOT"]
  ----
  
  
  === Gradle
  
  