anchor.diff:  
   === Signing data
   
  -Let start with signing data. For it we will use the `encode` function from `buddy.sign.jws` namespace
  -and the `hs256` algorithm for signining.
  +Let start with signing data. For it we will use the `sign` function from `buddy.sign.jws` namespace:
  +and the `hs256` algorithm for signining:
   
   [source, clojure]
   ----
   (require '[buddy.sign.jws :as jws])
   
  -(jws/encode {:userid 1} "secret")
  -;; => #<Success [eyJ0eXAiOiJKV1MiLCJhbGciOiJIU...]>
  -----
  -
  -The `encode` function may return an instance of `Success` type or instance of `Failure` of
  -_Exception_ monad defined in cats library. Do not worry if you do not know or do not want to know
  -about monads, you can treat that return value like a dereferenciable wrapper.
  -
  -Example on how you can deref a success instance:
  -
  -[source, clojure]
  -----
  -@(jws/encode {:userid 1} "secret")
  -;; "eyJ0eXAiOiJKV1MiLCJhbGciOiJIU..."
  -----
  -
  -Additionally, _buddy-sign_ exposes the `sign` function that do the deref operation for you:
  -
  -[source, clojure]
  -----
   (jws/sign {:userid 1} "secret")
   ;; "eyJ0eXAiOiJKV1MiLCJhbGciOiJIU..."
   ----
   
  -Due to the nature of the storage format, the input is restricted mainly to json objects in the current
  -version.
  +The `sign` function return a encoded and signed token as plain `String` instance or an exception in
  +case of something goes wrong. As you can observe, no algorithm is passed as parameter.
  +In this situations the default one will be used, and in this case is `:hs256`.
  +
  +NOTE: Due to the nature of the storage format, the input is restricted mainly to json objects in the current version.
   
   
   === Unsigning data
   
  -It's time to unsing data. For it we will use the `decode` function from `buddy.sign.jws` namespace. In
  -this case we do not need pass any algorithm because it automatically detected.
  -
  -[source, clojure]
  -----
  -(jws/decode data "secret")
  -;; => #<Success [{:userid 1}]>
  -----
  -
  -Additionally, _buddy-sign_ exposes the `unsign` function that do the deref operation for you:
  +It's time to unsing data. That process consists on verify the signature of incoming data and return the
  +plain data (without signature). For it we will use the `unsign` function from `buddy.sign.jws`
  +namespace:
   
   [source, clojure]
   ----
  
positive.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,
  
negative.code: 
  ;; And unsign
  (def unsigned-data (jws/unsign signed-data ec-pubkey {:alg :es256}))
  ----
  
  
  === Monadic api
  
  If you are using monadic composition with cats library you're in luck, because _buddy-sign_ also
  offers monadic api. You can use it with `encode` and `decode` functions, that return the _Exception_
  monad types: the `Success` instances when everything goes ok, and the `Failure` instances when
  something goes wrong.
  
  [source, clojure]
  ----
  (jws/encode {:userid 1} "secret")
  ;; => #<Success [eyJ0eXAiOiJKV1MiLCJhbGciOiJIU...]>
  ----
  
  The _Exception_ monad instances, for convenience implements the clojure `IDeref` interface that
  makes they play well with `@something` syntax for extract value from them:
  
  [source, clojure]
  ----
  @(jws/encode {:userid 1} "secret")
  ;; "eyJ0eXAiOiJKV1MiLCJhbGciOiJIU..."
  ----
  
  
  