@dotrino/vault 0.5.0 → 0.6.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 +8 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/vault",
3
- "version": "0.5.0",
3
+ "version": "0.6.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.25.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,12 @@ export function createEnrollDesk ({
157
158
  pend.dpub = d.dpub
158
159
  pend.deviceId = deviceId
159
160
  pend.commit = d.commit
161
+ // Certificado de continuidad (opcional): lo firma la identidad que se une, con su
162
+ // propia llave. Se comprueba aquí y se guarda con el miembro al aprobar.
163
+ if (d.continuity) {
164
+ const okC = await verifyContinuity(d.continuity)
165
+ pend.continuity = (okC && d.continuity.member === d.dpub) ? d.continuity : null
166
+ }
160
167
  pend.from = from // la bóveda NO conoce el código: lo aprende cuando lo tipeas
161
168
  if (d.label) pend.label = String(d.label).slice(0, 60)
162
169
 
@@ -206,7 +213,7 @@ export function createEnrollDesk ({
206
213
  try {
207
214
  if (typeof identity.admitMember === 'function') {
208
215
  const caps = scopeToCaps(pend.scope)
209
- if (caps.length) await identity.admitMember({ pub: pend.dpub, label: pend.label || '', caps, cert })
216
+ if (caps.length) await identity.admitMember({ pub: pend.dpub, label: pend.label || '', caps, cert, continuity: pend.continuity || null })
210
217
  }
211
218
  acta = (await identity.profileActa?.())?.acta || null
212
219
  } catch (e) { log('[vault] no se pudo admitir en el acta:', e.message) }