Skip to content

Commit 69b4fc4

Browse files
authored
signData (#15)
1 parent 232da11 commit 69b4fc4

File tree

3 files changed

+48
-23
lines changed

3 files changed

+48
-23
lines changed

README.md

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,20 @@ Lute Connect is a Javascript library to securely sign transactions with Lute, an
44

55
## Installation
66

7-
The package can be installed via npm:
7+
The package can be installed via your favorite package manager:
88

9-
```bash
9+
```sh
1010
npm i lute-connect
1111
```
1212

13+
```sh
14+
yarn add lute-connect
15+
```
16+
17+
```sh
18+
pnpm add lute-connect
19+
```
20+
1321
## API Usage
1422

1523
### Quick start
@@ -38,7 +46,7 @@ async function connect() {
3846

3947
### Sign transactions
4048

41-
```js
49+
```ts
4250
// Warning: Browser will block pop-up if user doesn't trigger lute.signTxns() with a button click
4351
async function signTransactions(txns) {
4452
try {
@@ -58,26 +66,30 @@ async function signTransactions(txns) {
5866

5967
### Sign data
6068

61-
```js
69+
```ts
6270
// Warning: Browser will block pop-up if user doesn't trigger lute.signData() with a button click
6371
async function authenticate() {
6472
try {
65-
const domain = "arc60.io";
66-
const authenticatorData = new Uint8Array(
67-
createHash("sha256").update(domain).digest()
68-
);
69-
const signingData = {
70-
data: Buffer.from("{[jsonfields....]}").toString("base64"),
71-
signer: publicKey,
72-
domain,
73-
authenticatorData,
73+
const siwxRequest: Siwx = {
74+
domain: location.host,
75+
chain_id: "283",
76+
account_address: activeAccount.value.address,
77+
type: "ed25519",
78+
statement:
79+
"Put your own statement here, for example: I accept the ExampleOrg Terms of Service.",
80+
uri: location.origin,
81+
version: "1",
82+
nonce: Buffer.from(randomBytes(12)).toString("base64"),
83+
"issued-at": new Date().toISOString(),
7484
};
75-
const metadata = {
85+
86+
const data = Buffer.from(JSON.stringify(siwxRequest)).toString("base64");
87+
const metadata: SignMetadata = {
7688
scope: ScopeType.AUTH,
7789
encoding: "base64",
7890
};
79-
const signerResponse = await lute.signData(signingData, metadata);
80-
// TODO: verify signerResponse.signature
91+
const signerResponse = await lute.signData(data, metadata);
92+
// TODO: verify signerResponse
8193
} catch (err) {
8294
console.error(
8395
"[LuteWallet] Error signing data: " +

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lute-connect",
3-
"version": "1.6.0-beta.0",
3+
"version": "1.6.0",
44
"main": "./dist/main.cjs.js",
55
"module": "./dist/main.esm.js",
66
"types": "./dist/main.d.ts",

src/main.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,22 @@ export class SignTxnsError extends Error {
5757
}
5858
}
5959

60+
export interface Siwa {
61+
domain: string;
62+
account_address: string;
63+
uri: string;
64+
version: string;
65+
statement?: string;
66+
nonce?: string;
67+
"issued-at"?: string;
68+
"expiration-time"?: string;
69+
"not-before"?: string;
70+
"request-id"?: string;
71+
chain_id: "283";
72+
resources?: string[];
73+
type: "ed25519";
74+
}
75+
6076
export interface SignData {
6177
data: string;
6278
signer: Uint8Array;
@@ -191,17 +207,14 @@ export default class LuteConnect {
191207
});
192208
}
193209

194-
signData(
195-
signingData: SignData,
196-
metadata: SignMetadata
197-
): Promise<SignDataResponse> {
210+
signData(data: string, metadata: SignMetadata): Promise<SignDataResponse> {
198211
return new Promise(async (resolve, reject) => {
199212
const useExt = this.forceWeb ? false : await this.isExtensionInstalled();
200213
let win: any;
201214
if (useExt) {
202215
window.dispatchEvent(
203216
new CustomEvent("lute-connect", {
204-
detail: { action: "data", signingData, metadata },
217+
detail: { action: "data", data, metadata },
205218
})
206219
);
207220
} else {
@@ -215,7 +228,7 @@ export default class LuteConnect {
215228
if (detail.debug) console.log("[Lute Debug]", detail);
216229
switch (detail.action) {
217230
case "ready":
218-
win?.postMessage({ action: "data", signingData, metadata }, "*");
231+
win?.postMessage({ action: "data", data, metadata }, "*");
219232
break;
220233
case "signed":
221234
window.removeEventListener(type, messageHandler);

0 commit comments

Comments
 (0)