@baqhub/sdk
Version:
The official JavaScript SDK for the BAQ federated app platform.
50 lines (49 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpBearerSignature = void 0;
exports.signatureForRequest = signatureForRequest;
const io_js_1 = require("../../helpers/io.js");
const signature_js_1 = require("../../helpers/signature.js");
const string_js_1 = require("../../helpers/string.js");
const credentialsAlgorithm_js_1 = require("../core/credentialsAlgorithm.js");
const httpMethod_js_1 = require("../core/httpMethod.js");
//
// I/O.
//
function signatureToQuery(signature) {
const values = [
signature.id,
signature.timestamp,
io_js_1.base64Bytes.encode(signature.signature),
];
return string_js_1.Str.toUrlBase64(values.join("\\"));
}
//
// Sign.
//
function signatureForRequest(appRecordId, privateKey, input, timestamp) {
const algorithm = credentialsAlgorithm_js_1.CredentialsAlgorithm.ED_25519;
const signatureString = [
"baq.url",
credentialsAlgorithm_js_1.RCredentialsAlgorithm.encode(algorithm),
timestamp,
"",
input.authorizationId || "",
httpMethod_js_1.HttpMethod.GET,
input.pathAndQuery,
input.host,
input.port,
"",
].join("\n");
const signatureBytes = (0, signature_js_1.sign)(privateKey, (0, io_js_1.decode)(io_js_1.utf8Bytes, signatureString));
return {
id: appRecordId,
timestamp,
algorithm,
signature: signatureBytes,
};
}
exports.HttpBearerSignature = {
request: signatureForRequest,
toQuery: signatureToQuery,
};