bump package version to 2.0.3
[squeep-mystery-box] / lib / version-parameters.js
index 9af7d49d61eee45b8ee4922abc7f6f66ab30100f..afa8441bb56243633538ddce8944126c31304978 100644 (file)
@@ -1,26 +1,44 @@
 'use strict';
 
+const ALG = {
+  __proto__: null,
+
+  AES_256_GCM: 'aes-256-gcm',
+  CHACHA20_POLY1305: 'chacha20-poly1305',
+  XCHACHA20_POLY1305: 'xchacha20-poly1305',
+};
+
+const KD = {
+  __proto__: null,
+
+  SCRYPT: 'scrypt',
+  SHAKE256: 'shake256',
+  BLAKE2B512: 'blake2b512',
+};
+
 /**
  * Supported packings/cipher types.
  * To be useful, any cipher included here must be Authenticated Encryption with Additional Data (AEAD).
  * More preferable versions are numbered higher.
  */
 const allVersions = {
+  __proto__: null,
+
   1: {
     version: 1,
-    algorithm: 'aes-256-gcm',
+    algorithm: ALG.AES_256_GCM,
     algOptions: {},
     versionBytes: 1,
     flagsBytes: 1,
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'scrypt',
+    keyDeriver: KD.SCRYPT,
     keyBytes: 32,
   },
   2: {
     version: 2,
-    algorithm: 'chacha20-poly1305', // Prefer this over NIST because we stan djb
+    algorithm: ALG.CHACHA20_POLY1305, // Prefer this over NIST because we stan djb
     algOptions: {
       authTagLength: 16,
     },
@@ -29,12 +47,12 @@ const allVersions = {
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'scrypt',
+    keyDeriver: KD.SCRYPT,
     keyBytes: 32,
   },
   3: {
     version: 3,
-    algorithm: 'xchacha20-poly1305', // Not yet available, but would prefer even more...
+    algorithm: ALG.XCHACHA20_POLY1305, // Not yet available, but would prefer even more...
     algOptions: {
       authTagLength: 16,
     },
@@ -43,24 +61,24 @@ const allVersions = {
     ivBytes: 24,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'scrypt',
+    keyDeriver: KD.SCRYPT,
     keyBytes: 32,
   },
   4: {
     version: 4,
-    algorithm: 'aes-256-gcm',
+    algorithm: ALG.AES_256_GCM,
     algOptions: {},
     versionBytes: 1,
     flagsBytes: 1,
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'shake256',
+    keyDeriver: KD.SHAKE256,
     keyBytes: 32,
   },
   5: {
     version: 5,
-    algorithm: 'chacha20-poly1305',
+    algorithm: ALG.CHACHA20_POLY1305,
     algOptions: {
       authTagLength: 16,
     },
@@ -69,12 +87,12 @@ const allVersions = {
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'shake256',
+    keyDeriver: KD.SHAKE256,
     keyBytes: 32,
   },
   6: {
     version: 6,
-    algorithm: 'xchacha20-poly1305', // Not yet available, but would prefer even more...
+    algorithm: ALG.XCHACHA20_POLY1305, // Not yet available, but would prefer even more...
     algOptions: {
       authTagLength: 16,
     },
@@ -83,24 +101,24 @@ const allVersions = {
     ivBytes: 24,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'shake256',
+    keyDeriver: KD.SHAKE256,
     keyBytes: 32,
   },
   7: {
     version: 7,
-    algorithm: 'aes-256-gcm',
+    algorithm: ALG.AES_256_GCM,
     algOptions: {},
     versionBytes: 1,
     flagsBytes: 1,
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'blake2b512',
+    keyDeriver: KD.BLAKE2B512,
     keyBytes: 32,
   },
   8: {
     version: 8,
-    algorithm: 'chacha20-poly1305',
+    algorithm: ALG.CHACHA20_POLY1305,
     algOptions: {
       authTagLength: 16,
     },
@@ -109,12 +127,12 @@ const allVersions = {
     ivBytes: 12,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'blake2b512',
+    keyDeriver: KD.BLAKE2B512,
     keyBytes: 32,
   },
   9: {
     version: 9,
-    algorithm: 'xchacha20-poly1305', // Not yet available, but would prefer even more...
+    algorithm: ALG.XCHACHA20_POLY1305, // Not yet available, but would prefer even more...
     algOptions: {
       authTagLength: 16,
     },
@@ -123,9 +141,20 @@ const allVersions = {
     ivBytes: 24,
     saltBytes: 16,
     tagBytes: 16,
-    keyDeriver: 'blake2b512',
+    keyDeriver: KD.BLAKE2B512,
     keyBytes: 32,
   },
 };
 
+Object.defineProperties(allVersions, {
+  ALG: {
+    enumerable: false,
+    get: () => ALG,
+  },
+  KD: {
+    enumerable: false,
+    get: () => KD,
+  },
+});
+
 module.exports = allVersions;
\ No newline at end of file