@li0ard/tsemrtd
Version:
simple library for eMRTD. supports browsers, node, bun and more!
28 lines (27 loc) • 1.04 kB
JavaScript
import { TLV } from "@li0ard/tinytlv";
import { Enums } from "./index";
import { AsnConvert, OctetString } from "@peculiar/asn1-schema";
import { LDSObject } from "./asn1/sod";
import { ContentInfo, SignedData } from "@peculiar/asn1-cms";
/**
* Class for working with SOD (Security object)
*/
export class SOD {
/**
* Get version, algorithm, data groups hashes
* @param data Data of EF.SOD file
*/
static load(data) {
let tlv = TLV.parse(data);
if (parseInt(tlv.tag, 16) != Enums.TAGS.SOD)
throw new Error(`Invalid SOD tag "0x${tlv.tag}", expected 0x${Enums.TAGS.SOD.toString(16)}`);
let contentInfo = AsnConvert.parse(tlv.byteValue, ContentInfo);
let signedData = AsnConvert.parse(contentInfo.content, SignedData);
let sod = AsnConvert.parse(signedData.encapContentInfo.eContent?.single, LDSObject);
return {
certificates: signedData.certificates,
ldsObject: sod,
signatures: signedData.signerInfos
};
}
}