@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/identity",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "Identidad y rating de usuarios compartidos entre apps de Dotrino (vault iframe + postMessage)",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
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.