UNPKG

@li0ard/tsemrtd

Version:

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

28 lines (27 loc) 982 B
import { TLV } from "@li0ard/tinytlv"; import { AsnConvert } from "@peculiar/asn1-schema"; import { LDSObject } from "./asn1/sod.js"; import { ContentInfo, SignedData } from "@peculiar/asn1-cms"; import { TAGS } from "./consts/enums.js"; import { validateDataGroupTag } from "./utils.js"; /** * 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) { const tlv = TLV.parse(data); validateDataGroupTag(tlv, TAGS.SOD); const contentInfo = AsnConvert.parse(tlv.byteValue, ContentInfo); const signedData = AsnConvert.parse(contentInfo.content, SignedData); const sod = AsnConvert.parse(signedData.encapContentInfo.eContent.single, LDSObject); return { certificates: signedData.certificates, ldsObject: sod, signatures: signedData.signerInfos }; } }