Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 90x 90x 90x 90x 88x 88x 90x 37x 31x 31x 88x 88x 6x 6x 2x 33x 4x 4x | import { dateToUnixTimestamp } from '../../../helpers/date';
import { Key, VerifierError } from '../../../models';
import { getText } from '../../i18n/useCases';
import type { NullableNumber } from '../../../models/helpers';
import type { Issuer, IssuerPublicKeyList } from '../../../models/Issuer';
function createKeyObject (rawKeyObject, finalPublicKey = null): Key {
const created: NullableNumber = rawKeyObject.created ? dateToUnixTimestamp(rawKeyObject.created) : null;
const revoked: NullableNumber = rawKeyObject.revoked ? dateToUnixTimestamp(rawKeyObject.revoked) : null;
const expires: NullableNumber = rawKeyObject.expires ? dateToUnixTimestamp(rawKeyObject.expires) : null;
// backcompat for v2 alpha
let publicKey: string = finalPublicKey;
if (!finalPublicKey) {
const publicKeyTemp: string = rawKeyObject.id || rawKeyObject.publicKey;
publicKey = publicKeyTemp.replace('ecdsa-koblitz-pubkey:', '');
}
return new Key(publicKey, created, revoked, expires);
}
export default function parseIssuerKeys (issuerProfileJson: Issuer): IssuerPublicKeyList {
try {
const keyMap: IssuerPublicKeyList = {};
if ('@context' in issuerProfileJson) {
// backcompat for v2 alpha
const responseKeys = issuerProfileJson.publicKey ?? issuerProfileJson.publicKeys;
for (let i = 0; i < responseKeys.length; i++) {
const key = createKeyObject(responseKeys[i]);
keyMap[key.publicKey] = key;
}
} else {
// This is a v2 certificate with a v1 issuer
const issuerKeys = issuerProfileJson.issuerKeys ?? [];
const key = createKeyObject({}, issuerKeys[0].key);
keyMap[key.publicKey] = key;
}
return keyMap;
} catch (e) {
console.error(e);
throw new VerifierError(
'parseIssuerKeys',
getText('errors', 'parseIssuerKeys')
);
}
}
|