UNPKG

@li0ard/tsemrtd

Version:

simple library for eMRTD. supports browsers, node, bun and more!

28 lines (27 loc) 1.04 kB
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 }; } }