code: function computeBodyHash (body, algorithm, digestEncoding, contentType, callback) {
      if (!(body && algorithm && digestEncoding) || body.isEmpty()) { return callback(); }
  
      var hash = crypto.createHash(algorithm),
          originalReadStream,
          urlencodedBody;
  
      hash.update('hawk.1.payload\n');
      hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n');
  
      if (body.mode === RequestBody.MODES.raw) {
          hash.update(body.toString());
          hash.update('\n');
  
          return callback(hash.digest(digestEncoding));
      }
  
      if (body.mode === RequestBody.MODES.urlencoded) {
          urlencodedBody = urlencodedBodyBuilder(body.urlencoded).form;
          urlencodedBody = querystring.stringify(urlencodedBody);
          urlencodedBody = rfc3986(urlencodedBody);
          hash.update(urlencodedBody);
          hash.update('\n');
  
          return callback(hash.digest(digestEncoding));
      }
  
      if (body.mode === RequestBody.MODES.formdata) {
          // @todo: Figure out a way to calculate hash for this body mode. For now we take empty string as body.
          hash.update('');
          hash.update('\n');
  
          return callback();
      }
  
      if (body.mode === RequestBody.MODES.file) {
          originalReadStream = _.get(body, 'file.content');
  
          if (!originalReadStream) {
              return callback();
          }
  
          originalReadStream.cloneReadStream(function (err, clonedStream) {
              if (err) { return callback(); }
  
              clonedStream.on('data', function (chunk) {
                  hash.update(chunk);
              });
  
              clonedStream.on('end', function () {
                  hash.update('\n');
                  callback(hash.digest(digestEncoding));
              });
          });
      }
  }
docs: Calculates body hash with given algorithm and digestEncoding.
  REFER: https://github.com/postmanlabs/postman-request/blob/master/lib/hawk.js#L12
  
  @param {RequestBody} body
  @param {String} algorithm
  @param {String} digestEncoding
  @param {String} contentType
  @param {Function} callback