﻿import * as crypto  from 'crypto';

export class AuthenticationProvider {

    public readonly publicKey: string;
    private _privateKey: Buffer;

    constructor(
        publicKey: string,
        privateKey: string,
    ) {
        this.publicKey = publicKey;
        // decode the base64 secret
        this._privateKey = new Buffer(privateKey, 'base64');
    }

    public sign(prehashString: string): string {
        // create a sha256 hmac with the secret
        const hmac = crypto.createHmac('sha256', this._privateKey);

        // hash the prehash string and base64 encode the result
        return hmac.update(prehashString).digest('base64');
    }
}