@3846masa/http-signature
Version:
Create / Verify HTTP Signatures (https://tools.ietf.org/html/draft-cavage-http-signatures-10)
71 lines • 4.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const SignatureObject_1 = require("./SignatureObject");
function parseSignature(signature) {
const result = {
headers: 'date',
};
const state = {
cursor: 0,
mode: 'key',
currentKey: '',
currentValue: '',
};
for (let idx = 0; idx < signature.length; idx++) {
const char = signature[idx];
switch (state.mode) {
case 'key': {
if (char === '=') {
Object.assign(state, {
mode: 'prevalue',
currentKey: state.currentKey.trim(),
});
}
else {
Object.assign(state, {
currentKey: state.currentKey + char,
});
}
continue;
}
case 'prevalue': {
if (char === '"') {
Object.assign(state, {
mode: 'value',
});
}
continue;
}
case 'value': {
if (char === '"') {
result[state.currentKey] = state.currentValue.trim();
Object.assign(state, {
mode: 'postvalue',
currentKey: '',
currentValue: '',
});
}
else {
Object.assign(state, {
currentValue: state.currentValue + char,
});
}
continue;
}
case 'postvalue': {
if (char === ',') {
Object.assign(state, {
mode: 'key',
});
}
continue;
}
}
}
if (!SignatureObject_1.isValidSignatureObject(result)) {
throw new Error('keyId and signature paramerters should be required.');
}
return result;
}
exports.parseSignature = parseSignature;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VTaWduYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2VTaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBdUY7QUFJdkYsU0FBZ0IsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsT0FBTyxFQUFFLE1BQU07S0FDYyxDQUFDO0lBRWhDLE1BQU0sS0FBSyxHQUFHO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBa0I7UUFDeEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxZQUFZLEVBQUUsRUFBRTtLQUNqQixDQUFDO0lBRUYsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDL0MsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNWLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7d0JBQ25CLElBQUksRUFBRSxVQUFVO3dCQUNoQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7cUJBQ3BDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTt3QkFDbkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSTtxQkFDcEMsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELFNBQVM7YUFDVjtZQUVELEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUNoQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTt3QkFDbkIsSUFBSSxFQUFFLE9BQU87cUJBQ2QsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELFNBQVM7YUFDVjtZQUVELEtBQUssT0FBTyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO3dCQUNuQixJQUFJLEVBQUUsV0FBVzt3QkFDakIsVUFBVSxFQUFFLEVBQUU7d0JBQ2QsWUFBWSxFQUFFLEVBQUU7cUJBQ2pCLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTt3QkFDbkIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSTtxQkFDeEMsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELFNBQVM7YUFDVjtZQUVELEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7d0JBQ25CLElBQUksRUFBRSxLQUFLO3FCQUNaLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxTQUFTO2FBQ1Y7U0FDRjtLQUNGO0lBRUQsSUFBSSxDQUFDLHdDQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztLQUN4RTtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUF2RUQsd0NBdUVDIn0=