rittenhop-dev/versions/5.94.2/node_modules/node-jose/lib/algorithms/index.js
2024-09-23 19:40:12 -04:00

111 lines
2.5 KiB
JavaScript

/*!
* algorithms/index.js - Cryptographic Algorithms Entry Point
*
* Copyright (c) 2015 Cisco Systems, Inc. See LICENSE file.
*/
"use strict";
// setup implementations
var implementations = [
require("./aes-cbc-hmac-sha2.js"),
require("./aes-gcm.js"),
require("./aes-kw.js"),
require("./concat.js"),
require("./dir.js"),
require("./ecdh.js"),
require("./ecdsa.js"),
require("./hkdf.js"),
require("./hmac.js"),
require("./pbes2.js"),
require("./rsaes.js"),
require("./rsassa.js"),
require("./sha.js")
];
var ALGS_DIGEST = {};
var ALGS_DERIVE = {};
var ALGS_SIGN = {},
ALGS_VRFY = {};
var ALGS_ENC = {},
ALGS_DEC = {};
implementations.forEach(function(mod) {
Object.keys(mod).forEach(function(alg) {
var op = mod[alg];
if ("function" === typeof op.encrypt) {
ALGS_ENC[alg] = op.encrypt;
}
if ("function" === typeof op.decrypt) {
ALGS_DEC[alg] = op.decrypt;
}
if ("function" === typeof op.sign) {
ALGS_SIGN[alg] = op.sign;
}
if ("function" === typeof op.verify) {
ALGS_VRFY[alg] = op.verify;
}
if ("function" === typeof op.digest) {
ALGS_DIGEST[alg] = op.digest;
}
if ("function" === typeof op.derive) {
ALGS_DERIVE[alg] = op.derive;
}
});
});
// public API
exports.digest = function(alg, data, props) {
var op = ALGS_DIGEST[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(data, props);
};
exports.derive = function(alg, key, props) {
var op = ALGS_DERIVE[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(key, props);
};
exports.sign = function(alg, key, pdata, props) {
var op = ALGS_SIGN[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(key, pdata, props || {});
};
exports.verify = function(alg, key, pdata, mac, props) {
var op = ALGS_VRFY[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(key, pdata, mac, props || {});
};
exports.encrypt = function(alg, key, pdata, props) {
var op = ALGS_ENC[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(key, pdata, props || {});
};
exports.decrypt = function(alg, key, cdata, props) {
var op = ALGS_DEC[alg];
if (!op) {
return Promise.reject(new Error("unsupported algorithm: " + alg));
}
return op(key, cdata, props || {});
};