def headers
      {
        X_OPS_SIGN         => SIGNATURE,
        X_OPS_USERID       => @user,
        X_OPS_TIMESTAMP    => canonical_timestamp,
        X_OPS_CONTENT_HASH => content_hash,
      }.merge(signature_lines)
    end
def headers
      {
        X_OPS_SIGN         => SIGNATURE,
        X_OPS_USERID       => @user,
        X_OPS_TIMESTAMP    => canonical_timestamp,
        X_OPS_CONTENT_HASH => content_hash,
      }.merge(signature_lines)
    end
Create a new Authentication object for signing. Creating an instance will
 not run any validations or perform any operations (this is on purpose).

 @param [String] user
   the username/client/user of the user to sign the request. In Hosted
   Chef land, this is your "client". In Supermarket land, this is your
   "username".
 @param [String, OpenSSL::PKey::RSA] key
   the path to a private key on disk, the raw private key (as a String),
   or the raw private key (as an OpenSSL::PKey::RSA instance)
 @param [Symbol, String] verb
   the verb for the request (e.g. +:get+)
 @param [String] path
   the "path" part of the URI (e.g. +/path/to/resource+)
 @param [String, IO] body
   the body to sign for the request, as a raw string or an IO object to be
   read in chunks


 The fully-qualified headers for this authentication object of the form:

   {
     'X-Ops-Sign'            => 'algorithm=sha1;version=1.1',
     'X-Ops-Userid'          => 'sethvargo',
     'X-Ops-Timestamp'       => '2014-07-07T02:17:15Z',
     'X-Ops-Content-Hash'    => '...',
     'x-Ops-Authorization-1' => '...'
     'x-Ops-Authorization-2' => '...'
     'x-Ops-Authorization-3' => '...'
     # ...
   }

 @return [Hash]
   the signing headers