trusona/trusona-server-sdk-js

View on GitHub
src/http/client/security/HmacSignatureGenerator.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const crypto = require('crypto')

class HmacSignatureGenerator {

  getSignature(hmacMessage, secret) {
    const message = hmacMessage.getHmacMessage()
    const parts = [
      message.method,
      message.bodyDigest,
      message.contentType,
      message.date,
      message.requestUri
    ]

    const valueToDigest = parts.join(`\n`)
    const hash = crypto.createHmac('sha256', secret)
                   .update(valueToDigest)
                   .digest('hex')

    return Buffer.from(hash).toString('base64')
  }
}
module.exports = HmacSignatureGenerator