@dotrino/vaultd 0.131.5 → 0.131.6

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/vault.js +11 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/vaultd",
3
- "version": "0.131.5",
3
+ "version": "0.131.6",
4
4
  "type": "module",
5
5
  "description": "Certificador personal de Dotrino: daemon headless que custodia la clave maestra y delega capacidades a tus dispositivos por el proxy. Tu CA propia.",
6
6
  "bin": {
package/src/vault.js CHANGED
@@ -1577,15 +1577,22 @@ export async function startVault ({ dir = dataDir(), proxyUrl, log = console.log
1577
1577
 
1578
1578
  /**
1579
1579
  * PEDIDOS DE APROBACIÓN (aparatos marcados con `approval on`). Entran por `vault.secrets` con
1580
- * `op: approvals | approve | deny`, firmados por un aparato con `vault:approve` — que,
1581
- * como `admin`, no se empareja: se concede a mano (`caps <ID> +aprueba`). El acta tiene
1582
- * que decirlo también, para que quitar el permiso surta efecto en el acto.
1580
+ * `op: approvals | approve | deny`, firmados por un aparato al que el ACTA le da `approve`
1581
+ * — que, como `admin`, no se empareja: se concede a mano (`caps <ID> +aprueba`).
1582
+ *
1583
+ * DECIDE EL ACTA, NO EL PAPEL (dueño, 2026-09-26). El papel solo prueba que el aparato es
1584
+ * de esta bóveda y no está revocado; por eso no se le pide `vault:approve`. Pedírselo
1585
+ * contestaba `unauthorized: scope` a un teléfono SIN el permiso, el teléfono lo tomaba por
1586
+ * un papel atrasado, pedía renovarlo, y renovar firma con la maestra: con la bóveda
1587
+ * cerrada le llegaba «vault locked», que no era la causa. Ahora le llega `acta`, que sí lo
1588
+ * es. Y a uno CON el permiso ya no le hace falta renovar para aprobar: funciona con la
1589
+ * bóveda cerrada, como todos los aparatos.
1583
1590
  */
1584
1591
  async function handleApproval (from, p) {
1585
1592
  const op = p.data?.op
1586
1593
  const chk = await verifyChain({
1587
1594
  data: p.data, signature: p.signature, cert: p.cert,
1588
- expectedScope: SCOPE.APPROVE, ...(await contextoActa()), revoked: await revocationSet()
1595
+ ...(await contextoActa()), revoked: await revocationSet()
1589
1596
  })
1590
1597
  if (!chk.ok) return denyChain(from, chk, p, 'approval')
1591
1598
  const record = (await identity.profileActa?.().catch(() => null))?.acta