{"version":3,"sources":["jsdelivr-header.js","/npm/le-tls-sni@0.1.4/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAKI,KALA,MAAQ,QAAQ,cAChB,IAAM,MAAM,IACZ,IAAM,QAAQ,cAAc,IAC5B,OAAS,MAAM,GAAG,OAItB,OAAO,QAAQ,SAAW,SAAU,EAAM,EAAQ,EAAO,EAAQ,GAC/D,IAAI,EAAS,EAAM,EAAM,EAAW,OAAO,SAAU,EAAS,gBAC9D,OAAQ,EAAK,eACX,IAAK,aACH,EAAS,OAAO,GAEhB,GADA,EAAO,EAAS,SAAS,SACb,MAAM,EAAE,IAAM,IAAM,EAAK,MAAM,GAAG,IAAM,sBACpD,EAAU,EACV,EAAS,mBAEX,IAAK,aACH,EAAS,OAAO,GAEhB,GADA,EAAO,EAAS,SAAS,SACb,MAAM,EAAE,IAAM,IAAM,EAAK,MAAM,GAAG,IAAM,EAC/C,IAAS,EAAU,GACxB,MACF,QAEE,YADA,EAAG,IAAI,MAAM,gCAQjB,SAAS,EAAc,EAAK,GAC1B,GAAI,EACF,EAAG,OADL,EAIA,KAAO,GACF,UAAY,IAAI,iBAAiB,KAAK,cAC3C,KAAK,WAAa,IAAI,kBAAkB,KAAK,eAC7C,IAAI,EAAO,IAAI,oBACf,EAAK,UAAY,KAAK,UACtB,EAAK,aAAe,KACpB,EAAK,SAAS,UAAY,IAAI,KAAK,KAAK,MAAQ,MAChD,EAAK,SAAS,SAAW,IAAI,KAAK,KAAK,MAAQ,MAC/C,IAAI,EAAQ,CAAC,CACX,KAAM,aACN,MAAO,IAET,EAAK,WAAW,GAChB,EAAK,UAAU,GACf,IAAI,EAAW,GAAI,EAAe,GAC9B,IACF,EAAa,KAAK,CAChB,KAAM,EACN,MAAO,IAET,EAAS,KAAK,IAEhB,EAAa,KAAK,CAChB,KAAM,EACN,MAAO,IAET,EAAS,KAAK,GACd,EAAK,cAAc,CAAC,CAClB,KAAM,iBACN,SAAU,KAEZ,EAAK,KAAK,KAAK,WAAY,GAC3B,EAAG,KAAM,CACP,QAAS,KAAK,cACd,KAAM,IAAI,iBAAiB,GAC3B,QAAS,EACT,SAAU,EACV,SAAU,EAAK,SAAS,UAAU,UAClC,UAAW,EAAK,SAAS,SAAS,WAvCpC,CAyCF,CAlDI,KACF,EAAc,KAAM,MAEpB,IAAI,gBAAgB,KAAM,MAAS,CAAE,QAAQ,EAAM,KAAK,GAAQ,EAgDpE","file":"/npm/le-tls-sni@0.1.4/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/le-tls-sni@0.1.4/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar forge = require('node-forge');\nvar pki = forge.pki;\nvar rsa = require('rsa-compat').RSA;\nvar sha256 = forge.md.sha256;\n\nvar pair;\n\nmodule.exports.generate = function (args, domain, token, secret, cb) {\n  var subject, sanA, sanB, digester = sha256.create(), suffix = \".acme.invalid\";\n  switch (args.challengeType) {\n    case \"tls-sni-02\":\n      digester.update(token);\n      sanA = digester.digest().toHex();\n      sanA = sanA.slice(0,32) + \".\" + sanA.slice(32,64) + \".token.acme.invalid\";\n      subject = sanA;\n      suffix = \".ka.acme.invalid\";\n      /* fall through */\n    case \"tls-sni-01\":\n      digester.update(secret);\n      sanB = digester.digest().toHex();\n      sanB = sanB.slice(0,32) + \".\" + sanB.slice(32,64) + suffix;\n      if (!subject) subject = sanB;\n      break;\n    default:\n      cb(new Error(\"incompatible challenge type\"));\n      return;\n  }\n  if (pair) {\n    pairGenerated(null, pair);\n  } else {\n    rsa.generateKeypair(2048, 0x10001, { public: true, pem: true }, pairGenerated);\n  }\n  function pairGenerated(err, newPair) {\n    if (err) {\n      cb(err);\n      return;\n    }\n    pair = newPair;\n    pair.publicKey = pki.publicKeyFromPem(pair.publicKeyPem);\n    pair.privateKey = pki.privateKeyFromPem(pair.privateKeyPem);\n    var cert = pki.createCertificate();\n    cert.publicKey = pair.publicKey;\n    cert.serialNumber = '01';\n    cert.validity.notBefore = new Date(Date.now() - 2 * 60 * 60 * 1000);\n    cert.validity.notAfter = new Date(Date.now() + 2 * 60 * 60 * 1000);\n    var attrs = [{\n      name: \"commonName\"\n    , value: subject\n    }];\n    cert.setSubject(attrs);\n    cert.setIssuer(attrs);\n    var altNames = [], certAltNames = [];\n    if (sanA) {\n      certAltNames.push({\n        type: 2, // dNSName\n        value: sanA\n      });\n      altNames.push(sanA);\n    }\n    certAltNames.push({\n      type: 2, // dNSName\n      value: sanB\n    });\n    altNames.push(sanB);\n    cert.setExtensions([{\n      name: \"subjectAltName\"\n    , altNames: certAltNames\n    }]);\n    cert.sign(pair.privateKey, digester);\n    cb(null, {\n      privkey: pair.privateKeyPem\n    , cert: pki.certificateToPem(cert)\n    , subject: subject\n    , altnames: altNames\n    , issuedAt: cert.validity.notBefore.getTime()\n    , expiresAt: cert.validity.notAfter.getTime()\n    });\n  }\n};\n\n"]}