@dotrino/identity 0.73.0 → 0.73.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/index.js +1 -1
- package/src/node.js +1 -1
- package/vault/capabilities.js +1 -24
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -693,4 +693,4 @@ export class Identity {
|
|
|
693
693
|
|
|
694
694
|
// Helpers de capacidad SIN clave maestra (lado dispositivo + verificación), reutilizables
|
|
695
695
|
// por apps/bridges sin cargar el iframe del vault.
|
|
696
|
-
export { makeDeviceKey, makeDeviceEncKey, importDeviceEncKey, signWithDevice, verifyDelegation, verifyChain, pubkeyId, deriveSAS, verifyDeviceSig, makePairingCode, commitCode, avatarSvg, avatarDataUri
|
|
696
|
+
export { makeDeviceKey, makeDeviceEncKey, importDeviceEncKey, signWithDevice, verifyDelegation, verifyChain, pubkeyId, deriveSAS, verifyDeviceSig, makePairingCode, commitCode, avatarSvg, avatarDataUri } from '../vault/capabilities.js'
|
package/src/node.js
CHANGED
|
@@ -302,4 +302,4 @@ export default Identity
|
|
|
302
302
|
|
|
303
303
|
// Helpers de capacidad SIN clave maestra (lado dispositivo + verificación), para que
|
|
304
304
|
// un bridge/bot Node pueda crear su clave, firmar acciones y verificar cadenas D←P.
|
|
305
|
-
export { makeDeviceKey, makeDeviceEncKey, importDeviceEncKey, signWithDevice, verifyDelegation, verifyChain, pubkeyId, deriveSAS, verifyDeviceSig, makePairingCode, commitCode, avatarSvg, avatarDataUri
|
|
305
|
+
export { makeDeviceKey, makeDeviceEncKey, importDeviceEncKey, signWithDevice, verifyDelegation, verifyChain, pubkeyId, deriveSAS, verifyDeviceSig, makePairingCode, commitCode, avatarSvg, avatarDataUri } from '../vault/capabilities.js'
|
package/vault/capabilities.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - El vault firma un CERTIFICADO: «la clave D puede `scope` para la identidad P,
|
|
11
11
|
* mientras el ACTA lo diga», con un `nonce` que es el mango de revocación.
|
|
12
12
|
* - El dispositivo firma cada acción con `D` y adjunta el cert. Cualquiera
|
|
13
|
-
* verifica la CADENA `D ← P` + scope +
|
|
13
|
+
* verifica la CADENA `D ← P` + scope + lo que diga el ACTA + revocación, offline.
|
|
14
14
|
*
|
|
15
15
|
* Garantía: robar el dispositivo solo permite lo del `scope` (p.ej. publicar
|
|
16
16
|
* ubicación) mientras el acta lo diga, y se puede revocar. La clave maestra queda intacta.
|
|
@@ -27,11 +27,6 @@ const ECDSA = { name: 'ECDSA', namedCurve: 'P-256' }
|
|
|
27
27
|
const ECDH = { name: 'ECDH', namedCurve: 'P-256' }
|
|
28
28
|
const SIGN = { name: 'ECDSA', hash: { name: 'SHA-256' } }
|
|
29
29
|
|
|
30
|
-
/** Tope DURO de vida de una delegación (aunque pidan más). */
|
|
31
|
-
export const MAX_DELEGATION_MS = 30 * 24 * 60 * 60 * 1000 // 30 días
|
|
32
|
-
/** Vida por defecto si no se especifica ttl/exp. */
|
|
33
|
-
export const DEFAULT_DELEGATION_MS = 24 * 60 * 60 * 1000 // 24 h
|
|
34
|
-
|
|
35
30
|
const enc = (s) => new TextEncoder().encode(s)
|
|
36
31
|
|
|
37
32
|
async function rawSign (privateKey, bytes) {
|
|
@@ -208,24 +203,6 @@ export async function signWithDevice ({ privateJwk, privateKey, publickey, data
|
|
|
208
203
|
* 5) `nonce` no revocado (`revoked`: fn(nonce)→bool, Set o mapa).
|
|
209
204
|
* @returns {{ok:boolean, reason?:string, iss?, sub?, scope?, iat?, seq?, nonce?}}
|
|
210
205
|
*/
|
|
211
|
-
/**
|
|
212
|
-
* MARGEN DE RELOJ ENTRE DOS APARATOS. Sin esto, emparejar es una lotería.
|
|
213
|
-
*
|
|
214
|
-
* La bóveda sella el certificado con SU reloj (`iat`) y el aparato lo valida con el suyo.
|
|
215
|
-
* Con tolerancia cero, un aparato que vaya un pelo por detrás rechaza un certificado
|
|
216
|
-
* perfectamente bueno con `not-yet-valid` — y el usuario no ve un problema de hora, ve un
|
|
217
|
-
* emparejamiento que no funciona. Pasó de verdad (2026-08-31): un teléfono **850 ms** por
|
|
218
|
-
* detrás, medido, no podía enrolarse en ninguna bóveda.
|
|
219
|
-
*
|
|
220
|
-
* Dos minutos es generoso para un reloj a la deriva y no significa nada frente a un
|
|
221
|
-
* certificado que vale 30 días: aceptarlo dos minutos antes de tiempo no le abre la puerta
|
|
222
|
-
* a nadie, porque lo que autoriza es la FIRMA, no la hora.
|
|
223
|
-
*
|
|
224
|
-
* Es para comparar aparatos DISTINTOS. Donde el mismo operador controla los dos relojes
|
|
225
|
-
* —un servicio validando en la máquina que emite— el estricto sigue siendo lo correcto, y
|
|
226
|
-
* por eso el default de `verifyDelegation` no cambia.
|
|
227
|
-
*/
|
|
228
|
-
export const PEER_SKEW_MS = 120_000
|
|
229
206
|
|
|
230
207
|
export async function verifyDelegation ({ cert, expectedScope, expectedSub, actaSeq = null, sealers = null, revoked } = {}) {
|
|
231
208
|
if (!cert || typeof cert !== 'object') return { ok: false, reason: 'no-cert' }
|