@shockpkg/ria-packager
Version:
Package for creating Adobe AIR packages
56 lines (52 loc) • 1.29 kB
JavaScript
import forge from 'node-forge';
import { SecurityKeyPrivate } from "../private.mjs";
/**
* SecurityKeyPrivateRsa object.
*/
export class SecurityKeyPrivateRsa extends SecurityKeyPrivate {
/**
* RSA private key in PEM format.
*/
/**
* SecurityKeyPrivateRsa constructor.
*
* @param privateKey RSA private key in PEM format.
*/
constructor(privateKey) {
super();
this._privateKey = privateKey;
}
/**
* Sign data.
*
* @param data Data to be signed.
* @param digest Digest algorithm.
* @returns The signature.
*/
sign(data, digest) {
const privateKey = forge.pki.privateKeyFromPem(this._privateKey);
digest = digest.toLowerCase();
let md;
switch (digest) {
case 'sha1':
{
md = forge.md.sha1.create();
break;
}
case 'sha256':
{
md = forge.md.sha256.create();
break;
}
default:
{
throw new Error(`Unsupported digest algorithm: ${digest}`);
}
}
// eslint-disable-next-line unicorn/prefer-code-point
md.update(String.fromCharCode(...data));
const signature = privateKey.sign(md, 'RSASSA-PKCS1-V1_5');
return forge.util.binary.raw.decode(signature);
}
}
//# sourceMappingURL=rsa.mjs.map