Skip to content

Commit

Permalink
✍🏼 Yeni signer arabirimini uygula
Browse files Browse the repository at this point in the history
  • Loading branch information
KimlikDAO-bot committed Aug 26, 2024
1 parent 281181c commit 1e1e4e1
Show file tree
Hide file tree
Showing 11 changed files with 113 additions and 75 deletions.
2 changes: 1 addition & 1 deletion al/sayfa.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<link href="/birim/ortak.css" rel="stylesheet" type="text/css" />
<link href="/al/sayfa.css" rel="stylesheet" type="text/css" />
<birim:favicon />
<script type="module" src="/al/sayfa.js"></script>
<script type="module" src="/al/sayfa.js" data-loose></script>
</head>

<body>
Expand Down
2 changes: 1 addition & 1 deletion ana/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ const css = (lang) => Promise.all([
})
.then((_) => `build/ana/sayfa-${lang}.css`);

await css("en");
await js("en");
48 changes: 42 additions & 6 deletions birim/cüzdan/evmBağlantısı.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import "./evmBağlantısı.d";
import { AğBilgileri, AğBilgisi } from "/birim/ağlar/birim";
import { ChainId } from "/lib/crosschain/chains";
import { Provider } from "/lib/crosschain/provider";
import { hex } from "/lib/util/çevir";
import eth from "/lib/ethereum/eth.d";
import evm from "/lib/ethereum/evm";
import { hex, hexten } from "/lib/util/çevir";

/**
* @param {!eth.Provider} provider
Expand Down Expand Up @@ -81,15 +83,16 @@ const bağla = (provider, ağ, ağDeğişti, adresDeğişti, izinliyse) => provi
* @param {string} metin
* @param {string} adres
* @param {boolean} hexeÇevir
* @return {!Promise<string>}
* @return {!Promise<eth.CompactSignature>}
*/
const imzala = (provider, metin, adres, hexeÇevir) => provider.request(
/** @type {!eth.Request} */({
method: "personal_sign",
params: [hexeÇevir
? "0x" + hex(new TextEncoder().encode(metin))
: metin, adres]
}));
}
)).then((imza) => evm.compactSignature(imza));

/**
* @type {!Provider}
Expand Down Expand Up @@ -148,10 +151,21 @@ const CoreBağlantısı = /** @type {!Provider} */({
*
* @param {string} message
* @param {string} address
* @return {!Promise<string>}
* @return {!Promise<eth.CompactSignature>}
*/
signMessage: (message, address) =>
imzala(CoreBağlantısı.provider, message, address, true),

/**
* @override
*
* @param {string} message
* @param {string} address
* @return {!Promise<!ArrayBuffer>}
*/
deriveSecret: (message, address) =>
imzala(CoreBağlantısı.provider, message, address, true)
.then((sig) => crypto.subtle.digest("SHA-256", hexten(sig.slice(2))))
});

/** @const {!Provider} */
Expand Down Expand Up @@ -201,10 +215,21 @@ const MetaMaskBağlantısı = /** @type {!Provider} */({
*
* @param {string} message
* @param {string} address
* @return {!Promise<string>}
* @return {!Promise<eth.CompactSignature>}
*/
signMessage: (message, address) =>
imzala(MetaMaskBağlantısı.provider, message, address, false),

/**
* @override
*
* @param {string} message
* @param {string} address
* @return {!Promise<!ArrayBuffer>}
*/
deriveSecret: (message, address) =>
imzala(MetaMaskBağlantısı.provider, message, address, false)
.then((sig) => crypto.subtle.digest("SHA-256", hexten(sig.slice(2))))
});

/**
Expand Down Expand Up @@ -263,10 +288,21 @@ const RabbyBağlantısı = /** @type {!Provider} */({
*
* @param {string} message
* @param {string} address
* @return {!Promise<string>}
* @return {!Promise<eth.CompactSignature>}
*/
signMessage: (message, address) =>
imzala(RabbyBağlantısı.provider, message, address, false),

/**
* @override
*
* @param {string} message
* @param {string} address
* @return {!Promise<!ArrayBuffer>}
*/
deriveSecret: (message, address) =>
imzala(RabbyBağlantısı.provider, message, address, false)
.then((sig) => crypto.subtle.digest("SHA-256", hexten(sig.slice(2))))
});

export {
Expand Down
72 changes: 43 additions & 29 deletions birim/cüzdan/minaBağlantısı.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import "./minaBağlantısı.d";
import { ChainId } from "/lib/crosschain/chains";
import { Provider } from "/lib/crosschain/provider";
import { Signature } from "/lib/mina/mina";

/**
* @param {!mina.Provider} provider
Expand All @@ -10,37 +11,34 @@ import { Provider } from "/lib/crosschain/provider";
* @param {boolean=} onlyIfApproved
* @return {!Promise<void>}
*/
const connectWithProvider = (provider, chainId, chainChanged, addressChanged, onlyIfApproved) => {
console.log(chainId);
return onlyIfApproved
? provider.getAccounts()
.then((addresses) => {
if (!addresses || !addresses.length) return Promise.reject();
provider.requestNetwork()
.then((/** @type {!mina.ChainInfoArgs} */ chainInfo) => {
chainChanged(/** @type {ChainId} */(chainInfo.networkID));
addressChanged(addresses);
provider.on("accountsChanged", addressChanged);
provider.on("chainChanged",
(/** @type {!mina.ChainInfoArgs} */ chainInfo) =>
chainChanged(/** @type {ChainId} */(chainInfo.networkID))
);
})
})
: provider.requestAccounts()
.then((addresses) => provider.switchChain(/** @type {!mina.SwitchChainArgs} */({
networkID: chainId
}))
.then(() => {
const connectWithProvider = (provider, chainId, chainChanged, addressChanged, onlyIfApproved) => onlyIfApproved
? provider.getAccounts()
.then((addresses) => {
if (!addresses || !addresses.length) return Promise.reject();
provider.requestNetwork()
.then((/** @type {!mina.ChainInfoArgs} */ chainInfo) => {
chainChanged(/** @type {ChainId} */(chainInfo.networkID));
addressChanged(addresses);
provider.on("accountsChanged", addressChanged);
provider.on("chainChanged",
(/** @type {!mina.ChainInfoArgs} */ chainInfo) =>
chainChanged(/** @type {ChainId} */(chainInfo.networkID))
);
addressChanged(addresses);
})
);
}
})
: provider.requestAccounts()
.then((addresses) => provider.switchChain(/** @type {!mina.SwitchChainArgs} */({
networkID: chainId
}))
.then(() => {
provider.on("accountsChanged", addressChanged);
provider.on("chainChanged",
(/** @type {!mina.ChainInfoArgs} */ chainInfo) =>
chainChanged(/** @type {ChainId} */(chainInfo.networkID))
);
addressChanged(addresses);
})
);

/**
* @param {!mina.Provider} provider
Expand Down Expand Up @@ -108,14 +106,30 @@ const AuroConnection = /** @type {!Provider} */({
*
* @param {string} message
* @param {string} address
* @return {!Promise<string>}
* @return {!Promise<mina.SignerSignature>}
*/
signMessage: (message, address) => AuroConnection.provider.signMessage(
/** @type {!mina.SignMessageArgs} */({
/** @type {mina.SignMessageArgs} */({
message
}))
.then((/** @type {mina.SignedData} */ signed) => /** @type {mina.SignerSignature} */({
signer: signed.publicKey,
signature: new Signature(BigInt(signed.signature.field), BigInt(signed.signature.scalar)).toBase58()
})),

/**
* @override
*
* @param {string} message
* @param {string} address
* @return {!Promise<!ArrayBuffer>}
*/
deriveSecret: (message, address) => AuroConnection.provider.signMessage(
/** @type {mina.SignMessageArgs} */({
message
}))
.then((/** @type {!mina.SignedData} */ signed) =>
signed.signature.field + signed.signature.scalar),
.then((/** @type {mina.SignedData} */ signed) => crypto.subtle.digest(
"SHA-256", new TextEncoder().encode(signed.signature.field + signed.signature.scalar)))
});

export { AuroConnection };
2 changes: 1 addition & 1 deletion birim/dil/birim.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const KonumTR = "/?tr";
/** @define {string} */
const KonumEN = "/?en";

/** @const {Element} */
/** @const {!Element} */
const DilButonu = dom.adla("dib");

dom.menüYarat(DilButonu, dom.adla("did"));
Expand Down
7 changes: 6 additions & 1 deletion kpassim/discord.d.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
* @externs
*/

import eth from "/lib/ethereum/eth.d";
import mina from "/lib/mina/mina.d";

/**
* @const
*/
Expand All @@ -22,8 +25,10 @@ discord.SignedID;
* discordID: !discord.SignedID,
* role: string,
* chainID: string,
* signature: string,
* signerSignature: (eth.CompactSignature|mina.SignerSignature),
* lang: string
* }}
*/
discord.RoleRequest;

export default discord;
17 changes: 3 additions & 14 deletions kpassim/discord.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,13 @@
import "./discord.d";
import { keccak256 } from "/lib/crypto/sha3";
import discord from "./discord.d";

/**
* @param {!discord.SignedID} discordID
* @param {string} role
* @param {boolean} TR
* @return {string}
*/
const roleRequestChallenge = (discordID, role, TR) => TR
? `${discordID.username} Discord hesabıma ${role} rolünü eklemek istiyorum.`
: `I would like to add the ${role} role to my Discord account ${discordID.username}.`

/**
* @param {!discord.SignedID} discordID
* @param {string} secret
* @return {string} hmac for the data fields
*/
const getHmac = (discordID, secret) => keccak256(
JSON.stringify(discordID, ["id", "username"]) + secret);

export {
getHmac,
roleRequestChallenge
};
export { roleRequestChallenge };
24 changes: 9 additions & 15 deletions kpassim/sayfa.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* @fileoverview İncele sayfası giriş noktası
*
*/
import "./discord.d";
import { roleRequestChallenge } from "./discord.js";
import Cüzdan from "/birim/cüzdan/birim";
import "/birim/dil/birim";
Expand All @@ -13,10 +14,9 @@ import {
} from "/kpassim/pencere/birim";
import { ChainId } from "/lib/crosschain/chains";
import { Provider } from "/lib/crosschain/provider";
import { Signer } from "/lib/crosschain/signer";
import { Signature, Signer } from "/lib/crosschain/signer";
import { fromUnlockableNFT } from "/lib/did/KPass";
import KPass from "/lib/ethereum/KPass";
import evm from "/lib/ethereum/evm";
import dom from "/lib/util/dom";

/** @const {!HTMLAnchorElement} */
Expand Down Expand Up @@ -88,28 +88,25 @@ const discordRolüAl = () => {
if (event.origin != "https://discord.kimlikdao.org") return;
DiscordDüğmesiMetni ||= DiscordDüğmesi.innerText;
DiscordDüğmesi.innerText = DiscordDüğmesiMetni + " ⏳";
/**
* @const
* @type {!Signer}
*/
/** @const {!Signer} */
const imzacı = Cüzdan.bağlantı();
/** @const {ChainId} */
const = Cüzdan.();
/** @const {string} */
const adres = /** @type {string} */(Cüzdan.adres());
/** @const {!discord.SignedID} */
const discordID = /** @type {!discord.SignedID} */(event.data);
/** @const {discord.SignedID} */
const discordID = /** @type {discord.SignedID} */(event.data);
/** @const {string} */
const role = "KPASS HOLDER";
imzacı.signMessage(roleRequestChallenge(discordID, role, dom.TR), adres)
.then((signature) => fetch("//discord.kimlikdao.org", {
.then((/** @type {Signature} */ signerSignature) => fetch("//discord.kimlikdao.org", {
method: "PUT",
headers: { "content-type": "application/json" },
body: JSON.stringify(/** @type {!discord.RoleRequest} */({
discordID,
role,
chainID: ,
signature: evm.compactSignature(signature),
signerSignature,
lang: dom.TR ? "tr" : "en"
}))
}))
Expand All @@ -121,13 +118,10 @@ const discordRolüAl = () => {
dom.düğmeDurdur(DiscordDüğmesi);
});
};
const popup = window.open("//discord.com/api/oauth2/authorize?client_id=1068629633970487428"
dom.pencere("//discord.com/api/oauth2/authorize?client_id=1068629633970487428"
+ "&redirect_uri=https://discord.kimlikdao.org"
+ "&response_type=code"
+ "&scope=identify", "_blank",
"menubar=no,toolbar=no,status=no,width=500,height=650," +
`left=${screen.width / 2 - 250},top=${screen.height / 2 - 325}`);
if (window.focus) popup.focus();
+ "&scope=identify", 500, 650);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion lib
Submodule lib updated 59 files
+0 −2 README.md
+2 −0 api/oauth2.d.js
+0 −0 birimler/cloudflare/cache.d.js
+0 −0 birimler/cloudflare/durableObject.d.js
+0 −0 birimler/cloudflare/emailWorker.d.js
+15 −0 birimler/cloudflare/kvPageWorker.d.js
+8 −7 birimler/cloudflare/kvPageWorker.js
+0 −0 birimler/cloudflare/mock/durableObject.js
+9 −3 birimler/cloudflare/mock/keyValue.js
+16 −10 birimler/cloudflare/moduleWorker.d.js
+0 −0 birimler/cloudflare/serviceWorker.d.js
+68 −0 birimler/cloudflare/targets.js
+13 −10 birimler/cloudflare/test/kvPageWorker.test.js
+10 −25 birimler/cloudflare/types.d.js
+0 −0 birimler/cloudflare/uploader.js
+0 −4 birimler/js/sayfa.js
+19 −0 birimler/js/util.js
+7 −2 birimler/okuyucu.js
+8 −0 birimler/sunucu/kanarya.js
+0 −15 cloudflare/pageWorker.d.js
+8 −1 crosschain/chains.js
+58 −25 crosschain/mock/signer.js
+17 −2 crosschain/signer.js
+7 −6 crosschain/test/unlockable.test.js
+13 −17 crosschain/unlockable.js
+18 −0 crypto/bench/sha2.bench.js
+1 −1 crypto/modular.js
+35 −5 crypto/sha2.js
+14 −13 crypto/test/integration.test.js
+17 −0 crypto/test/sha2/compression.test.js
+2 −2 crypto/test/sha2/conformance.test.js
+7 −8 did/sectionSigner.js
+20 −20 did/test/KPass/combine.test.js
+5 −5 did/test/KPass/serialize.test.js
+10 −10 did/test/sectionSigner.test.js
+5 −5 ethereum/KPassLite.js
+25 −0 ethereum/eth.d.js
+6 −58 ethereum/evm.js
+7 −8 ethereum/mock/provider.js
+38 −12 ethereum/mock/signer.js
+60 −0 ethereum/signer.js
+1 −1 ethereum/test/evm.test.js
+15 −14 ethereum/test/signer.test.js
+6 −3 kdjs/compile.js
+1 −0 kdjs/kdjs.js
+6 −4 kdjs/preprocess.js
+4 −52 mina/mina.js
+8 −8 mina/provider.d.js
+84 −0 mina/signer.js
+2 −26 mina/test/mina.test.js
+26 −0 mina/test/signer.test.js
+4 −6 node/ipfs.d.js
+1 −1 node/ipfs.js
+3 −3 package.json
+5 −4 run.js
+4 −4 util/cli.js
+17 −0 util/dom.js
+1 −1 util/hex.js
+19 −0 util/test/cli.test.js
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@
},
"devDependencies": {
"acorn": "^8.12.1",
"acorn-walk": "^8.3.2",
"acorn-walk": "^8.3.3",
"astring": "^1.8.6",
"csso-cli": "^4.0.2",
"express": "^4.18.1",
"express": "^4.19.2",
"google-closure-compiler": "^20240317.0.0",
"html-minifier": "^4.0.0",
"htmlparser2": "^9.1.0",
"svg-pathdata": "^7.0.0",
"svgexport": "^0.4.2",
"svgo": "^3.2.0",
"svgo": "^3.3.2",
"toml": "^3.0.0",
"uglify-js": "^3.19.2",
"vite": "^5.4.2",
"wrangler": "^3.72.1"
"wrangler": "^3.72.2"
}
}
4 changes: 2 additions & 2 deletions sunucu/prod.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { create } from "/lib/cloudflare/pageWorker";
import { create } from "/lib/birimler/cloudflare/kvPageWorker";

/** @define {string} */
const DappUrl = "https://kimlikdao.org/";

/** @const {!cloudflare.ModuleWorker} */
/** @const {!ModuleWorker} */
const ProdWorker = create(DappUrl, {
"?tr": "ana-tr.html",
"?en": "ana-en.html",
Expand Down

0 comments on commit 1e1e4e1

Please sign in to comment.