@welshman/signer 0.0.2 → 0.0.3
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/build/src/nip59.cjs +1 -1
- package/build/src/nip59.cjs.map +1 -1
- package/build/src/nip59.d.ts +11 -4
- package/build/src/nip59.mjs +1 -1
- package/build/src/nip59.mjs.map +1 -1
- package/build/src/signers/nip01.cjs +1 -1
- package/build/src/signers/nip01.cjs.map +1 -1
- package/build/src/signers/nip01.d.ts +3 -3
- package/build/src/signers/nip01.mjs +1 -1
- package/build/src/signers/nip01.mjs.map +1 -1
- package/build/src/signers/nip07.cjs +1 -1
- package/build/src/signers/nip07.cjs.map +1 -1
- package/build/src/signers/nip07.d.ts +2 -2
- package/build/src/signers/nip07.mjs +1 -1
- package/build/src/signers/nip07.mjs.map +1 -1
- package/build/src/signers/nip46.cjs +94 -93
- package/build/src/signers/nip46.cjs.map +1 -1
- package/build/src/signers/nip46.d.ts +16 -14
- package/build/src/signers/nip46.mjs +96 -95
- package/build/src/signers/nip46.mjs.map +1 -1
- package/build/src/util.cjs +4 -2
- package/build/src/util.cjs.map +1 -1
- package/build/src/util.d.ts +18 -5
- package/build/src/util.mjs +3 -2
- package/build/src/util.mjs.map +1 -1
- package/package.json +5 -4
package/build/src/nip59.cjs
CHANGED
|
@@ -7,7 +7,7 @@ const nip01_1 = require("./signers/nip01.cjs");
|
|
|
7
7
|
exports.seen = new Map();
|
|
8
8
|
const now = (drift = 0) => Math.round(Date.now() / 1000 - Math.random() * Math.pow(10, drift));
|
|
9
9
|
exports.now = now;
|
|
10
|
-
const getRumor = async (signer, template) => (0, util_2.hash)((0, util_2.own)(await signer.getPubkey()
|
|
10
|
+
const getRumor = async (signer, template) => (0, util_2.hash)((0, util_2.own)(template, await signer.getPubkey()));
|
|
11
11
|
exports.getRumor = getRumor;
|
|
12
12
|
const getSeal = async (signer, pubkey, rumor) => signer.sign((0, util_2.hash)({
|
|
13
13
|
kind: util_1.SEAL,
|
package/build/src/nip59.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip59.cjs","sourceRoot":"","sources":["../../src/nip59.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"nip59.cjs","sourceRoot":"","sources":["../../src/nip59.ts"],"names":[],"mappings":"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"}
|
package/build/src/nip59.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { UnwrappedEvent, SignedEvent, HashedEvent,
|
|
1
|
+
import { UnwrappedEvent, SignedEvent, HashedEvent, StampedEvent } from '@welshman/util';
|
|
2
2
|
import { ISigner } from './util';
|
|
3
3
|
export declare const seen: Map<string, UnwrappedEvent | Error>;
|
|
4
4
|
export declare const now: (drift?: number) => number;
|
|
5
|
-
export declare const getRumor: (signer: ISigner, template:
|
|
5
|
+
export declare const getRumor: (signer: ISigner, template: StampedEvent) => Promise<{
|
|
6
|
+
id: string;
|
|
7
|
+
tags: string[][];
|
|
8
|
+
content: string;
|
|
9
|
+
kind: number;
|
|
10
|
+
created_at: number;
|
|
11
|
+
pubkey: string;
|
|
12
|
+
}>;
|
|
6
13
|
export declare const getSeal: (signer: ISigner, pubkey: string, rumor: HashedEvent) => Promise<SignedEvent>;
|
|
7
14
|
export declare const getWrap: (wrapper: ISigner, pubkey: string, seal: SignedEvent, tags: string[][]) => Promise<SignedEvent>;
|
|
8
|
-
export declare const wrap: (signer: ISigner, wrapper: ISigner, pubkey: string, template:
|
|
15
|
+
export declare const wrap: (signer: ISigner, wrapper: ISigner, pubkey: string, template: StampedEvent, tags?: string[][]) => Promise<UnwrappedEvent>;
|
|
9
16
|
export declare const unwrap: (signer: ISigner, wrap: SignedEvent) => Promise<UnwrappedEvent | undefined>;
|
|
10
17
|
export declare class Nip59 {
|
|
11
18
|
private signer;
|
|
@@ -14,6 +21,6 @@ export declare class Nip59 {
|
|
|
14
21
|
static fromSigner: (signer: ISigner) => Nip59;
|
|
15
22
|
static fromSecret: (secret: string) => Nip59;
|
|
16
23
|
withWrapper: (wrapper: ISigner) => Nip59;
|
|
17
|
-
wrap: (pubkey: string, template:
|
|
24
|
+
wrap: (pubkey: string, template: StampedEvent, tags?: string[][]) => Promise<UnwrappedEvent>;
|
|
18
25
|
unwrap: (event: SignedEvent) => Promise<UnwrappedEvent | undefined>;
|
|
19
26
|
}
|
package/build/src/nip59.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { own, hash, decrypt } from "./util.mjs";
|
|
|
3
3
|
import { Nip01Signer } from "./signers/nip01.mjs";
|
|
4
4
|
export const seen = new Map();
|
|
5
5
|
export const now = (drift = 0) => Math.round(Date.now() / 1000 - Math.random() * Math.pow(10, drift));
|
|
6
|
-
export const getRumor = async (signer, template) => hash(own(await signer.getPubkey()
|
|
6
|
+
export const getRumor = async (signer, template) => hash(own(template, await signer.getPubkey()));
|
|
7
7
|
export const getSeal = async (signer, pubkey, rumor) => signer.sign(hash({
|
|
8
8
|
kind: SEAL,
|
|
9
9
|
pubkey: await signer.getPubkey(),
|
package/build/src/nip59.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip59.mjs","sourceRoot":"","sources":["../../src/nip59.ts"],"names":[],"mappings":"OAAO,
|
|
1
|
+
{"version":3,"file":"nip59.mjs","sourceRoot":"","sources":["../../src/nip59.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ class Nip01Signer {
|
|
|
6
6
|
constructor(secret) {
|
|
7
7
|
this.secret = secret;
|
|
8
8
|
this.getPubkey = async () => this.pubkey;
|
|
9
|
-
this.sign = async (event) => (0, util_1.sign)((0, util_1.hash)((0, util_1.own)(this.pubkey
|
|
9
|
+
this.sign = async (event) => (0, util_1.sign)((0, util_1.hash)((0, util_1.own)(event, this.pubkey)), this.secret);
|
|
10
10
|
this.nip04 = {
|
|
11
11
|
encrypt: async (pubkey, message) => util_1.nip04.encrypt(pubkey, this.secret, message),
|
|
12
12
|
decrypt: async (pubkey, message) => util_1.nip04.decrypt(pubkey, this.secret, message),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip01.cjs","sourceRoot":"","sources":["../../../src/signers/nip01.ts"],"names":[],"mappings":";;;AACA,sCAAqF;AAErF,MAAa,WAAW;IAGtB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAQlC,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;QAEnC,SAAI,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nip01.cjs","sourceRoot":"","sources":["../../../src/signers/nip01.ts"],"names":[],"mappings":";;;AACA,sCAAqF;AAErF,MAAa,WAAW;IAGtB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAQlC,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;QAEnC,SAAI,GAAG,KAAK,EAAE,KAAmB,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,IAAA,UAAG,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEtF,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,YAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,YAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,YAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,YAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAvBC,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;;AALH,kCA4BC;AArBQ,sBAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,AAA9C,CAA8C;AAExD,qBAAS,GAAG,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,IAAA,iBAAU,GAAE,CAAC,AAAtC,CAAsC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StampedEvent } from '@welshman/util';
|
|
2
2
|
import { ISigner } from "../util";
|
|
3
3
|
export declare class Nip01Signer implements ISigner {
|
|
4
4
|
private secret;
|
|
@@ -7,11 +7,11 @@ export declare class Nip01Signer implements ISigner {
|
|
|
7
7
|
static fromSecret: (secret: string) => Nip01Signer;
|
|
8
8
|
static ephemeral: () => Nip01Signer;
|
|
9
9
|
getPubkey: () => Promise<string>;
|
|
10
|
-
sign: (event:
|
|
10
|
+
sign: (event: StampedEvent) => Promise<{
|
|
11
11
|
sig: string;
|
|
12
|
-
kind: number;
|
|
13
12
|
tags: string[][];
|
|
14
13
|
content: string;
|
|
14
|
+
kind: number;
|
|
15
15
|
created_at: number;
|
|
16
16
|
pubkey: string;
|
|
17
17
|
id: string;
|
|
@@ -3,7 +3,7 @@ export class Nip01Signer {
|
|
|
3
3
|
constructor(secret) {
|
|
4
4
|
this.secret = secret;
|
|
5
5
|
this.getPubkey = async () => this.pubkey;
|
|
6
|
-
this.sign = async (event) => sign(hash(own(this.pubkey
|
|
6
|
+
this.sign = async (event) => sign(hash(own(event, this.pubkey)), this.secret);
|
|
7
7
|
this.nip04 = {
|
|
8
8
|
encrypt: async (pubkey, message) => nip04.encrypt(pubkey, this.secret, message),
|
|
9
9
|
decrypt: async (pubkey, message) => nip04.decrypt(pubkey, this.secret, message),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip01.mjs","sourceRoot":"","sources":["../../../src/signers/nip01.ts"],"names":[],"mappings":"OACO,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAW,UAAU,EAAC;AAEtE,MAAM,OAAO,WAAW;IAGtB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAQlC,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;QAEnC,SAAI,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nip01.mjs","sourceRoot":"","sources":["../../../src/signers/nip01.ts"],"names":[],"mappings":"OACO,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAW,UAAU,EAAC;AAEtE,MAAM,OAAO,WAAW;IAGtB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAQlC,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;QAEnC,SAAI,GAAG,KAAK,EAAE,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEtF,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAvBC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;;AAEM,sBAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,AAA9C,CAA8C;AAExD,qBAAS,GAAG,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,AAAtC,CAAsC"}
|
|
@@ -32,7 +32,7 @@ class Nip07Signer {
|
|
|
32
32
|
});
|
|
33
33
|
this.getPubkey = async () => (0, exports.getNip07)().getPublicKey();
|
|
34
34
|
this.sign = async (template) => {
|
|
35
|
-
const event = (0, util_1.hash)((0, util_1.own)(await this.getPubkey()
|
|
35
|
+
const event = (0, util_1.hash)((0, util_1.own)(template, await this.getPubkey()));
|
|
36
36
|
return __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.signEvent(event));
|
|
37
37
|
};
|
|
38
38
|
this.nip04 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip07.cjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sCAA0E;AASnE,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAAlD,QAAA,QAAQ,YAA0C;AAE/D,MAAa,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,IAAA,gBAAQ,GAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAA,gBAAQ,GAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nip07.cjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sCAA0E;AASnE,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAAlD,QAAA,QAAQ,YAA0C;AAE/D,MAAa,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,IAAA,gBAAQ,GAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAA,gBAAQ,GAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,QAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,IAAA,UAAG,EAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAEzD,OAAO,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;IACH,CAAC;CAAA;AAvCD,kCAuCC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StampedEvent } from '@welshman/util';
|
|
2
2
|
import { Sign, ISigner, EncryptionImplementation } from '../util';
|
|
3
3
|
export type Nip07 = {
|
|
4
4
|
signEvent: Sign;
|
|
@@ -10,7 +10,7 @@ export declare const getNip07: () => Nip07 | undefined;
|
|
|
10
10
|
export declare class Nip07Signer implements ISigner {
|
|
11
11
|
#private;
|
|
12
12
|
getPubkey: () => Promise<string>;
|
|
13
|
-
sign: (template:
|
|
13
|
+
sign: (template: StampedEvent) => Promise<import("@welshman/util").SignedEvent>;
|
|
14
14
|
nip04: {
|
|
15
15
|
encrypt: (pubkey: string, message: string) => Promise<string>;
|
|
16
16
|
decrypt: (pubkey: string, message: string) => Promise<string>;
|
|
@@ -28,7 +28,7 @@ export class Nip07Signer {
|
|
|
28
28
|
});
|
|
29
29
|
this.getPubkey = async () => getNip07().getPublicKey();
|
|
30
30
|
this.sign = async (template) => {
|
|
31
|
-
const event = hash(own(await this.getPubkey()
|
|
31
|
+
const event = hash(own(template, await this.getPubkey()));
|
|
32
32
|
return __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.signEvent(event));
|
|
33
33
|
};
|
|
34
34
|
this.nip04 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip07.mjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;OACO,EAAC,IAAI,EAAE,GAAG,EAA0C;AAS3D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAE/D,MAAM,OAAO,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nip07.mjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;OACO,EAAC,IAAI,EAAE,GAAG,EAA0C;AAS3D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAE/D,MAAM,OAAO,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,QAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAEzD,OAAO,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;IACH,CAAC;CAAA"}
|
|
@@ -21,118 +21,119 @@ const net_1 = require("@welshman/net");
|
|
|
21
21
|
const util_2 = require("../util.cjs");
|
|
22
22
|
const nip01_1 = require("./nip01.cjs");
|
|
23
23
|
let singleton;
|
|
24
|
-
// FIXME set the full list of requested perms
|
|
25
|
-
const Perms = "nip04_encrypt,nip04_decrypt,sign_event:0,sign_event:1,sign_event:4,sign_event:6,sign_event:7";
|
|
26
24
|
class Nip46Broker extends lib_1.Emitter {
|
|
27
|
-
static get(pubkey, secret, handler) {
|
|
25
|
+
static get(pubkey, secret, handler, algorithm = "nip04") {
|
|
28
26
|
if ((singleton === null || singleton === void 0 ? void 0 : singleton.pubkey) !== pubkey ||
|
|
29
27
|
(singleton === null || singleton === void 0 ? void 0 : singleton.secret) !== secret ||
|
|
30
|
-
!(0, lib_1.equals)(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler)
|
|
28
|
+
!(0, lib_1.equals)(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler) ||
|
|
29
|
+
(singleton === null || singleton === void 0 ? void 0 : singleton.algorithm) !== algorithm) {
|
|
31
30
|
singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
|
|
32
|
-
singleton = new Nip46Broker(pubkey, secret, handler);
|
|
31
|
+
singleton = new Nip46Broker(pubkey, secret, handler, algorithm);
|
|
33
32
|
}
|
|
34
33
|
return singleton;
|
|
35
34
|
}
|
|
36
|
-
constructor(pubkey, secret, handler) {
|
|
35
|
+
constructor(pubkey, secret, handler, algorithm) {
|
|
37
36
|
super();
|
|
38
37
|
this.pubkey = pubkey;
|
|
39
38
|
this.secret = secret;
|
|
40
39
|
this.handler = handler;
|
|
40
|
+
this.algorithm = algorithm;
|
|
41
41
|
_Nip46Broker_sub.set(this, void 0);
|
|
42
42
|
_Nip46Broker_signer.set(this, void 0);
|
|
43
43
|
_Nip46Broker_ready.set(this, (0, lib_1.sleep)(500));
|
|
44
44
|
_Nip46Broker_closed.set(this, false);
|
|
45
45
|
_Nip46Broker_connectResult.set(this, void 0);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
if (res.result === "auth_url") {
|
|
67
|
-
this.emit(`auth-${res.id}`, res);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this.emit(`res-${res.id}`, res);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
sub.emitter.on("complete", () => {
|
|
74
|
-
if (!__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
|
|
75
|
-
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
return sub;
|
|
79
|
-
}
|
|
80
|
-
async request(method, params, admin = false) {
|
|
81
|
-
// nsecbunker has a race condition
|
|
82
|
-
await __classPrivateFieldGet(this, _Nip46Broker_ready, "f");
|
|
83
|
-
const id = (0, lib_1.randomId)();
|
|
84
|
-
const pubkey = admin ? this.handler.pubkey : this.pubkey;
|
|
85
|
-
const payload = JSON.stringify({ id, method, params });
|
|
86
|
-
const content = await nostr_tools_1.nip04.encrypt(this.secret, pubkey, payload);
|
|
87
|
-
const template = (0, util_1.createEvent)(util_1.NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
|
|
88
|
-
const event = (0, nostr_tools_1.finalizeEvent)(template, this.secret);
|
|
89
|
-
(0, net_1.publish)({ event, relays: this.handler.relays });
|
|
90
|
-
this.once(`auth-${id}`, res => {
|
|
91
|
-
window.open(res.result, "Coracle", "width=600,height=800,popup=yes");
|
|
92
|
-
});
|
|
93
|
-
return new Promise((resolve, reject) => {
|
|
94
|
-
this.once(`res-${id}`, ({ result, error }) => {
|
|
95
|
-
if (error) {
|
|
96
|
-
reject(error);
|
|
46
|
+
this.subscribe = () => {
|
|
47
|
+
const sub = (0, net_1.subscribe)({
|
|
48
|
+
relays: this.handler.relays,
|
|
49
|
+
filters: [
|
|
50
|
+
{
|
|
51
|
+
since: (0, lib_1.now)() - 30,
|
|
52
|
+
kinds: [util_1.NOSTR_CONNECT],
|
|
53
|
+
"#p": [(0, nostr_tools_1.getPublicKey)((0, utils_1.hexToBytes)(this.secret))],
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
});
|
|
57
|
+
sub.emitter.on("event", async (url, e) => {
|
|
58
|
+
const json = await (0, util_2.decrypt)(__classPrivateFieldGet(this, _Nip46Broker_signer, "f"), e.pubkey, e.content);
|
|
59
|
+
const res = await (0, lib_1.tryCatch)(() => JSON.parse(json));
|
|
60
|
+
if (!res.id) {
|
|
61
|
+
console.error(`Invalid nostr-connect response: ${json}`);
|
|
62
|
+
}
|
|
63
|
+
if (res.result === "auth_url") {
|
|
64
|
+
this.emit(`auth-${res.id}`, res);
|
|
97
65
|
}
|
|
98
66
|
else {
|
|
99
|
-
|
|
67
|
+
this.emit(`res-${res.id}`, res);
|
|
100
68
|
}
|
|
101
69
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
70
|
+
sub.emitter.on("complete", () => {
|
|
71
|
+
if (!__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
|
|
72
|
+
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return sub;
|
|
76
|
+
};
|
|
77
|
+
this.request = async (method, params, admin = false) => {
|
|
78
|
+
// nsecbunker has a race condition
|
|
79
|
+
await __classPrivateFieldGet(this, _Nip46Broker_ready, "f");
|
|
80
|
+
const id = (0, lib_1.randomId)();
|
|
81
|
+
const pubkey = admin ? this.handler.pubkey : this.pubkey;
|
|
82
|
+
const payload = JSON.stringify({ id, method, params });
|
|
83
|
+
const crypt = this.algorithm === "nip04" ? util_2.nip04 : util_2.nip44;
|
|
84
|
+
const content = await crypt.encrypt(pubkey, this.secret, payload);
|
|
85
|
+
const template = (0, util_1.createEvent)(util_1.NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
|
|
86
|
+
const event = (0, nostr_tools_1.finalizeEvent)(template, this.secret);
|
|
87
|
+
(0, net_1.publish)({ event, relays: this.handler.relays });
|
|
88
|
+
this.once(`auth-${id}`, res => {
|
|
89
|
+
window.open(res.error, "Coracle", "width=600,height=800,popup=yes");
|
|
90
|
+
});
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
this.once(`res-${id}`, ({ result, error }) => {
|
|
93
|
+
if (error) {
|
|
94
|
+
reject(error);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
resolve(result);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
this.createAccount = (username, perms = "") => {
|
|
103
|
+
if (!this.handler.domain) {
|
|
104
|
+
throw new Error("Unable to create an account without a handler domain");
|
|
105
|
+
}
|
|
106
|
+
return this.request("create_account", [username, this.handler.domain, "", perms], true);
|
|
107
|
+
};
|
|
108
|
+
this.connect = async (token = "", perms = "") => {
|
|
109
|
+
if (!__classPrivateFieldGet(this, _Nip46Broker_connectResult, "f")) {
|
|
110
|
+
const params = [this.pubkey, token, perms];
|
|
111
|
+
__classPrivateFieldSet(this, _Nip46Broker_connectResult, await this.request("connect", params), "f");
|
|
112
|
+
}
|
|
113
|
+
return __classPrivateFieldGet(this, _Nip46Broker_connectResult, "f") === "ack";
|
|
114
|
+
};
|
|
115
|
+
this.signEvent = async (event) => {
|
|
116
|
+
return JSON.parse(await this.request("sign_event", [JSON.stringify(event)]));
|
|
117
|
+
};
|
|
118
|
+
this.nip04Encrypt = (pk, message) => {
|
|
119
|
+
return this.request("nip04_encrypt", [pk, message]);
|
|
120
|
+
};
|
|
121
|
+
this.nip04Decrypt = (pk, message) => {
|
|
122
|
+
return this.request("nip04_decrypt", [pk, message]);
|
|
123
|
+
};
|
|
124
|
+
this.nip44Encrypt = (pk, message) => {
|
|
125
|
+
return this.request("nip44_encrypt", [pk, message]);
|
|
126
|
+
};
|
|
127
|
+
this.nip44Decrypt = (pk, message) => {
|
|
128
|
+
return this.request("nip44_decrypt", [pk, message]);
|
|
129
|
+
};
|
|
130
|
+
this.teardown = () => {
|
|
131
|
+
var _a;
|
|
132
|
+
__classPrivateFieldSet(this, _Nip46Broker_closed, true, "f");
|
|
133
|
+
(_a = __classPrivateFieldGet(this, _Nip46Broker_sub, "f")) === null || _a === void 0 ? void 0 : _a.close();
|
|
134
|
+
};
|
|
135
|
+
__classPrivateFieldSet(this, _Nip46Broker_signer, new nip01_1.Nip01Signer(secret), "f");
|
|
136
|
+
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
136
137
|
}
|
|
137
138
|
}
|
|
138
139
|
exports.Nip46Broker = Nip46Broker;
|
|
@@ -141,7 +142,7 @@ class Nip46Signer {
|
|
|
141
142
|
constructor(broker) {
|
|
142
143
|
this.broker = broker;
|
|
143
144
|
this.getPubkey = async () => this.broker.pubkey;
|
|
144
|
-
this.sign = (
|
|
145
|
+
this.sign = (template) => this.broker.signEvent((0, util_2.hash)((0, util_2.own)(template, this.broker.pubkey)));
|
|
145
146
|
this.nip04 = {
|
|
146
147
|
encrypt: this.broker.nip04Encrypt,
|
|
147
148
|
decrypt: this.broker.nip04Decrypt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip46.cjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"nip46.cjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Emitter } from "@welshman/lib";
|
|
2
|
-
import {
|
|
2
|
+
import { StampedEvent } from "@welshman/util";
|
|
3
3
|
import { Subscription } from "@welshman/net";
|
|
4
4
|
import { ISigner } from '../util';
|
|
5
|
+
export type Algorithm = "nip04" | "nip44";
|
|
5
6
|
export type Nip46Handler = {
|
|
6
7
|
relays: string[];
|
|
7
8
|
pubkey?: string;
|
|
@@ -17,24 +18,25 @@ export declare class Nip46Broker extends Emitter {
|
|
|
17
18
|
readonly pubkey: string;
|
|
18
19
|
readonly secret: string;
|
|
19
20
|
readonly handler: Nip46Handler;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
readonly algorithm: Algorithm;
|
|
22
|
+
static get(pubkey: string, secret: string, handler: Nip46Handler, algorithm?: Algorithm): Nip46Broker;
|
|
23
|
+
constructor(pubkey: string, secret: string, handler: Nip46Handler, algorithm: Algorithm);
|
|
24
|
+
subscribe: () => Subscription;
|
|
25
|
+
request: (method: string, params: string[], admin?: boolean) => Promise<string>;
|
|
26
|
+
createAccount: (username: string, perms?: string) => Promise<string>;
|
|
27
|
+
connect: (token?: string, perms?: string) => Promise<boolean>;
|
|
28
|
+
signEvent: (event: StampedEvent) => Promise<any>;
|
|
29
|
+
nip04Encrypt: (pk: string, message: string) => Promise<string>;
|
|
30
|
+
nip04Decrypt: (pk: string, message: string) => Promise<string>;
|
|
31
|
+
nip44Encrypt: (pk: string, message: string) => Promise<string>;
|
|
32
|
+
nip44Decrypt: (pk: string, message: string) => Promise<string>;
|
|
33
|
+
teardown: () => void;
|
|
32
34
|
}
|
|
33
35
|
export declare class Nip46Signer implements ISigner {
|
|
34
36
|
private broker;
|
|
35
37
|
constructor(broker: Nip46Broker);
|
|
36
38
|
getPubkey: () => Promise<string>;
|
|
37
|
-
sign: (
|
|
39
|
+
sign: (template: StampedEvent) => Promise<any>;
|
|
38
40
|
nip04: {
|
|
39
41
|
encrypt: (pk: string, message: string) => Promise<string>;
|
|
40
42
|
decrypt: (pk: string, message: string) => Promise<string>;
|
|
@@ -10,126 +10,127 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
12
|
var _Nip46Broker_sub, _Nip46Broker_signer, _Nip46Broker_ready, _Nip46Broker_closed, _Nip46Broker_connectResult;
|
|
13
|
-
import {
|
|
13
|
+
import { finalizeEvent, getPublicKey } from "nostr-tools";
|
|
14
14
|
import { hexToBytes } from '@noble/hashes/utils';
|
|
15
15
|
import { Emitter, tryCatch, randomId, sleep, equals, now } from "@welshman/lib";
|
|
16
16
|
import { createEvent, NOSTR_CONNECT } from "@welshman/util";
|
|
17
17
|
import { subscribe, publish } from "@welshman/net";
|
|
18
|
-
import { decrypt } from "../util.mjs";
|
|
18
|
+
import { nip04, nip44, decrypt, hash, own } from "../util.mjs";
|
|
19
19
|
import { Nip01Signer } from "./nip01.mjs";
|
|
20
20
|
let singleton;
|
|
21
|
-
// FIXME set the full list of requested perms
|
|
22
|
-
const Perms = "nip04_encrypt,nip04_decrypt,sign_event:0,sign_event:1,sign_event:4,sign_event:6,sign_event:7";
|
|
23
21
|
export class Nip46Broker extends Emitter {
|
|
24
|
-
static get(pubkey, secret, handler) {
|
|
22
|
+
static get(pubkey, secret, handler, algorithm = "nip04") {
|
|
25
23
|
if ((singleton === null || singleton === void 0 ? void 0 : singleton.pubkey) !== pubkey ||
|
|
26
24
|
(singleton === null || singleton === void 0 ? void 0 : singleton.secret) !== secret ||
|
|
27
|
-
!equals(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler)
|
|
25
|
+
!equals(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler) ||
|
|
26
|
+
(singleton === null || singleton === void 0 ? void 0 : singleton.algorithm) !== algorithm) {
|
|
28
27
|
singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
|
|
29
|
-
singleton = new Nip46Broker(pubkey, secret, handler);
|
|
28
|
+
singleton = new Nip46Broker(pubkey, secret, handler, algorithm);
|
|
30
29
|
}
|
|
31
30
|
return singleton;
|
|
32
31
|
}
|
|
33
|
-
constructor(pubkey, secret, handler) {
|
|
32
|
+
constructor(pubkey, secret, handler, algorithm) {
|
|
34
33
|
super();
|
|
35
34
|
this.pubkey = pubkey;
|
|
36
35
|
this.secret = secret;
|
|
37
36
|
this.handler = handler;
|
|
37
|
+
this.algorithm = algorithm;
|
|
38
38
|
_Nip46Broker_sub.set(this, void 0);
|
|
39
39
|
_Nip46Broker_signer.set(this, void 0);
|
|
40
40
|
_Nip46Broker_ready.set(this, sleep(500));
|
|
41
41
|
_Nip46Broker_closed.set(this, false);
|
|
42
42
|
_Nip46Broker_connectResult.set(this, void 0);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
if (res.result === "auth_url") {
|
|
64
|
-
this.emit(`auth-${res.id}`, res);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this.emit(`res-${res.id}`, res);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
sub.emitter.on("complete", () => {
|
|
71
|
-
if (!__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
|
|
72
|
-
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
return sub;
|
|
76
|
-
}
|
|
77
|
-
async request(method, params, admin = false) {
|
|
78
|
-
// nsecbunker has a race condition
|
|
79
|
-
await __classPrivateFieldGet(this, _Nip46Broker_ready, "f");
|
|
80
|
-
const id = randomId();
|
|
81
|
-
const pubkey = admin ? this.handler.pubkey : this.pubkey;
|
|
82
|
-
const payload = JSON.stringify({ id, method, params });
|
|
83
|
-
const content = await nip04.encrypt(this.secret, pubkey, payload);
|
|
84
|
-
const template = createEvent(NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
|
|
85
|
-
const event = finalizeEvent(template, this.secret);
|
|
86
|
-
publish({ event, relays: this.handler.relays });
|
|
87
|
-
this.once(`auth-${id}`, res => {
|
|
88
|
-
window.open(res.result, "Coracle", "width=600,height=800,popup=yes");
|
|
89
|
-
});
|
|
90
|
-
return new Promise((resolve, reject) => {
|
|
91
|
-
this.once(`res-${id}`, ({ result, error }) => {
|
|
92
|
-
if (error) {
|
|
93
|
-
reject(error);
|
|
43
|
+
this.subscribe = () => {
|
|
44
|
+
const sub = subscribe({
|
|
45
|
+
relays: this.handler.relays,
|
|
46
|
+
filters: [
|
|
47
|
+
{
|
|
48
|
+
since: now() - 30,
|
|
49
|
+
kinds: [NOSTR_CONNECT],
|
|
50
|
+
"#p": [getPublicKey(hexToBytes(this.secret))],
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
sub.emitter.on("event", async (url, e) => {
|
|
55
|
+
const json = await decrypt(__classPrivateFieldGet(this, _Nip46Broker_signer, "f"), e.pubkey, e.content);
|
|
56
|
+
const res = await tryCatch(() => JSON.parse(json));
|
|
57
|
+
if (!res.id) {
|
|
58
|
+
console.error(`Invalid nostr-connect response: ${json}`);
|
|
59
|
+
}
|
|
60
|
+
if (res.result === "auth_url") {
|
|
61
|
+
this.emit(`auth-${res.id}`, res);
|
|
94
62
|
}
|
|
95
63
|
else {
|
|
96
|
-
|
|
64
|
+
this.emit(`res-${res.id}`, res);
|
|
97
65
|
}
|
|
98
66
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
67
|
+
sub.emitter.on("complete", () => {
|
|
68
|
+
if (!__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
|
|
69
|
+
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return sub;
|
|
73
|
+
};
|
|
74
|
+
this.request = async (method, params, admin = false) => {
|
|
75
|
+
// nsecbunker has a race condition
|
|
76
|
+
await __classPrivateFieldGet(this, _Nip46Broker_ready, "f");
|
|
77
|
+
const id = randomId();
|
|
78
|
+
const pubkey = admin ? this.handler.pubkey : this.pubkey;
|
|
79
|
+
const payload = JSON.stringify({ id, method, params });
|
|
80
|
+
const crypt = this.algorithm === "nip04" ? nip04 : nip44;
|
|
81
|
+
const content = await crypt.encrypt(pubkey, this.secret, payload);
|
|
82
|
+
const template = createEvent(NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
|
|
83
|
+
const event = finalizeEvent(template, this.secret);
|
|
84
|
+
publish({ event, relays: this.handler.relays });
|
|
85
|
+
this.once(`auth-${id}`, res => {
|
|
86
|
+
window.open(res.error, "Coracle", "width=600,height=800,popup=yes");
|
|
87
|
+
});
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
this.once(`res-${id}`, ({ result, error }) => {
|
|
90
|
+
if (error) {
|
|
91
|
+
reject(error);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
resolve(result);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
this.createAccount = (username, perms = "") => {
|
|
100
|
+
if (!this.handler.domain) {
|
|
101
|
+
throw new Error("Unable to create an account without a handler domain");
|
|
102
|
+
}
|
|
103
|
+
return this.request("create_account", [username, this.handler.domain, "", perms], true);
|
|
104
|
+
};
|
|
105
|
+
this.connect = async (token = "", perms = "") => {
|
|
106
|
+
if (!__classPrivateFieldGet(this, _Nip46Broker_connectResult, "f")) {
|
|
107
|
+
const params = [this.pubkey, token, perms];
|
|
108
|
+
__classPrivateFieldSet(this, _Nip46Broker_connectResult, await this.request("connect", params), "f");
|
|
109
|
+
}
|
|
110
|
+
return __classPrivateFieldGet(this, _Nip46Broker_connectResult, "f") === "ack";
|
|
111
|
+
};
|
|
112
|
+
this.signEvent = async (event) => {
|
|
113
|
+
return JSON.parse(await this.request("sign_event", [JSON.stringify(event)]));
|
|
114
|
+
};
|
|
115
|
+
this.nip04Encrypt = (pk, message) => {
|
|
116
|
+
return this.request("nip04_encrypt", [pk, message]);
|
|
117
|
+
};
|
|
118
|
+
this.nip04Decrypt = (pk, message) => {
|
|
119
|
+
return this.request("nip04_decrypt", [pk, message]);
|
|
120
|
+
};
|
|
121
|
+
this.nip44Encrypt = (pk, message) => {
|
|
122
|
+
return this.request("nip44_encrypt", [pk, message]);
|
|
123
|
+
};
|
|
124
|
+
this.nip44Decrypt = (pk, message) => {
|
|
125
|
+
return this.request("nip44_decrypt", [pk, message]);
|
|
126
|
+
};
|
|
127
|
+
this.teardown = () => {
|
|
128
|
+
var _a;
|
|
129
|
+
__classPrivateFieldSet(this, _Nip46Broker_closed, true, "f");
|
|
130
|
+
(_a = __classPrivateFieldGet(this, _Nip46Broker_sub, "f")) === null || _a === void 0 ? void 0 : _a.close();
|
|
131
|
+
};
|
|
132
|
+
__classPrivateFieldSet(this, _Nip46Broker_signer, new Nip01Signer(secret), "f");
|
|
133
|
+
__classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
136
|
_Nip46Broker_sub = new WeakMap(), _Nip46Broker_signer = new WeakMap(), _Nip46Broker_ready = new WeakMap(), _Nip46Broker_closed = new WeakMap(), _Nip46Broker_connectResult = new WeakMap();
|
|
@@ -137,7 +138,7 @@ export class Nip46Signer {
|
|
|
137
138
|
constructor(broker) {
|
|
138
139
|
this.broker = broker;
|
|
139
140
|
this.getPubkey = async () => this.broker.pubkey;
|
|
140
|
-
this.sign = (
|
|
141
|
+
this.sign = (template) => this.broker.signEvent(hash(own(template, this.broker.pubkey)));
|
|
141
142
|
this.nip04 = {
|
|
142
143
|
encrypt: this.broker.nip04Encrypt,
|
|
143
144
|
decrypt: this.broker.nip04Decrypt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip46.mjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":";;;;;;;;;;;;OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"nip46.mjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}
|
package/build/src/util.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decrypt = exports.nip44 = exports.nip04 = exports.sign = exports.hash = exports.own = exports.getSig = exports.getHash = exports.getPubkey = exports.makeSecret = void 0;
|
|
3
|
+
exports.decrypt = exports.nip44 = exports.nip04 = exports.sign = exports.hash = exports.own = exports.stamp = exports.getSig = exports.getHash = exports.getPubkey = exports.makeSecret = void 0;
|
|
4
4
|
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
5
5
|
const utils_1 = require("@noble/hashes/utils");
|
|
6
6
|
const nostr_tools_1 = require("nostr-tools");
|
|
@@ -13,7 +13,9 @@ const getHash = (event) => (0, nostr_tools_1.getEventHash)(event);
|
|
|
13
13
|
exports.getHash = getHash;
|
|
14
14
|
const getSig = (event, secret) => (0, utils_1.bytesToHex)(secp256k1_1.schnorr.sign(event.id, secret));
|
|
15
15
|
exports.getSig = getSig;
|
|
16
|
-
const
|
|
16
|
+
const stamp = (event, created_at = (0, lib_1.now)()) => ({ ...event, created_at });
|
|
17
|
+
exports.stamp = stamp;
|
|
18
|
+
const own = (event, pubkey) => ({ ...event, pubkey });
|
|
17
19
|
exports.own = own;
|
|
18
20
|
const hash = (event) => ({ ...event, id: (0, exports.getHash)(event) });
|
|
19
21
|
exports.hash = hash;
|
package/build/src/util.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.cjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":";;;AAAA,uDAA+C;AAC/C,+CAA0D;AAC1D,6CAAuG;AACvG,
|
|
1
|
+
{"version":3,"file":"util.cjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/build/src/util.d.ts
CHANGED
|
@@ -1,21 +1,34 @@
|
|
|
1
|
-
import { SignedEvent, HashedEvent, EventTemplate, OwnedEvent } from '@welshman/util';
|
|
1
|
+
import { SignedEvent, HashedEvent, EventTemplate, StampedEvent, OwnedEvent } from '@welshman/util';
|
|
2
2
|
export declare const makeSecret: () => string;
|
|
3
3
|
export declare const getPubkey: (secret: string) => string;
|
|
4
4
|
export declare const getHash: (event: OwnedEvent) => string;
|
|
5
5
|
export declare const getSig: (event: HashedEvent, secret: string) => string;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const stamp: (event: EventTemplate, created_at?: number) => {
|
|
7
|
+
created_at: number;
|
|
8
|
+
tags: string[][];
|
|
9
|
+
content: string;
|
|
10
|
+
kind: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const own: (event: StampedEvent, pubkey: string) => {
|
|
7
13
|
pubkey: string;
|
|
14
|
+
tags: string[][];
|
|
15
|
+
content: string;
|
|
8
16
|
kind: number;
|
|
17
|
+
created_at: number;
|
|
18
|
+
};
|
|
19
|
+
export declare const hash: (event: OwnedEvent) => {
|
|
20
|
+
id: string;
|
|
9
21
|
tags: string[][];
|
|
10
22
|
content: string;
|
|
23
|
+
kind: number;
|
|
11
24
|
created_at: number;
|
|
25
|
+
pubkey: string;
|
|
12
26
|
};
|
|
13
|
-
export declare const hash: (event: OwnedEvent) => HashedEvent;
|
|
14
27
|
export declare const sign: (event: HashedEvent, secret: string) => {
|
|
15
28
|
sig: string;
|
|
16
|
-
kind: number;
|
|
17
29
|
tags: string[][];
|
|
18
30
|
content: string;
|
|
31
|
+
kind: number;
|
|
19
32
|
created_at: number;
|
|
20
33
|
pubkey: string;
|
|
21
34
|
id: string;
|
|
@@ -35,7 +48,7 @@ export declare const nip44: {
|
|
|
35
48
|
encrypt: (pubkey: string, secret: string, m: string) => string;
|
|
36
49
|
decrypt: (pubkey: string, secret: string, m: string) => string;
|
|
37
50
|
};
|
|
38
|
-
export type Sign = (event:
|
|
51
|
+
export type Sign = (event: StampedEvent) => Promise<SignedEvent>;
|
|
39
52
|
export type Encrypt = (pubkey: string, message: string) => Promise<string>;
|
|
40
53
|
export type Decrypt = (pubkey: string, message: string) => Promise<string>;
|
|
41
54
|
export type EncryptionImplementation = {
|
package/build/src/util.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { schnorr } from '@noble/curves/secp256k1';
|
|
2
2
|
import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
|
|
3
3
|
import { nip04 as nt04, nip44 as nt44, generateSecretKey, getPublicKey, getEventHash } from "nostr-tools";
|
|
4
|
-
import { cached } from '@welshman/lib';
|
|
4
|
+
import { cached, now } from '@welshman/lib';
|
|
5
5
|
export const makeSecret = () => bytesToHex(generateSecretKey());
|
|
6
6
|
export const getPubkey = (secret) => getPublicKey(hexToBytes(secret));
|
|
7
7
|
export const getHash = (event) => getEventHash(event);
|
|
8
8
|
export const getSig = (event, secret) => bytesToHex(schnorr.sign(event.id, secret));
|
|
9
|
-
export const
|
|
9
|
+
export const stamp = (event, created_at = now()) => ({ ...event, created_at });
|
|
10
|
+
export const own = (event, pubkey) => ({ ...event, pubkey });
|
|
10
11
|
export const hash = (event) => ({ ...event, id: getHash(event) });
|
|
11
12
|
export const sign = (event, secret) => ({ ...event, sig: getSig(event, secret) });
|
|
12
13
|
export const nip04 = {
|
package/build/src/util.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB;OACxC,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,qBAAqB;OACnD,EAAC,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa;OAChG,EAAC,MAAM,EAAC,MAAM,eAAe;
|
|
1
|
+
{"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@welshman/signer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"author": "hodlbod",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A nostr signer implemenation supporting several login methods.",
|
|
@@ -31,8 +31,9 @@
|
|
|
31
31
|
"typescript": "~5.1.6"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@welshman/lib": "
|
|
35
|
-
"@welshman/net": "
|
|
36
|
-
"@welshman/util": "
|
|
34
|
+
"@welshman/lib": "0.0.15",
|
|
35
|
+
"@welshman/net": "0.0.19",
|
|
36
|
+
"@welshman/util": "0.0.27",
|
|
37
|
+
"nostr-tools": "^2.7.2"
|
|
37
38
|
}
|
|
38
39
|
}
|