{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import crypto from \"node:crypto\";\n\nimport type { SoftPhoneOptions } from \"./types.js\";\n\nconst md5 = (s: string) => crypto.createHash(\"md5\").update(s).digest(\"hex\");\n\nconst generateResponse = (\n  sipInfo: SoftPhoneOptions,\n  endpoint: string,\n  nonce: string,\n) => {\n  const ha1 = md5(\n    `${sipInfo.authorizationId}:${sipInfo.domain}:${sipInfo.password}`,\n  );\n  const ha2 = md5(endpoint);\n  const response = md5(`${ha1}:${nonce}:${ha2}`);\n  return response;\n};\n\nexport const generateAuthorization = (\n  sipInfo: SoftPhoneOptions,\n  nonce: string,\n  method: \"REGISTER\" | \"INVITE\",\n) => {\n  const authObj = {\n    \"Digest algorithm\": \"MD5\",\n    username: sipInfo.authorizationId,\n    realm: sipInfo.domain,\n    nonce,\n    uri: `sip:${sipInfo.domain}`,\n    response: generateResponse(\n      sipInfo,\n      `${method}:sip:${sipInfo.domain}`,\n      nonce,\n    ),\n  };\n  return Object.entries(authObj)\n    .map(([key, value]) => `${key}=\"${value}\"`)\n    .join(\", \");\n};\n\nexport const uuid = () => crypto.randomUUID();\nexport const branch = () => `z9hG4bK-${uuid()}`;\n\nexport const randomInt = () =>\n  Math.floor(Math.random() * (65535 - 1024 + 1)) + 1024;\n\nexport const withoutTag = (s: string) => s.replace(/;tag=.*$/, \"\");\nexport const extractAddress = (s: string) => s.match(/<(sip:.+?)>/)?.[1];\n\nconst keyAndSalt = crypto.randomBytes(30);\nexport const localKey = keyAndSalt.toString(\"base64\").replace(/=+$/, \"\");\n"],"mappings":";;AAIA,MAAM,OAAO,MAAc,OAAO,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,MAAM;AAE3E,MAAM,oBACJ,SACA,UACA,UACG;CAMH,OADiB,IAAI,GAJT,IACV,GAAG,QAAQ,gBAAgB,GAAG,QAAQ,OAAO,GAAG,QAAQ,WAG/B,CAAC,GAAG,MAAM,GADzB,IAAI,SAC2B,GAC5B;;AAGjB,MAAa,yBACX,SACA,OACA,WACG;CACH,MAAM,UAAU;EACd,oBAAoB;EACpB,UAAU,QAAQ;EAClB,OAAO,QAAQ;EACf;EACA,KAAK,OAAO,QAAQ;EACpB,UAAU,iBACR,SACA,GAAG,OAAO,OAAO,QAAQ,UACzB,MACD;EACF;CACD,OAAO,OAAO,QAAQ,QAAQ,CAC3B,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,IAAI,MAAM,GAAG,CAC1C,KAAK,KAAK;;AAGf,MAAa,aAAa,OAAO,YAAY;AAC7C,MAAa,eAAe,WAAW,MAAM;AAE7C,MAAa,kBACX,KAAK,MAAM,KAAK,QAAQ,GAAI,MAAkB,GAAG;AAEnD,MAAa,cAAc,MAAc,EAAE,QAAQ,YAAY,GAAG;AAClE,MAAa,kBAAkB,MAAc,EAAE,MAAM,cAAc,GAAG;AAGtE,MAAa,WADM,OAAO,YAAY,GACd,CAAW,SAAS,SAAS,CAAC,QAAQ,OAAO,GAAG"}