@dotrino/identity 0.31.0 → 0.32.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 +1 -1
- package/src/index.js +2 -2
- package/src/node.js +1 -1
- package/vault/core.js +2 -2
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -323,8 +323,8 @@ export class Identity {
|
|
|
323
323
|
* código a comparar; resuelve cuando el dueño aprueba en su PC (espera hasta 3 min).
|
|
324
324
|
* @returns {Promise<{ ok:boolean, deviceId:string, master:string, exp:number, scope:string[] }>}
|
|
325
325
|
*/
|
|
326
|
-
async enrollDevice (qr) {
|
|
327
|
-
return this._call('vaultPair', { qr }, 200000)
|
|
326
|
+
async enrollDevice (qr, { label = '' } = {}) {
|
|
327
|
+
return this._call('vaultPair', { qr, label }, 200000)
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
/** Estado de emparejamiento: { paired, deviceId?, master?, scope?, exp?, pairedAt? }. */
|
package/src/node.js
CHANGED
|
@@ -187,7 +187,7 @@ export class Identity {
|
|
|
187
187
|
/** Rota la clave de contenido (corta el acceso al contenido FUTURO de quien ya no está). */
|
|
188
188
|
rotateContentKey () { return this._h('rotateContentKey') }
|
|
189
189
|
// Emparejar ESTE dispositivo con el vault del usuario (Fase 1)
|
|
190
|
-
enrollDevice (qr) { return this._h('vaultPair', { qr }) }
|
|
190
|
+
enrollDevice (qr, { label = '' } = {}) { return this._h('vaultPair', { qr, label }) }
|
|
191
191
|
vaultStatus () { return this._h('vaultStatus') }
|
|
192
192
|
unpairDevice () { return this._h('vaultUnpair') }
|
|
193
193
|
vaultSign (payload) { return this._h('vaultSign', { payload }) }
|
package/vault/core.js
CHANGED
|
@@ -1246,7 +1246,7 @@ export async function createIdentityCore ({ kv: rawKv, peers, makeSync = null, k
|
|
|
1246
1246
|
// ----- emparejar ESTE dispositivo con el vault del usuario (Fase 1) -----
|
|
1247
1247
|
// Genera D aquí dentro (su privada NUNCA sale de la identidad), hace el enroll
|
|
1248
1248
|
// endurecido por el proxy y guarda el cert. NO cambia signData todavía (Fase 2).
|
|
1249
|
-
async vaultPair ({ qr }) {
|
|
1249
|
+
async vaultPair ({ qr, label = '' }) {
|
|
1250
1250
|
// Usa la PROPIA llave de identidad de este navegador como dispositivo: el cert delega
|
|
1251
1251
|
// TU identidad (P) desde la maestra M → una sola identidad (signData/identify/cert = P).
|
|
1252
1252
|
// La privada es la CryptoKey del perfil (no extractable): se pasa como `privateKey`
|
|
@@ -1258,7 +1258,7 @@ export async function createIdentityCore ({ kv: rawKv, peers, makeSync = null, k
|
|
|
1258
1258
|
const continuity = (mio && mio.members.length === 1)
|
|
1259
1259
|
? await Acta.makeContinuity({ member: publickeyJwkStr, from: mio.profileId, privateKey: keypair.privateKey })
|
|
1260
1260
|
: null
|
|
1261
|
-
const res = await remoteEnroll({ qr, device, continuity, encPub: encPublickeyJwkStr, onChallenge: (c) => emitVault({ phase: 'challenge', deviceId: c.deviceId, code: c.code }) })
|
|
1261
|
+
const res = await remoteEnroll({ qr, device, continuity, encPub: encPublickeyJwkStr, label: label || me?.nickname || '', onChallenge: (c) => emitVault({ phase: 'challenge', deviceId: c.deviceId, code: c.code }) })
|
|
1262
1262
|
kv.setItem(VAULT_DEVICE_STORAGE, JSON.stringify({ useIdentityKey: true, publickey: publickeyJwkStr }))
|
|
1263
1263
|
kv.setItem(VAULT_CERT_STORAGE, JSON.stringify({ cert: res.cert, master: res.master, proxy: res.proxy, deviceId: res.deviceId, pairedAt: Date.now() }))
|
|
1264
1264
|
// Conectarse a una bóveda es ENTRAR A SU PERFIL: el acta viene con el cert.
|