{"version":3,"file":"cert.cjs","sources":["../../../../../../../../src/mods/tor/binary/certs/rsa/cert.ts"],"sourcesContent":["import { Uint8Array } from \"@hazae41/bytes\";\nimport { Cursor } from \"@hazae41/cursor\";\nimport { X509 } from \"@hazae41/x509\";\nimport { ExpiredCertError, PrematureCertError } from \"mods/tor/certs/certs.js\";\n\nexport class RsaCert {\n\n  static readonly types = {\n    RSA_SELF: 2,\n    RSA_TO_TLS: 1,\n    RSA_TO_AUTH: 3\n  } as const\n\n  constructor(\n    readonly type: number,\n    readonly data: Uint8Array,\n    readonly x509: X509.Certificate\n  ) { }\n\n  async sha1OrThrow() {\n    const publicKey = X509.writeToBytesOrThrow(this.x509.tbsCertificate.subjectPublicKeyInfo)\n\n    return new Uint8Array(await crypto.subtle.digest(\"SHA-1\", publicKey)) as Uint8Array<20>\n  }\n\n  verifyOrThrow() {\n    const now = new Date()\n\n    if (now > this.x509.tbsCertificate.validity.notAfter.value)\n      throw new ExpiredCertError()\n    if (now < this.x509.tbsCertificate.validity.notBefore.value)\n      throw new PrematureCertError()\n\n    return true\n  }\n\n  sizeOrThrow() {\n    return 1 + 2 + this.data.length\n  }\n\n  writeOrThrow(cursor: Cursor) {\n    cursor.writeUint8OrThrow(this.type)\n    cursor.writeUint16OrThrow(this.data.length)\n    cursor.writeOrThrow(this.data)\n  }\n\n  static readOrThrow(cursor: Cursor) {\n    const type = cursor.readUint8OrThrow()\n    const length = cursor.readUint16OrThrow()\n\n    const data = cursor.readAndCopyOrThrow(length)\n    const x509 = X509.readAndResolveFromBytesOrThrow(X509.Certificate, data)\n\n    return new RsaCert(type, data, x509)\n  }\n\n}"],"names":["X509","ExpiredCertError","PrematureCertError","x509"],"mappings":";;;;;MAKa,OAAO,CAAA;AASP,IAAA,IAAA,CAAA;AACA,IAAA,IAAA,CAAA;AACA,IAAA,IAAA,CAAA;IATX,OAAgB,KAAK,GAAG;AACtB,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,WAAW,EAAE,CAAC;KACN,CAAA;AAEV,IAAA,WAAA,CACW,IAAY,EACZ,IAAgB,EAChB,IAAsB,EAAA;QAFtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;KAC5B;AAEL,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAGA,SAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;AAEzF,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAmB,CAAA;KACxF;IAED,aAAa,GAAA;AACX,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AAEtB,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;YACxD,MAAM,IAAIC,sBAAgB,EAAE,CAAA;AAC9B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;YACzD,MAAM,IAAIC,wBAAkB,EAAE,CAAA;AAEhC,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,WAAW,GAAA;QACT,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;KAChC;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC3C,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC/B;IAED,OAAO,WAAW,CAAC,MAAc,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAA;QAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAC9C,QAAA,MAAMC,MAAI,GAAGH,SAAI,CAAC,8BAA8B,CAACA,SAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAExE,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAEG,MAAI,CAAC,CAAA;KACrC;;;;;"}