51 lines
1003 B
JavaScript
51 lines
1003 B
JavaScript
/*!
|
|
* parse/compact.js - JOSE Compact Serialization Parser
|
|
*
|
|
* Copyright (c) 2015 Cisco Systems, Inc. See LICENSE file.
|
|
*/
|
|
"use strict";
|
|
|
|
var jose = {
|
|
JWE: require("../jwe"),
|
|
JWS: require("../jws"),
|
|
util: require("../util")
|
|
};
|
|
|
|
function parseCompact(input) {
|
|
var parts = input.split(".");
|
|
|
|
var type,
|
|
op;
|
|
if (3 === parts.length) {
|
|
// JWS
|
|
type = "JWS";
|
|
op = function(ks, opts) {
|
|
return jose.JWS.createVerify(ks).
|
|
verify(input, opts);
|
|
};
|
|
} else if (5 === parts.length) {
|
|
// JWE
|
|
type = "JWE";
|
|
op = function(ks, opts) {
|
|
return jose.JWE.createDecrypt(ks).
|
|
decrypt(input, opts);
|
|
};
|
|
} else {
|
|
throw new TypeError("invalid jose serialization");
|
|
}
|
|
|
|
// parse header
|
|
var header;
|
|
header = jose.util.base64url.decode(parts[0], "utf8");
|
|
header = JSON.parse(header);
|
|
return {
|
|
type: type,
|
|
format: "compact",
|
|
input: input,
|
|
header: header,
|
|
perform: op
|
|
};
|
|
}
|
|
|
|
module.exports = parseCompact;
|