@dotrino/vault 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/enroll.js +11 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/vault",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Usa ESTE dispositivo (navegador) como bóveda/CA del ecosistema Dotrino: atiende enrolamientos por el proxy y firma certificados de delegación a tus máquinas. Incluye el cliente de SERVICIO (Node): un proyecto se enrola una vez y jala sus credenciales del vault en vez del .env (`import '@dotrino/vault/config'`).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"pairing"
|
|
43
43
|
],
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@dotrino/identity": ">=0.
|
|
45
|
+
"@dotrino/identity": ">=0.27.0",
|
|
46
46
|
"@dotrino/proxy-client": ">=0.6.0"
|
|
47
47
|
},
|
|
48
48
|
"license": "MIT",
|
package/src/enroll.js
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
* `docs/pairing-protocol.md`).
|
|
31
31
|
*/
|
|
32
32
|
import { verifyDeviceSig, pubkeyId, commitCode } from '@dotrino/identity/capabilities'
|
|
33
|
+
import { verifyContinuity } from '@dotrino/identity/acta'
|
|
33
34
|
|
|
34
35
|
/** Un token de emparejamiento vale 5 min. */
|
|
35
36
|
export const PAIRING_TTL_MS = 5 * 60 * 1000
|
|
@@ -157,6 +158,15 @@ export function createEnrollDesk ({
|
|
|
157
158
|
pend.dpub = d.dpub
|
|
158
159
|
pend.deviceId = deviceId
|
|
159
160
|
pend.commit = d.commit
|
|
161
|
+
// Llave de CIFRADO del dispositivo: con ella se le envuelve la clave de contenido del
|
|
162
|
+
// perfil al admitirlo. Sin ella entra, pero no podrá leer lo que haya guardado.
|
|
163
|
+
if (typeof d.encPub === 'string') pend.encPub = d.encPub
|
|
164
|
+
// Certificado de continuidad (opcional): lo firma la identidad que se une, con su
|
|
165
|
+
// propia llave. Se comprueba aquí y se guarda con el miembro al aprobar.
|
|
166
|
+
if (d.continuity) {
|
|
167
|
+
const okC = await verifyContinuity(d.continuity)
|
|
168
|
+
pend.continuity = (okC && d.continuity.member === d.dpub) ? d.continuity : null
|
|
169
|
+
}
|
|
160
170
|
pend.from = from // la bóveda NO conoce el código: lo aprende cuando lo tipeas
|
|
161
171
|
if (d.label) pend.label = String(d.label).slice(0, 60)
|
|
162
172
|
|
|
@@ -206,7 +216,7 @@ export function createEnrollDesk ({
|
|
|
206
216
|
try {
|
|
207
217
|
if (typeof identity.admitMember === 'function') {
|
|
208
218
|
const caps = scopeToCaps(pend.scope)
|
|
209
|
-
if (caps.length) await identity.admitMember({ pub: pend.dpub, label: pend.label || '', caps, cert })
|
|
219
|
+
if (caps.length) await identity.admitMember({ pub: pend.dpub, encPub: pend.encPub || null, label: pend.label || '', caps, cert, continuity: pend.continuity || null })
|
|
210
220
|
}
|
|
211
221
|
acta = (await identity.profileActa?.())?.acta || null
|
|
212
222
|
} catch (e) { log('[vault] no se pudo admitir en el acta:', e.message) }
|