{"version":3,"file":"index.C0bxxEDt.js","sources":["../../../../../../../src/utils/crypto/index.tsx"],"sourcesContent":["/**\n * Crypto utilities for MyAccount\n * Based on Alexandria's original https://dev.azure.com/toolfactory/MyAccount/_git/alex-comp-myaccount?path=/helpers/crypto.js\n */\nimport { TextEncoder } from 'text-encoding-utf-8';\n\nfunction str2ab(str: string): ArrayBuffer {\n\tconst buf: ArrayBuffer = new ArrayBuffer(str.length);\n\tconst bufView: Uint8Array = new Uint8Array(buf);\n\tfor (let i = 0, strLen = str.length; i < strLen; i++) {\n\t\tbufView[i] = str.charCodeAt(i);\n\t}\n\treturn buf;\n}\n\nfunction getSpkiDer(spkiPem: string): ArrayBuffer {\n\tconst pemHeader: string = '-----BEGIN PUBLIC KEY-----';\n\tconst pemFooter: string = '-----END PUBLIC KEY-----';\n\tconst pemContents: string = spkiPem.substring(pemHeader.length, spkiPem.length - pemFooter.length);\n\tconst binaryDerString: string = window.atob(pemContents);\n\treturn str2ab(binaryDerString);\n}\n\nfunction ab2str(buf: ArrayBuffer): string {\n\treturn String.fromCharCode.apply(null, Array.from(new Uint8Array(buf)));\n}\n\nasync function importPublicKey(spkiPem: string): Promise {\n\tconst pk: CryptoKey = await crypto?.subtle?.importKey(\n\t\t'spki',\n\t\tgetSpkiDer(spkiPem),\n\t\t{\n\t\t\tname: 'RSA-OAEP',\n\t\t\thash: 'SHA-1',\n\t\t},\n\t\ttrue,\n\t\t['encrypt']\n\t);\n\treturn pk;\n}\n\nasync function encryptRSA(key: CryptoKey, plaintext: Uint8Array): Promise {\n\tconst encrypted: ArrayBuffer = await crypto?.subtle?.encrypt(\n\t\t{\n\t\t\tname: 'RSA-OAEP',\n\t\t},\n\t\tkey,\n\t\tplaintext\n\t);\n\n\treturn encrypted;\n}\n\nasync function encryptMessage(plaintext: string, publickey: string): Promise {\n\tconst pub: CryptoKey = await importPublicKey(publickey);\n\ttry {\n\t\tconst encoder = new TextEncoder();\n\n\t\tconst encrypted: ArrayBuffer = await encryptRSA(pub, encoder.encode(plaintext));\n\n\t\tconst encryptedBase64: string = window.btoa(ab2str(encrypted));\n\n\t\treturn encryptedBase64;\n\t} catch (error) {\n\t\tconsole.log(error);\n\t\treturn null;\n\t}\n}\n\nasync function doEncrypt(password: string): Promise {\n\tconst ENCRYPT_PUBLICKEY: string = `-----BEGIN PUBLIC KEY-----\n MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0SS9uVw8O6oQ74hTnGYvqsCpDT7TbOdcoH25J\n yp8Vn2QwYPlHEDUPJ22/kDSOGcSR/iom0yrj2Dymqs19tFlYsKjfujhOcbIED3LmPisMHdXVqnsl\n FwTqhoYOiQu2A8kHnJ8+loQ+5a6JqKyJZiw+RwEKmQd+y6Tm8MhkZKdD0QIDAQAB\n -----END PUBLIC KEY-----`;\n\n\tconst passwordEncrypt: string | null = await encryptMessage(password, ENCRYPT_PUBLICKEY);\n\treturn passwordEncrypt;\n}\n\nexport { doEncrypt, str2ab, getSpkiDer, ab2str };\n"],"names":["str2ab","str","buf","bufView","i","strLen","getSpkiDer","spkiPem","pemContents","binaryDerString","ab2str","importPublicKey","_a","encryptRSA","key","plaintext","encryptMessage","publickey","pub","encoder","TextEncoder","encrypted","error","doEncrypt","password"],"mappings":"yCAMA,SAASA,EAAOC,EAA0B,CACzC,MAAMC,EAAmB,IAAI,YAAYD,EAAI,MAAM,EAC7CE,EAAsB,IAAI,WAAWD,CAAG,EAC9C,QAASE,EAAI,EAAGC,EAASJ,EAAI,OAAQG,EAAIC,EAAQD,IAChDD,EAAQC,CAAC,EAAIH,EAAI,WAAWG,CAAC,EAEvB,OAAAF,CACR,CAEA,SAASI,EAAWC,EAA8B,CAG3C,MAAAC,EAAsBD,EAAQ,UAFV,6BAE8B,OAAQA,EAAQ,OAD9C,2BACiE,MAAM,EAC3FE,EAA0B,OAAO,KAAKD,CAAW,EACvD,OAAOR,EAAOS,CAAe,CAC9B,CAEA,SAASC,EAAOR,EAA0B,CAClC,OAAA,OAAO,aAAa,MAAM,KAAM,MAAM,KAAK,IAAI,WAAWA,CAAG,CAAC,CAAC,CACvE,CAEA,eAAeS,EAAgBJ,EAAqC,OAW5D,OAVe,OAAMK,EAAA,2BAAQ,SAAR,YAAAA,EAAgB,UAC3C,OACAN,EAAWC,CAAO,EAClB,CACC,KAAM,WACN,KAAM,OACP,EACA,GACA,CAAC,SAAS,GAGZ,CAEA,eAAeM,EAAWC,EAAgBC,EAA6C,OAS/E,OARwB,OAAMH,EAAA,2BAAQ,SAAR,YAAAA,EAAgB,QACpD,CACC,KAAM,UACP,EACAE,EACAC,GAIF,CAEA,eAAeC,EAAeD,EAAmBE,EAA2C,CACrF,MAAAC,EAAiB,MAAMP,EAAgBM,CAAS,EAClD,GAAA,CACG,MAAAE,EAAU,IAAIC,EAEdC,EAAyB,MAAMR,EAAWK,EAAKC,EAAQ,OAAOJ,CAAS,CAAC,EAIvE,OAFyB,OAAO,KAAKL,EAAOW,CAAS,CAAC,QAGrDC,EAAO,CACf,eAAQ,IAAIA,CAAK,EACV,IACR,CACD,CAEA,eAAeC,EAAUC,EAA0C,CAQ3D,OADgC,MAAMR,EAAeQ,EAN1B;AAAA;AAAA;AAAA;AAAA,6BAMqD,CAExF"}