crypto.worker.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import * as Comlink from 'comlink';
  2. import * as libsodium from 'utils/crypto/libsodium';
  3. export class Crypto {
  4. async decryptMetadata(file) {
  5. const encodedMetadata = await libsodium.decryptChaChaOneShot(
  6. await libsodium.fromB64(file.metadata.encryptedData),
  7. await libsodium.fromB64(file.metadata.decryptionHeader),
  8. file.key);
  9. return JSON.parse(new TextDecoder().decode(encodedMetadata));
  10. }
  11. async decryptThumbnail(fileData, header, key) {
  12. return libsodium.decryptChaChaOneShot(
  13. fileData,
  14. header,
  15. key);
  16. }
  17. async decryptFile(fileData, header, key) {
  18. return libsodium.decryptChaCha(
  19. fileData,
  20. header,
  21. key);
  22. }
  23. async encrypt(data, key) {
  24. return libsodium.encrypt(data, key);
  25. }
  26. async decrypt(data, nonce, key) {
  27. return libsodium.decrypt(data, nonce, key);
  28. }
  29. async hash(input) {
  30. return libsodium.hash(input);
  31. }
  32. async verifyHash(hash, input) {
  33. return libsodium.verifyHash(hash, input);
  34. }
  35. async deriveKey(passphrase, salt) {
  36. return libsodium.deriveKey(passphrase, salt);
  37. }
  38. async decryptToB64(encryptedKey, sessionNonce, sessionKey) {
  39. return libsodium.decryptToB64(encryptedKey, sessionNonce, sessionKey)
  40. }
  41. async generateMasterKey() {
  42. return libsodium.generateMasterKey();
  43. }
  44. async generateSaltToDeriveKey() {
  45. return libsodium.generateSaltToDeriveKey();
  46. }
  47. async deriveKey(passphrase, salt) {
  48. return libsodium.deriveKey(passphrase, salt);
  49. }
  50. async generateKeyPair() {
  51. return libsodium.generateKeyPair();
  52. }
  53. async boxSealOpen(input, publicKey, secretKey) {
  54. return libsodium.boxSealOpen(input, publicKey, secretKey)
  55. }
  56. async fromString(string) {
  57. return libsodium.fromString(string);
  58. }
  59. async toB64(data) {
  60. return libsodium.toB64(data);
  61. }
  62. async fromB64(string) {
  63. return libsodium.fromB64(string);
  64. }
  65. }
  66. Comlink.expose(Crypto);