Browse Source

key derivation script

Kieran Gibb 2 years ago
commit
6607c77345
No account linked to committer's email address
4 changed files with 343 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 35
    0
      index.js
  3. 16
    0
      package.json
  4. 291
    0
      yarn.lock

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
1
+masterKey.json

+ 35
- 0
index.js View File

@@ -0,0 +1,35 @@
1
+const sodium = require('sodium-native')
2
+const crypto = require('hypercore-crypto')
3
+const fs = require('fs')
4
+
5
+var masterKey
6
+try {
7
+  masterKey = Buffer.from(JSON.parse(fs.readFileSync('./masterKey.json')))
8
+} catch (err) {
9
+  masterKey = generateMasterKey()
10
+}
11
+
12
+const keyPair1 = deriveKeyPair(masterKey, 0)
13
+printKeys(keyPair1)
14
+
15
+const keyPair2 = deriveKeyPair(masterKey, 1)
16
+printKeys(keyPair2)
17
+
18
+fs.writeFileSync('./masterKey.json', JSON.stringify(masterKey))
19
+
20
+function printKeys (keyPair) {
21
+  console.log('PUBLIC KEY:', keyPair.publicKey.toString('hex'))
22
+  console.log('SECRET KEY:', keyPair.secretKey.toString('hex'))
23
+}
24
+
25
+function deriveKeyPair (masterKey, id) {
26
+  const seed = sodium.sodium_malloc(sodium.crypto_kdf_KEYBYTES)
27
+  sodium.crypto_kdf_derive_from_key(seed, id, sodium.sodium_malloc(sodium.crypto_kdf_KEYBYTES), masterKey)
28
+  return crypto.keyPair(seed)
29
+}
30
+
31
+function generateMasterKey () {
32
+  const masterKey = sodium.sodium_malloc(sodium.crypto_kdf_KEYBYTES)
33
+  sodium.crypto_kdf_keygen(masterKey)
34
+  return masterKey
35
+}

+ 16
- 0
package.json View File

@@ -0,0 +1,16 @@
1
+{
2
+  "name": "derived-keys",
3
+  "version": "1.0.0",
4
+  "description": "",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "author": "",
10
+  "license": "ISC",
11
+  "dependencies": {
12
+    "hypercore-crypto": "^1.0.0",
13
+    "multifeed": "^4.1.5",
14
+    "sodium-native": "^2.4.6"
15
+  }
16
+}

+ 291
- 0
yarn.lock View File

@@ -0,0 +1,291 @@
1
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+# yarn lockfile v1
3
+
4
+
5
+blake2b-wasm@^1.1.0:
6
+  version "1.1.7"
7
+  resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81"
8
+  integrity sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==
9
+  dependencies:
10
+    nanoassert "^1.0.0"
11
+
12
+blake2b@^2.1.1:
13
+  version "2.1.3"
14
+  resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.3.tgz#f5388be424768e7c6327025dad0c3c6d83351bca"
15
+  integrity sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==
16
+  dependencies:
17
+    blake2b-wasm "^1.1.0"
18
+    nanoassert "^1.0.0"
19
+
20
+buffer-alloc-unsafe@^1.0.0, buffer-alloc-unsafe@^1.1.0:
21
+  version "1.1.0"
22
+  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
23
+  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
24
+
25
+buffer-alloc@^1.1.0:
26
+  version "1.2.0"
27
+  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
28
+  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
29
+  dependencies:
30
+    buffer-alloc-unsafe "^1.1.0"
31
+    buffer-fill "^1.0.0"
32
+
33
+buffer-fill@^1.0.0:
34
+  version "1.0.0"
35
+  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
36
+  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
37
+
38
+buffer-from@^1.0.0, buffer-from@^1.1.0:
39
+  version "1.1.1"
40
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
41
+  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
42
+
43
+core-util-is@~1.0.0:
44
+  version "1.0.2"
45
+  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
46
+  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
47
+
48
+debug@^4.1.0:
49
+  version "4.1.1"
50
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
51
+  integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
52
+  dependencies:
53
+    ms "^2.1.1"
54
+
55
+hypercore-crypto@^1.0.0:
56
+  version "1.0.0"
57
+  resolved "https://registry.yarnpkg.com/hypercore-crypto/-/hypercore-crypto-1.0.0.tgz#90dfd2c77364483d24af204b9a99136cb6320de6"
58
+  integrity sha512-xFwOnNlOt8L+SovC7dTNchKaNYJb5l8rKZZwpWQnCme1r7CU4Hlhp1RDqPES6b0OpS7DkTo9iU0GltQGkpsjMw==
59
+  dependencies:
60
+    buffer-alloc-unsafe "^1.1.0"
61
+    buffer-from "^1.1.0"
62
+    sodium-universal "^2.0.0"
63
+    uint64be "^2.0.2"
64
+
65
+hypercore-protocol@^6.8.0:
66
+  version "6.12.0"
67
+  resolved "https://registry.yarnpkg.com/hypercore-protocol/-/hypercore-protocol-6.12.0.tgz#0fafa7c047a7e4c35b2d77639e2489f60d7b1a0d"
68
+  integrity sha512-T3oy9/7QFejqJX2RGcCUU1944e5/eKbLlSz9JPTNN1QbYFJgat/r7eTyOO8SMSLUimUmQx6YBMKhgYbdKzp7Bw==
69
+  dependencies:
70
+    buffer-alloc-unsafe "^1.0.0"
71
+    buffer-from "^1.0.0"
72
+    inherits "^2.0.3"
73
+    protocol-buffers-encodings "^1.1.0"
74
+    readable-stream "^2.2.6"
75
+    sodium-universal "^2.0.0"
76
+    sorted-indexof "^1.0.0"
77
+    varint "^5.0.0"
78
+
79
+inherits@^2.0.3, inherits@~2.0.3:
80
+  version "2.0.4"
81
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
82
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
83
+
84
+ini@^1.3.5:
85
+  version "1.3.5"
86
+  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
87
+  integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
88
+
89
+isarray@~1.0.0:
90
+  version "1.0.0"
91
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
92
+  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
93
+
94
+minimist@0.0.8:
95
+  version "0.0.8"
96
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
97
+  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
98
+
99
+mkdirp@^0.5.1:
100
+  version "0.5.1"
101
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
102
+  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
103
+  dependencies:
104
+    minimist "0.0.8"
105
+
106
+ms@^2.1.1:
107
+  version "2.1.2"
108
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
109
+  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
110
+
111
+multifeed@^4.1.5:
112
+  version "4.1.10"
113
+  resolved "https://registry.yarnpkg.com/multifeed/-/multifeed-4.1.10.tgz#1ec2a188910ec3396d0edd56d537daa91581d842"
114
+  integrity sha512-CW3IkzCRte6MLYBe48rcieVTW/4H4IpkYKmJZ88596WMkso0lauY5yPUAwR4GF7YUMeskoD0OpffierT8S1Vdg==
115
+  dependencies:
116
+    debug "^4.1.0"
117
+    hypercore-protocol "^6.8.0"
118
+    inherits "^2.0.3"
119
+    mutexify "^1.2.0"
120
+    random-access-file "^2.0.1"
121
+    through2 "^3.0.0"
122
+
123
+mutexify@^1.2.0:
124
+  version "1.2.0"
125
+  resolved "https://registry.yarnpkg.com/mutexify/-/mutexify-1.2.0.tgz#45597975a2b035f56dcf61ff15cc8d73c28e7639"
126
+  integrity sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==
127
+
128
+nan@^2.14.0:
129
+  version "2.14.0"
130
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
131
+  integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
132
+
133
+nanoassert@^1.0.0:
134
+  version "1.1.0"
135
+  resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d"
136
+  integrity sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=
137
+
138
+node-gyp-build@^4.1.0:
139
+  version "4.1.1"
140
+  resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb"
141
+  integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==
142
+
143
+process-nextick-args@~2.0.0:
144
+  version "2.0.1"
145
+  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
146
+  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
147
+
148
+protocol-buffers-encodings@^1.1.0:
149
+  version "1.1.0"
150
+  resolved "https://registry.yarnpkg.com/protocol-buffers-encodings/-/protocol-buffers-encodings-1.1.0.tgz#f3905631106669b85381bad47a336add7d206873"
151
+  integrity sha512-SmjEuAf3hc3h3rWZ6V1YaaQw2MNJWK848gLJgzx/sefOJdNLujKinJVXIS0q2cBQpQn2Q32TinawZyDZPzm4kQ==
152
+  dependencies:
153
+    signed-varint "^2.0.1"
154
+    varint "^5.0.0"
155
+
156
+random-access-file@^2.0.1:
157
+  version "2.1.3"
158
+  resolved "https://registry.yarnpkg.com/random-access-file/-/random-access-file-2.1.3.tgz#642c4b29e39c7dd91609a2e912f174d70fd4f82a"
159
+  integrity sha512-AE0Z1ywR5gIkzACMC1lCsR6LP8g4ynNm7oYWYdKPSSU6Y3H+mGDJxBqfcV9B9KstfHNemhfX3nYmx99ZC9f/yg==
160
+  dependencies:
161
+    mkdirp "^0.5.1"
162
+    random-access-storage "^1.1.1"
163
+
164
+random-access-storage@^1.1.1:
165
+  version "1.4.0"
166
+  resolved "https://registry.yarnpkg.com/random-access-storage/-/random-access-storage-1.4.0.tgz#cbe5b5ccfb38680aac7b78a050d9f0a5ef36841f"
167
+  integrity sha512-7oszloM/+PdqWp/oFGyL6SeI14liqo8AAisHAZQGkWdHISyAnngKjNPL0JYIazeLxbHPY6oed2yUffowdq/o6A==
168
+  dependencies:
169
+    inherits "^2.0.3"
170
+
171
+"readable-stream@2 || 3":
172
+  version "3.4.0"
173
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
174
+  integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
175
+  dependencies:
176
+    inherits "^2.0.3"
177
+    string_decoder "^1.1.1"
178
+    util-deprecate "^1.0.1"
179
+
180
+readable-stream@^2.2.6:
181
+  version "2.3.6"
182
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
183
+  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
184
+  dependencies:
185
+    core-util-is "~1.0.0"
186
+    inherits "~2.0.3"
187
+    isarray "~1.0.0"
188
+    process-nextick-args "~2.0.0"
189
+    safe-buffer "~5.1.1"
190
+    string_decoder "~1.1.1"
191
+    util-deprecate "~1.0.1"
192
+
193
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
194
+  version "5.1.2"
195
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
196
+  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
197
+
198
+safe-buffer@~5.2.0:
199
+  version "5.2.0"
200
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
201
+  integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
202
+
203
+signed-varint@^2.0.1:
204
+  version "2.0.1"
205
+  resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129"
206
+  integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=
207
+  dependencies:
208
+    varint "~5.0.0"
209
+
210
+siphash24@^1.0.1:
211
+  version "1.1.1"
212
+  resolved "https://registry.yarnpkg.com/siphash24/-/siphash24-1.1.1.tgz#94ad021a2b2c62de381b546ee02df0cf778acd50"
213
+  integrity sha512-dKKwjIoTOa587TARYLlBRXq2lkbu5Iz35XrEVWpelhBP1m8r2BGOy1QlaZe84GTFHG/BTucEUd2btnNc8QzIVA==
214
+  dependencies:
215
+    nanoassert "^1.0.0"
216
+
217
+sodium-javascript@~0.5.0:
218
+  version "0.5.5"
219
+  resolved "https://registry.yarnpkg.com/sodium-javascript/-/sodium-javascript-0.5.5.tgz#40b7b530390931f45164173582dca51d4e37e84d"
220
+  integrity sha512-UMmCHovws/sxIBZsIRhIl8uRPou/RFDD0vVop81T1hG106NLLgqajKKuHAOtAP6hflnZ0UrVA2VFwddTd/NQyA==
221
+  dependencies:
222
+    blake2b "^2.1.1"
223
+    nanoassert "^1.0.0"
224
+    siphash24 "^1.0.1"
225
+    xsalsa20 "^1.0.0"
226
+
227
+sodium-native@^2.0.0, sodium-native@^2.4.6:
228
+  version "2.4.6"
229
+  resolved "https://registry.yarnpkg.com/sodium-native/-/sodium-native-2.4.6.tgz#8a8173095e8cf4f997de393a2ba106c34870cac2"
230
+  integrity sha512-Ro9lhTjot8M01nwKLXiqLSmjR7B8o+Wg4HmJUjEShw/q6XPlNMzjPkA1VJKaMH8SO8fJ/sggAKVwreTaFszS2Q==
231
+  dependencies:
232
+    ini "^1.3.5"
233
+    nan "^2.14.0"
234
+    node-gyp-build "^4.1.0"
235
+
236
+sodium-universal@^2.0.0:
237
+  version "2.0.0"
238
+  resolved "https://registry.yarnpkg.com/sodium-universal/-/sodium-universal-2.0.0.tgz#cfb4e1a9c4afece4382b2c23c53439b443bd2af3"
239
+  integrity sha512-csdVyakzHJRyCevY4aZC2Eacda8paf+4nmRGF2N7KxCLKY2Ajn72JsExaQlJQ2BiXJncp44p3T+b80cU+2TTsg==
240
+  dependencies:
241
+    sodium-javascript "~0.5.0"
242
+  optionalDependencies:
243
+    sodium-native "^2.0.0"
244
+
245
+sorted-indexof@^1.0.0:
246
+  version "1.0.0"
247
+  resolved "https://registry.yarnpkg.com/sorted-indexof/-/sorted-indexof-1.0.0.tgz#17c742ff7cf187e2f59a15df9b81f17a62ce0899"
248
+  integrity sha1-F8dC/3zxh+L1mhXfm4HxemLOCJk=
249
+
250
+string_decoder@^1.1.1:
251
+  version "1.3.0"
252
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
253
+  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
254
+  dependencies:
255
+    safe-buffer "~5.2.0"
256
+
257
+string_decoder@~1.1.1:
258
+  version "1.1.1"
259
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
260
+  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
261
+  dependencies:
262
+    safe-buffer "~5.1.0"
263
+
264
+through2@^3.0.0:
265
+  version "3.0.1"
266
+  resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a"
267
+  integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==
268
+  dependencies:
269
+    readable-stream "2 || 3"
270
+
271
+uint64be@^2.0.2:
272
+  version "2.0.2"
273
+  resolved "https://registry.yarnpkg.com/uint64be/-/uint64be-2.0.2.tgz#ef4a179752fe8f9ddaa29544ecfc13490031e8e5"
274
+  integrity sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ==
275
+  dependencies:
276
+    buffer-alloc "^1.1.0"
277
+
278
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
279
+  version "1.0.2"
280
+  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
281
+  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
282
+
283
+varint@^5.0.0, varint@~5.0.0:
284
+  version "5.0.0"
285
+  resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf"
286
+  integrity sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=
287
+
288
+xsalsa20@^1.0.0:
289
+  version "1.0.2"
290
+  resolved "https://registry.yarnpkg.com/xsalsa20/-/xsalsa20-1.0.2.tgz#46cc53439d543d88782e42dfada5c5a69ab6314d"
291
+  integrity sha512-g1DFmZ5JJ9Qzvt4dMw6m9IydqoCSP381ucU5zm46Owbk3bwmqAr8eEJirOPc7PrXRn45drzOpAyDp8jsnoyXyw==