1import{d as j,g as f,c as b,r as I}from"./e2ee.client-Bx8Rnuov.js";import{a as N,c as O,l as A}from"./session.client-BfS4AuYU.js";import{t as k,S as R}from"./analytics.client-DEP2HFEl.js";import{j as p}from"./remix-utils-qD3iEUI4.js";import{c as J}from"./exports-B3oNOQxn.js";async function U({encDriverKey:e,saltEnc:t,encPrivateKey:a,encSymmetricKey:s,encryptionEnabled:n,passphrase:o}){const c=await fetch(`${globalThis.ENV.INSOMNIA_API_URI}/v1/web/encryption/my-project-keys`,{credentials:"include"});if(!c.ok){const{message:r}=await c.json();return p({errors:[r]},c.status)}const K=await c.json(),{publicKey:m,privateKey:l}=await N(),i=await fetch(`${globalThis.ENV.INSOMNIA_API_URI}/v1/web/encryption/retrieve-managed-key`,{method:"POST",credentials:"include",body:JSON.stringify({publicKey:JSON.stringify(m)})});if(!i.ok){const{message:r}=await i.json();return p({errors:[r]},i.status)}const{managedKey:E}=await i.json(),d=await j(l,E);let g=null;try{g=await f({encPrivateKey:a,saltEnc:t,encSymmetricKey:s,encDriverKey:e.toLowerCase()},n?d:o)}catch(r){return p({errors:[r.message]},400)}const S=await b(g,K.projectKeys),w=n?o:d,P=await O(e.toLowerCase(),w),u=await T(P,w,e),h=JSON.parse(u.publicKey),v=await Promise.all(S.map(async r=>({projectId:r.projectId,encKey:await I(h,r.symmetricKey)}))),y=await fetch(`${globalThis.ENV.INSOMNIA_API_URI}/v1/web/encryption/toggle-managed-key`,{method:"POST",credentials:"include",body:JSON.stringify({...u,newProjectKeys:v,encryptionEnabled:!n,forceEnableManaged:!0})});if(!y.ok){const{message:r}=await y.json();return p({errors:[r]},y.status)}return y}async function T(e,t,a){try{const s="insomniaKeyAssertionText",n=JSON.parse(e.publicKey),{encryptRSAWithJWK:o,decryptRSAWithJWK:c}=await A(),K=o(n,s),m=await f({encPrivateKey:e.encPrivateKey,saltEnc:e.saltEnc,encSymmetricKey:e.encSymmetricKey,encDriverKey:a.toLowerCase()},t);if(c(m,K)!==s)throw new Error("Encryption key creation failed")}catch(s){J(s)}return e}async function W(){var s;const e=await fetch("/app/user-encryption-keys",{credentials:"include"}),t=await e.json().catch(()=>({}));if(!e.ok){const n=((s=t.errors)==null?void 0:s[0])||t.message||"Failed to fetch encryption keys";throw new Error(n)}const a=["saltEnc","encDriverKey","encPrivateKey","encSymmetricKey"].filter(n=>!t[n]);return a.length>0&&k({event:R.encryptionKeysMissing,properties:{missing_keys:a}}),{saltEnc:t.saltEnc??"",encDriverKey:t.encDriverKey??"",encPrivateKey:t.encPrivateKey??"",encSymmetricKey:t.encSymmetricKey??""}}export{W as g,U as t}; 2//# sourceMappingURL=encryption.client-BRVG8wRG.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.