anchor.diff:  
   === Encrypting data
   
  -TODO
  +Let start with encrypting data. For it we will use the `encrypt` function from the
  +`buddy.sign.jwe` namespace:
  +
  +[source, clojure]
  +----
  +(require '[buddy.sign.jwe :as jwe])
  +(require '[buddy.core.hash :as hash])
  +
  +;; Hash your secret key with sha256 for
  +;; create a byte array of 32 bytes because
  +;; is a requirement for default content
  +;; encryption algorithm
  +
  +(def secret (hash/sha256 "mysecret"))
  +
  +;; Encrypt it using the previously
  +;; hashed key
  +
  +(jwe/encrypt {:userid 1} secret {:enc :a128-hs256})
  +;; "eyJ0eXAiOiJKV1MiLCJhbGciOiJIU..."
  +----
  +
  +The `encrypt` function, like `sign` from *JWS*, returns a plain string with encrypted and encoded
  +content using a provided algorithm and shared secret key.
   
   
   === Decrypting Data
   
  -TODO
  +The decrypt is a inverse process, that takes encrypted data and the shared key, and returns the
  +plain data. For it, _buddy-sign_ exposes the `decrypt` function. Let see how you can use it:
  +
  +[source, clojure]
  +----
  +(jwe/decrypt incoming-data secret)
  +;; => {:userid 1}
  +----
  +
  +You do not need specify the encryption algorithm explicitly, it is automatically detected, because the
  +incoming token will come with content encryption algorithm stored in its header part.
   
   
   === Claims validation
   
  -TODO
  +
  +_buddy-sign_ json web encryption, like *jws*, also implements validation of a concrete subset
  +of claims related to the age of the signed data: *exp* (expiration time), *nbf* (not before).
  +
  +The validation is performed on decoding the token. If `:exp` claim is found and is posterior to
  +the current date time (UTC) an validation exception will be raised or a failure instance will
  +be returned, depending on that api you are using direct or monadic.
  +
  +Let see an example using direct api:
  +
  +[source, clojure]
  +----
  +(require '[clj-time.core :as time])
  +
  +;; Define claims with `:exp` key
  +(def claims
  +  {:user 1 :exp (time/plus (time/now) (time/seconds 5))})
  +
  +;; Serialize and sign a token with previously defined claims
  +(def token (jwe/encrypt claims secret))
  +
  +;; wait 5 seconds and try unsign it
  +
  +(jwe/decrypt token secret)
  +;; => ExceptionInfo throw+: {:type :validation, :cause :exp, :message "Token is older than :exp (1427836475)"}  buddy.sign.jws/decode/func--4120--auto----4374 (jws.clj:167)
  +----
  +
  +The best way to capture this type of exceptions is using
  +link:https://github.com/scgilardi/slingshot[slingshot] library:
  +
  +[source, clojure]
  +----
  +(require '[slingshot.slingshot :refer [try+]])
  +
  +(try+
  +  (jwe/encrypt token secret)
  +  (catch [:type :validation] e
  +    (println "Error: " (:message e))))
  +;; => Will print in console: "Error: Token is older than :exp (1427836475)"
  +----
   
   
   == Compact message signing
  
positive.code: 
  ;; And unsign
  (def unsigned-data (jws/unsign signed-data ec-pubkey {:alg :es256}))
  ----
  
  
  
negative.code: Digital Signature instead of hmac then you must have a key pair (public and private).
  ====
  
  
  === Signing and unsigning data
  
  With difference with jwt/jws, this implementation is not limited to hash-map like objects,
  