Skip to content

Commit

Permalink
📌 Mina ağında taahhütleri (cryptographic commitment) Poseidon ile yap
Browse files Browse the repository at this point in the history
  • Loading branch information
KimlikDAO-bot committed May 15, 2024
1 parent 2912ff5 commit 4cfe44b
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 22 deletions.
3 changes: 2 additions & 1 deletion al/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ build/al/sayfa-%.js: al/sayfa.js \
birim/telefon/birim.js \
lib/api/jsonrpc.d.js lib/api/jsonrpc.js \
lib/crosschain/*.js \
lib/crypto/poseidon.js \
lib/crypto/sha3.js \
lib/crypto/secp256k1.js lib/crypto/modular.js \
lib/crypto/primes.js lib/crypto/wesolowski.js \
Expand All @@ -22,7 +23,7 @@ build/al/sayfa-%.js: al/sayfa.js \
lib/mina/*.d.js \
lib/node/*.d.js \
lib/node/ipfs.js lib/node/network.js \
lib/util/dom.js lib/util/çevir.js \
lib/util/dom.js lib/util/çevir.js lib/util/base58.js \
build/al/tanışma/birim.keymap
mkdir -p $(dir $@)
bun google-closure-compiler -W VERBOSE -O ADVANCED --charset UTF-8 \
Expand Down
4 changes: 3 additions & 1 deletion al/sayfa.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Cüzdan from "/birim/cüzdan/birim";
import "/birim/dil/birim";
import Kpass from "/birim/kpass/birim";
import Telefon from "/birim/telefon/birim";
import { ChainGroup } from "/lib/crosschain/chains";
import { VerificationKeys, metadataAndSections, signPrompt } from "/lib/did/KPassData";
import { toUnlockableNFT } from "/lib/did/decryptedSections";
import { verifyProofs } from "/lib/did/decryptedSectionsVerifier";
Expand Down Expand Up @@ -88,7 +89,8 @@ const bağlaAdımı = () => {
düğme.classList.remove("act");
dom.düğmeDurdur(düğme);
kök.classList.add("done");
Tanışma.açıkKPassAlVe(adres.toLowerCase(), kpassYarat);
Tanışma.açıkKPassAlVe(
/** @type {ChainGroup} */(Cüzdan.ağ().slice(0, 2)), adres.toLowerCase(), kpassYarat);
}
});
}
Expand Down
38 changes: 23 additions & 15 deletions al/tanışma/birim.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Cüzdan from "/birim/cüzdan/birim";
import Kpass from "/birim/kpass/birim";
import { ChainId } from "/lib/crosschain/chains";
import { ChainGroup, ChainId } from "/lib/crosschain/chains";
import { keccak256Uint8 } from "/lib/crypto/sha3";
import { combineMultiple } from "/lib/did/decryptedSections";
import network from "/lib/node/network";
Expand All @@ -11,32 +11,40 @@ import { base64, uint8ArrayeBase64ten } from "/lib/util/çevir";
* Verilen bir `hesap` için `rastgele` bitdizisi ile kriptografik taahhüt
* oluÅŸturur.
*
* @param {ChainGroup} ağÇeşidi
* @param {string} adres 0x ile baÅŸlayan EVM adresi.
* @param {!Uint8Array} rastgele bitdizisi, 64 byte uzunluÄŸunda.
* @return {!Uint8Array} Kriptografik taahhüt, 64 byte uzunluğunda.
*/
const taahhütOluştur = (adres, rastgele) => {
/** @type {!Uint8Array} */
const eskiz = new Uint8Array(32 + 20);
for (let /** number */ i = 1; i <= 20; ++i)
eskiz[i + 31] = parseInt(adres.substring(2 * i, 2 * i + 2), 16);
const taahhütOluştur = (ağÇeşidi, adres, rastgele) => {
switch (ağÇeşidi) {
case ChainGroup.EVM: {
/** @type {!Uint8Array} */
const eskiz = new Uint8Array(32 + 20);
for (let /** number */ i = 1; i <= 20; ++i)
eskiz[i + 31] = parseInt(adres.substring(2 * i, 2 * i + 2), 16);

eskiz.set(rastgele.subarray(0, 32));
/** @const {!Uint8Array} */
const taahhüt = new Uint8Array(keccak256Uint8(eskiz).buffer, 0, 64);
eskiz.set(rastgele.subarray(32, 64));
taahhüt.set(keccak256Uint8(eskiz), 32);
return taahhüt;
eskiz.set(rastgele.subarray(0, 32));
/** @const {!Uint8Array} */
const taahhüt = new Uint8Array(keccak256Uint8(eskiz).buffer, 0, 64);
eskiz.set(rastgele.subarray(32, 64));
taahhüt.set(keccak256Uint8(eskiz), 32);
return taahhüt;
}
case ChainGroup.MINA:
}
return new Uint8Array(64); // TODO(KimlikDAO-bot)
}

/**
* AçıkKPass alır ve `sonra`'ya aktarır.
*
* @param {ChainGroup} ağÇeşidi
* @param {string} adres
* @param {function(string, !did.DecryptedSections)} sonra AçıkKpass'i
* vereceÄŸimiz yordam.
*/
const açıkKPassAlVe = (adres, sonra) => {
const açıkKPassAlVe = (ağÇeşidi, adres, sonra) => {
/** @const {!Worker} */
const powWorker = new Worker("/al/tanışma/powWorker.js", { type: "module" });

Expand All @@ -59,7 +67,7 @@ const açıkKPassAlVe = (adres, sonra) => {
/** @const {!Promise<string>} */
const taahhütPowSözü = new Promise((resolve) => {
/** @const {!Uint8Array} */
const taahhüt = taahhütOluştur(adres, nkoRastgele);
const taahhüt = taahhütOluştur(ağÇeşidi, adres, nkoRastgele);
/** @const {string} */
const taahhütB64 = base64(taahhüt);
/** @const {?string} */
Expand Down Expand Up @@ -137,7 +145,7 @@ const açıkKPassAlVe = (adres, sonra) => {
const istemciAn = Date.now() / 1000 | 0;
/** @const {!Uint8Array} */
const taahhüt = new Uint8Array(
taahhütOluştur(adres, eDevletRastgele).buffer, 0, 72);
taahhütOluştur(ağÇeşidi, adres, eDevletRastgele).buffer, 0, 72);

// Şimdilik `edevlet/oauth2` için PoW gerektirmiyoruz.
// Son 8 byte'ının kullanıcı EVM adresi bilgisi sızmaması için sıfırlayalım.
Expand Down
2 changes: 1 addition & 1 deletion ana/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ build/ana/sayfa-%.js: ana/sayfa.js \
lib/ethereum/provider.js lib/ethereum/KPassLite.js \
lib/mina/*.d.js \
lib/node/*.d.js lib/node/ipfs.js \
lib/util/dom.js lib/util/çevir.js
lib/util/dom.js lib/util/çevir.js lib/util/base58.js
mkdir -p $(dir $@)
bun google-closure-compiler -W VERBOSE -O ADVANCED --charset UTF-8 \
--define "TR\$$\$$module\$$lib\$$util\$$dom=$(Lang-$*)" \
Expand Down
2 changes: 1 addition & 1 deletion iptal/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ build/iptal/sayfa-%.js: iptal/sayfa.js \
lib/ethereum/provider.js lib/ethereum/KPassLite.js \
lib/mina/*.d.js \
lib/node/*.d.js lib/node/ipfs.js \
lib/util/dom.js lib/util/çevir.js
lib/util/dom.js lib/util/çevir.js lib/util/base58.js
mkdir -p $(dir $@)
bun google-closure-compiler -W VERBOSE -O ADVANCED --charset UTF-8 \
--jscomp_error=unusedLocalVariables \
Expand Down
2 changes: 1 addition & 1 deletion kpassim/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ build/kpassim/sayfa-%.js: kpassim/sayfa.js kpassim/pencere/*.js \
lib/ethereum/*.js \
lib/mina/*.d.js \
lib/node/*.d.js lib/node/ipfs.js \
lib/util/dom.js lib/util/çevir.js
lib/util/dom.js lib/util/çevir.js lib/util/base58.js
mkdir -p $(dir $@)
bun google-closure-compiler -W VERBOSE -O ADVANCED --charset UTF-8 \
--define "TR\$$\$$module\$$lib\$$util\$$dom=$(Lang-$*)" \
Expand Down
2 changes: 1 addition & 1 deletion lib
2 changes: 1 addition & 1 deletion oyla/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ build/oyla/sayfa-%.js: oyla/sayfa.js \
lib/ethereum/provider.js lib/ethereum/KPassLite.js \
lib/mina/*.d.js \
lib/node/*.d.js lib/node/ipfs.js \
lib/util/dom.js lib/util/çevir.js
lib/util/dom.js lib/util/çevir.js lib/util/base58.js
mkdir -p $(dir $@)
bun google-closure-compiler -W VERBOSE -O ADVANCED --charset UTF-8 \
--define "TR\$$\$$module\$$lib\$$util\$$dom=$(Lang-$*)" \
Expand Down

0 comments on commit 4cfe44b

Please sign in to comment.