@dotrino/identity 0.54.2 → 0.56.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/node.js +4 -0
- package/vault/core.js +41 -0
package/package.json
CHANGED
package/src/node.js
CHANGED
|
@@ -177,6 +177,10 @@ export class Identity {
|
|
|
177
177
|
* este puente es en-proceso: al navegador no se le puede pasar una función, y tampoco
|
|
178
178
|
* la necesita — no sella secretos de nadie.
|
|
179
179
|
*/
|
|
180
|
+
/** Abre un sobre sellado A ESTE aparato (envoltura + sobre). Ver `core.js`. */
|
|
181
|
+
openSealedValue (wrap, envelope) { return this._h('openSealedValue', { wrap, envelope }) }
|
|
182
|
+
/** Re-envuelve para otro miembro una llave que este aparato ya puede abrir. */
|
|
183
|
+
rewrapFor (wrap, encPub) { return this._h('rewrapFor', { wrap, encPub }) }
|
|
180
184
|
setSealKeyProvider (provider) { return this._h('setSealKeyProvider', { provider }) }
|
|
181
185
|
/** Estrena la llave de sellado en un acta nueva, sin tocar a ningún miembro. */
|
|
182
186
|
rotateSealKey () { return this._h('rotateSealKey') }
|
package/vault/core.js
CHANGED
|
@@ -1649,6 +1649,47 @@ export async function createIdentityCore ({ kv: rawKv, peers, makeSync = null, k
|
|
|
1649
1649
|
return Content.encryptWithCek({ cek: mine.cek, gen: mine.gen, plaintext: String(plaintext) })
|
|
1650
1650
|
},
|
|
1651
1651
|
|
|
1652
|
+
/**
|
|
1653
|
+
* Abre un sobre SELLADO A ESTE APARATO: primero la envoltura de la llave —con la
|
|
1654
|
+
* privada de cifrado de este dispositivo, que nunca sale de aquí— y con ella el sobre.
|
|
1655
|
+
*
|
|
1656
|
+
* Es lo que deja a un aparato de administración VER un secreto de la bóveda **sin
|
|
1657
|
+
* teclear ninguna contraseña** (§8.2 de `dotrino-vault/docs/secretos-sellados.md`):
|
|
1658
|
+
* la capacidad de leer deja de ser una frase que se escribe en cualquier parte y pasa
|
|
1659
|
+
* a ser una llave que no se mueve del aparato.
|
|
1660
|
+
*
|
|
1661
|
+
* Distinto de `openContent`, que usa el llavero del PERFIL (el contenido del usuario);
|
|
1662
|
+
* aquí la envoltura viene suelta, del llavero de un cajón de secretos.
|
|
1663
|
+
*/
|
|
1664
|
+
async openSealedValue ({ wrap, envelope } = {}) {
|
|
1665
|
+
if (!wrap || !envelope) throw new Error('openSealedValue: missing the wrap or the envelope')
|
|
1666
|
+
const cek = await Content.openWrap({ wrap, myEncPrivateKey: encKeypair.privateKey })
|
|
1667
|
+
return Content.decryptWithCek({ cek, envelope })
|
|
1668
|
+
},
|
|
1669
|
+
|
|
1670
|
+
/**
|
|
1671
|
+
* RE-ENVUELVE para otro miembro una llave que este aparato ya puede abrir.
|
|
1672
|
+
*
|
|
1673
|
+
* Es lo que permite completar a un aparato que entró tarde **sin la frase del
|
|
1674
|
+
* perfil y sin que la bóveda tenga que abrir nada**: quien administra ya tiene su
|
|
1675
|
+
* envoltura de ese cajón —por eso puede pulsar «Ver»—, así que abre la llave con la
|
|
1676
|
+
* suya, que no sale de este dispositivo, y la vuelve a envolver para la pública del
|
|
1677
|
+
* recién llegado.
|
|
1678
|
+
*
|
|
1679
|
+
* No regala nada: quien hace esto ya podía leer ese cajón, y a quien se lo entrega
|
|
1680
|
+
* es a alguien que el ACTA —firmada por la maestra— ya reconoce como miembro. La
|
|
1681
|
+
* autorización es el acta; esto solo es el sobre.
|
|
1682
|
+
*
|
|
1683
|
+
* @param {{ wrap: any, encPub: string }} o `wrap`: mi envoltura · `encPub`: la
|
|
1684
|
+
* pública de cifrado del miembro al que hay que envolvérsela.
|
|
1685
|
+
* @returns {Promise<any>} la envoltura nueva, para que la bóveda la guarde.
|
|
1686
|
+
*/
|
|
1687
|
+
async rewrapFor ({ wrap, encPub } = {}) {
|
|
1688
|
+
if (!wrap || !encPub) throw new Error('rewrapFor: missing the wrap or the recipient key')
|
|
1689
|
+
const cek = await Content.openWrap({ wrap, myEncPrivateKey: encKeypair.privateKey })
|
|
1690
|
+
return Content.wrapForMember({ cek, memberEncPub: encPub })
|
|
1691
|
+
},
|
|
1692
|
+
|
|
1652
1693
|
/** Abre un sobre de contenido con el llavero del perfil (todas las generaciones). */
|
|
1653
1694
|
async openContent ({ envelope } = {}) {
|
|
1654
1695
|
return Content.decryptWithKeyring({
|