2018-06-13 15:39:39 -04:00
|
|
|
'use strict';
|
|
|
|
|
2018-06-19 02:12:57 -04:00
|
|
|
import { createHmac } from 'crypto';
|
2018-06-13 15:39:39 -04:00
|
|
|
|
2018-07-16 03:27:49 -04:00
|
|
|
import { arrayify } from './bytes';
|
2018-06-13 15:39:39 -04:00
|
|
|
|
2018-07-30 18:59:52 -04:00
|
|
|
// Imported Types
|
|
|
|
import { Arrayish } from './bytes';
|
2018-06-13 15:39:39 -04:00
|
|
|
|
2018-09-24 15:55:17 -04:00
|
|
|
import * as errors from '../errors';
|
2018-06-22 20:30:50 -04:00
|
|
|
|
2018-08-01 17:33:23 -04:00
|
|
|
export enum SupportedAlgorithms { sha256 = 'sha256', sha512 = 'sha512' };
|
2018-07-30 18:59:52 -04:00
|
|
|
|
2018-06-22 20:30:50 -04:00
|
|
|
export function computeHmac(algorithm: SupportedAlgorithms, key: Arrayish, data: Arrayish): Uint8Array {
|
2018-08-01 17:33:23 -04:00
|
|
|
if (!SupportedAlgorithms[algorithm]) {
|
2018-06-19 02:12:57 -04:00
|
|
|
errors.throwError('unsupported algorithm ' + algorithm, errors.UNSUPPORTED_OPERATION, { operation: 'hmac', algorithm: algorithm });
|
|
|
|
}
|
2018-09-04 10:20:31 -04:00
|
|
|
return arrayify(createHmac(algorithm, Buffer.from(arrayify(key))).update(Buffer.from(arrayify(data))).digest());
|
2018-06-13 15:39:39 -04:00
|
|
|
}
|
|
|
|
|