@dotrino/vault 0.8.0 → 0.8.1
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 +1 -1
- package/src/enroll.js +20 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/vault",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
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",
|
package/src/enroll.js
CHANGED
|
@@ -108,13 +108,29 @@ export function createEnrollDesk ({
|
|
|
108
108
|
const reply = (to, obj) => { try { send(to, obj) } catch (e) { log('[vault] no se pudo responder:', e.message) } }
|
|
109
109
|
const isFresh = (d) => typeof d?.ts === 'number' && Math.abs(Date.now() - d.ts) <= FRESH_WINDOW_MS
|
|
110
110
|
|
|
111
|
-
/**
|
|
112
|
-
|
|
111
|
+
/**
|
|
112
|
+
* Inicia un emparejamiento: token + nonce de sesión. NO firma nada todavía.
|
|
113
|
+
*
|
|
114
|
+
* `mode` y `account` son LO QUE LA BÓVEDA DECLARA que va a pasar, y viajan en el QR
|
|
115
|
+
* para que el aparato pueda **decirlo antes de hacerlo** en vez de emparejar a
|
|
116
|
+
* ciegas (decisión V9 de `docs/vinculacion-de-cuentas.md`: pregunta el vault, el
|
|
117
|
+
* dispositivo muestra el proceso y sus consecuencias):
|
|
118
|
+
*
|
|
119
|
+
* · `mode: 'join'` → el dispositivo estrena una cuenta suya y entra a la de la
|
|
120
|
+
* bóveda. Es lo único que existe hoy.
|
|
121
|
+
* · `mode: 'adopt'` → la bóveda se quedaría con la cuenta que trae el aparato
|
|
122
|
+
* (camino A). Reservado: todavía no hay protocolo.
|
|
123
|
+
* · `account` → cómo se llama la cuenta de la bóveda, para nombrarla en el
|
|
124
|
+
* aviso. Es ORIENTATIVO (un nombre que puso su dueño); la
|
|
125
|
+
* identidad de verdad de la cuenta es `iss`.
|
|
126
|
+
*/
|
|
127
|
+
function startPairing ({ scope = defaultScope, ttlMs = defaultTtlMs, label = '', mode = 'join', account = '' } = {}) {
|
|
113
128
|
pending.clear() // uno a la vez: una sesión nueva supersede a la anterior
|
|
114
129
|
const token = randToken()
|
|
115
130
|
const sn = randToken()
|
|
116
|
-
|
|
117
|
-
|
|
131
|
+
const acct = String(account || '').slice(0, 40)
|
|
132
|
+
pending.set(token, { token, exp: Date.now() + PAIRING_TTL_MS, scope, ttlMs, label, sn, mode, account: acct, state: 'AWAITING_ENROLL' })
|
|
133
|
+
return { token, qr: { v: 2, iss, proxy, token, sn, m: mode, ...(acct ? { acct } : {}) }, expiresInMs: PAIRING_TTL_MS }
|
|
118
134
|
}
|
|
119
135
|
|
|
120
136
|
function stopPairing (token) { pending.delete(token) }
|