@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.
Files changed (2) hide show
  1. package/package.json +2 -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.5.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.24.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) }