@dotrino/identity 0.57.0 → 0.58.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/vault/acta.js +9 -3
- package/vault/vendor/vault/protocol.js +2 -1
package/package.json
CHANGED
package/vault/acta.js
CHANGED
|
@@ -53,10 +53,15 @@ const ACTA_LEIBLES = Object.freeze([1, 2])
|
|
|
53
53
|
* el rol de master, que no se delega. Así un dispositivo con `admin` robado hace daño
|
|
54
54
|
* acotado y **reversible** (se le revoca), en vez de poder dejarte fuera de tu cuenta.
|
|
55
55
|
*/
|
|
56
|
-
export const CAPS = Object.freeze(['sign', 'store', 'read', 'secrets', 'admin'])
|
|
56
|
+
export const CAPS = Object.freeze(['sign', 'store', 'read', 'secrets', 'admin', 'approve'])
|
|
57
57
|
|
|
58
58
|
/** Capacidades de un DISPOSITIVO (sin CN): acceso a todo lo del usuario. */
|
|
59
|
-
|
|
59
|
+
/**
|
|
60
|
+
* `approve` es el aparato que APRUEBA: cuando un cajón exige aprobación por uso, el
|
|
61
|
+
* vault le avisa y solo su firma libera los secretos (normalmente el teléfono). Como
|
|
62
|
+
* `admin`, no viaja en un QR: se concede a mano (`dotrino-vault caps <ID> +approve`).
|
|
63
|
+
*/
|
|
64
|
+
export const DEVICE_CAPS = Object.freeze(['sign', 'store', 'read', 'admin', 'approve'])
|
|
60
65
|
|
|
61
66
|
/**
|
|
62
67
|
* Lo que recibe un dispositivo recién emparejado. `admin` **no está**: no se
|
|
@@ -87,12 +92,13 @@ export function capScope (cap, cn = null) {
|
|
|
87
92
|
if (cap === 'store') return 'vault:store'
|
|
88
93
|
if (cap === 'read') return 'vault:read'
|
|
89
94
|
if (cap === 'admin') return 'vault:admin'
|
|
95
|
+
if (cap === 'approve') return 'vault:approve'
|
|
90
96
|
if (cap === 'secrets') return isValidCn(cn) ? 'vault:secrets:' + cn : null
|
|
91
97
|
return null
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
/** Compat: el mapa directo, para las capacidades de dispositivo. */
|
|
95
|
-
export const CAP_SCOPE = Object.freeze({ sign: 'vault:sign', store: 'vault:store', read: 'vault:read', admin: 'vault:admin' })
|
|
101
|
+
export const CAP_SCOPE = Object.freeze({ sign: 'vault:sign', store: 'vault:store', read: 'vault:read', admin: 'vault:admin', approve: 'vault:approve' })
|
|
96
102
|
|
|
97
103
|
const enc = (s) => new TextEncoder().encode(s)
|
|
98
104
|
const hex = (buf) => [...new Uint8Array(buf)].map((b) => b.toString(16).padStart(2, '0')).join('')
|
|
@@ -87,7 +87,8 @@ export const SCOPE = Object.freeze({
|
|
|
87
87
|
// Consola remota (docs/consola-remota.md): admitir y expulsar miembros a distancia.
|
|
88
88
|
// NO incluye cambiar permisos, traspasar el mando ni conceder `admin`: eso es el rol
|
|
89
89
|
// de master y sigue siendo local. No se empareja — se concede desde el PC.
|
|
90
|
-
ADMIN: 'vault:admin'
|
|
90
|
+
ADMIN: 'vault:admin',
|
|
91
|
+
APPROVE: 'vault:approve' // aprobar pedidos de secretos (cajones con `approval`); se concede a mano, como admin
|
|
91
92
|
})
|
|
92
93
|
|
|
93
94
|
/**
|