UNPKG

@li0ard/tsemrtd

Version:

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

31 lines (30 loc) 1.02 kB
import { TLV } from "@li0ard/tinytlv"; import { Enums } from "./index"; /** * Class for working with DG7 (Signature) */ export class DG7 { readImage(tlv) { if (parseInt(tlv.tag, 16) != 0x5f43) throw new Error(`Invalid object tag "0x${tlv.tag}", expected 0x5f43`); return tlv.byteValue; } /** * Get image of signature * @param data Data of EF.DG7 file */ static load(data) { let tlv = TLV.parse(data); if (parseInt(tlv.tag, 16) != Enums.TAGS.DG7) throw new Error(`Invalid DG7 tag "0x${tlv.tag}", expected 0x${Enums.TAGS.DG7.toString(16)}`); let bict = tlv.childs[0]; if (parseInt(bict.tag, 16) != 0x02) throw new Error(`Invalid object tag "0x${bict.tag}", expected 0x02`); let bitCount = parseInt(bict.value, 16); let results = []; for (let i = 0; i < bitCount; i++) { results.push(new DG7().readImage(tlv.childs[i + 1])); } return results; } }