nz-covid-pass-verifier
Version:
TypeScript implementation of [NZ COVID Pass - Technical Specification v1](https://nzcp.covid19.health.nz/).
48 lines • 3.73 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolvePublicKey = void 0;
const did_resolver_1 = require("did-resolver");
const web_did_resolver_1 = require("web-did-resolver");
const webResolver = (0, web_did_resolver_1.getResolver)();
const didResolver = new did_resolver_1.Resolver(Object.assign({}, webResolver));
function fromJsonWebKey(key) {
return {
crv: key.crv,
kty: key.kty,
k: base64urlToHex(key.k),
d: base64urlToHex(key.d),
x: base64urlToHex(key.x),
y: base64urlToHex(key.y),
};
}
function base64urlToHex(n) {
if (n) {
return Buffer.from(n, "base64url").toString("hex");
}
return undefined;
}
function resolvePublicKey(reference) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const did = yield didResolver.resolve(reference);
if (!((_a = did.didDocument.assertionMethod) === null || _a === void 0 ? void 0 : _a.includes(reference))) {
return undefined;
}
const verificationMethod = did.didDocument.verificationMethod.find((v) => v.id === reference);
if (!verificationMethod || verificationMethod.type !== "JsonWebKey2020") {
return undefined;
}
return fromJsonWebKey(verificationMethod.publicKeyJwk);
});
}
exports.resolvePublicKey = resolvePublicKey;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVB1YmxpY0tleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNvbHZlUHVibGljS2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLCtDQUF3QztBQUN4Qyx1REFBaUU7QUFFakUsTUFBTSxXQUFXLEdBQUcsSUFBQSw4QkFBYyxHQUFFLENBQUM7QUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSx1QkFBUSxtQkFBTSxXQUFXLEVBQUcsQ0FBQztBQUVyRCxTQUFTLGNBQWMsQ0FBQyxHQUFlO0lBQ25DLE9BQU87UUFDSCxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDM0IsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFTO0lBQzdCLElBQUksQ0FBQyxFQUFFO1FBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEQ7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBc0IsZ0JBQWdCLENBQ2xDLFNBQWlCOzs7UUFFakIsTUFBTSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxDQUFBLE1BQUEsR0FBRyxDQUFDLFdBQVcsQ0FBQyxlQUFlLDBDQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxFQUFFO1lBQ3ZELE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDOUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUM1QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtZQUNyRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELE9BQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDOztDQUMxRDtBQWhCRCw0Q0FnQkMifQ==