{"version":3,"file":"cert.cjs","sources":["../../../../../../../../src/mods/tor/binary/certs/cross/cert.ts"],"sourcesContent":["import { Uint8Array } from \"@hazae41/bytes\"\nimport { Cursor } from \"@hazae41/cursor\"\nimport { ExpiredCertError } from \"mods/tor/certs/certs.js\"\nimport { Unimplemented } from \"mods/tor/errors.js\"\n\nexport class CrossCert {\n  readonly #class = CrossCert\n\n  static readonly types = {\n    RSA_TO_ED: 7\n  } as const\n\n  constructor(\n    readonly type: number,\n    readonly key: Uint8Array<32>,\n    readonly expiration: Date,\n    readonly payload: Uint8Array,\n    readonly signature: Uint8Array\n  ) { }\n\n  verifyOrThrow() {\n    const now = new Date()\n\n    if (now > this.expiration)\n      throw new ExpiredCertError()\n\n    return true\n  }\n\n  sizeOrThrow(): never {\n    throw new Unimplemented()\n  }\n\n  writeOrThrow(cursor: Cursor): never {\n    throw new Unimplemented()\n  }\n\n  static readOrThrow(cursor: Cursor) {\n    const type = cursor.readUint8OrThrow()\n    const length = cursor.readUint16OrThrow() // TODO: check length\n\n    const start = cursor.offset\n\n    const key = cursor.readAndCopyOrThrow(32)\n\n    const expDateHours = cursor.readUint32OrThrow()\n    const expiration = new Date(expDateHours * 60 * 60 * 1000)\n\n    const content = cursor.offset - start\n\n    cursor.offset = start\n\n    const payload = cursor.readAndCopyOrThrow(content)\n\n    const sigLength = cursor.readUint8OrThrow()\n    const signature = cursor.readAndCopyOrThrow(sigLength)\n\n    return new CrossCert(type, key, expiration, payload, signature)\n  }\n}"],"names":["ExpiredCertError","Unimplemented"],"mappings":";;;;;;MAKa,SAAS,CAAA;AAQT,IAAA,IAAA,CAAA;AACA,IAAA,GAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,SAAA,CAAA;IAXF,MAAM,GAAG,EAAS,CAAA;IAE3B,OAAgB,KAAK,GAAG;AACtB,QAAA,SAAS,EAAE,CAAC;KACJ,CAAA;IAEV,WACW,CAAA,IAAY,EACZ,GAAmB,EACnB,UAAgB,EAChB,OAAmB,EACnB,SAAqB,EAAA;QAJrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgB;QACnB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAM;QAChB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;KAC3B;IAEL,aAAa,GAAA;AACX,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AAEtB,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU;YACvB,MAAM,IAAIA,sBAAgB,EAAE,CAAA;AAE9B,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,WAAW,GAAA;QACT,MAAM,IAAIC,oBAAa,EAAE,CAAA;KAC1B;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,MAAM,IAAIA,oBAAa,EAAE,CAAA;KAC1B;IAED,OAAO,WAAW,CAAC,MAAc,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,CAAC,iBAAiB,GAAE;AAEzC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;QAE3B,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;AAEzC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAA;AAC/C,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;AAE1D,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;AAErC,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;QAErB,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAElD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;AAEtD,QAAA,OAAO,IAAI,EAAS,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;KAChE;;;;;;"}