@sigma-auth/better-auth-plugin 0.0.49 → 0.0.50

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.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Sync Client for local signers → Sigma-Auth backup synchronization
3
+ *
4
+ * Uses bitcoin-auth tokens signed by BAP member key for authentication.
5
+ * Pushes/pulls encrypted BapMasterBackup format to cloud storage.
6
+ */
7
+ import type { BAP } from "bsv-bap";
8
+ export interface SyncConfig {
9
+ /** Sigma-auth server URL (e.g., "https://sigmaidentity.com") */
10
+ serverUrl: string;
11
+ }
12
+ export interface SyncResult {
13
+ success: boolean;
14
+ error?: string;
15
+ encryptedBackup?: string;
16
+ lastUpdated?: string;
17
+ }
18
+ /**
19
+ * Push encrypted backup to sigma-auth cloud storage
20
+ */
21
+ export declare function pushBackup(bap: BAP, bapId: string, encryptedBackup: string, config: SyncConfig): Promise<SyncResult>;
22
+ /**
23
+ * Pull encrypted backup from sigma-auth cloud storage
24
+ */
25
+ export declare function pullBackup(bap: BAP, bapId: string, config: SyncConfig): Promise<SyncResult>;
26
+ /**
27
+ * Check if cloud backup exists and get its timestamp
28
+ */
29
+ export declare function checkBackupStatus(bap: BAP, bapId: string, config: SyncConfig): Promise<{
30
+ exists: boolean;
31
+ lastUpdated?: string;
32
+ error?: string;
33
+ }>;
34
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAInC,MAAM,WAAW,UAAU;IAC1B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAkCD;;GAEG;AACH,wBAAsB,UAAU,CAC/B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,UAAU,GAChB,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAChB,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBpE"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Sync Client for local signers → Sigma-Auth backup synchronization
3
+ *
4
+ * Uses bitcoin-auth tokens signed by BAP member key for authentication.
5
+ * Pushes/pulls encrypted BapMasterBackup format to cloud storage.
6
+ */
7
+ import { getAuthToken } from "bitcoin-auth";
8
+ const SYNC_ENDPOINT = "/api/backup/sync";
9
+ /**
10
+ * Get the WIF (private key) for the primary BAP identity's member key
11
+ */
12
+ function getMemberWif(bap, bapId) {
13
+ const identity = bap.getId(bapId);
14
+ if (!identity) {
15
+ throw new Error(`Identity ${bapId} not found in BAP`);
16
+ }
17
+ const memberData = identity.exportMember();
18
+ if (!memberData?.wif) {
19
+ throw new Error("Failed to export member WIF");
20
+ }
21
+ return memberData.wif;
22
+ }
23
+ /**
24
+ * Create a bitcoin-auth token for sync authentication
25
+ */
26
+ function createSyncAuthToken(wif, requestPath, body) {
27
+ return getAuthToken({
28
+ privateKeyWif: wif,
29
+ requestPath,
30
+ body,
31
+ });
32
+ }
33
+ /**
34
+ * Push encrypted backup to sigma-auth cloud storage
35
+ */
36
+ export async function pushBackup(bap, bapId, encryptedBackup, config) {
37
+ try {
38
+ const wif = getMemberWif(bap, bapId);
39
+ const body = JSON.stringify({ bapId, encryptedBackup });
40
+ const authToken = createSyncAuthToken(wif, SYNC_ENDPOINT, body);
41
+ const response = await fetch(`${config.serverUrl}${SYNC_ENDPOINT}`, {
42
+ method: "POST",
43
+ headers: {
44
+ "Content-Type": "application/json",
45
+ Authorization: `Bitcoin-Auth ${authToken}`,
46
+ },
47
+ body,
48
+ });
49
+ const data = await response.json();
50
+ if (!response.ok) {
51
+ return {
52
+ success: false,
53
+ error: data.message || data.error || `HTTP ${response.status}`,
54
+ };
55
+ }
56
+ return { success: true };
57
+ }
58
+ catch (error) {
59
+ return {
60
+ success: false,
61
+ error: error instanceof Error ? error.message : "Unknown error",
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * Pull encrypted backup from sigma-auth cloud storage
67
+ */
68
+ export async function pullBackup(bap, bapId, config) {
69
+ try {
70
+ const wif = getMemberWif(bap, bapId);
71
+ const authToken = createSyncAuthToken(wif, SYNC_ENDPOINT);
72
+ const response = await fetch(`${config.serverUrl}${SYNC_ENDPOINT}?bapId=${encodeURIComponent(bapId)}`, {
73
+ method: "GET",
74
+ headers: {
75
+ Authorization: `Bitcoin-Auth ${authToken}`,
76
+ },
77
+ });
78
+ const data = await response.json();
79
+ if (!response.ok) {
80
+ return {
81
+ success: false,
82
+ error: data.message || data.error || `HTTP ${response.status}`,
83
+ };
84
+ }
85
+ return {
86
+ success: true,
87
+ encryptedBackup: data.encryptedBackup,
88
+ lastUpdated: data.lastUpdated,
89
+ };
90
+ }
91
+ catch (error) {
92
+ return {
93
+ success: false,
94
+ error: error instanceof Error ? error.message : "Unknown error",
95
+ };
96
+ }
97
+ }
98
+ /**
99
+ * Check if cloud backup exists and get its timestamp
100
+ */
101
+ export async function checkBackupStatus(bap, bapId, config) {
102
+ const result = await pullBackup(bap, bapId, config);
103
+ if (result.success) {
104
+ return {
105
+ exists: true,
106
+ lastUpdated: result.lastUpdated,
107
+ };
108
+ }
109
+ // 404 means no backup exists (not an error)
110
+ if (result.error?.includes("404") || result.error?.includes("not_found")) {
111
+ return { exists: false };
112
+ }
113
+ return { exists: false, error: result.error };
114
+ }
115
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sigma-auth/better-auth-plugin",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "description": "Better Auth plugins for Sigma Identity - client, server, and provider integrations",
5
5
  "type": "module",
6
6
  "main": "./dist/types/index.js",
@@ -18,6 +18,10 @@
18
18
  "types": "./dist/client/local-signer.d.ts",
19
19
  "import": "./dist/client/local-signer.js"
20
20
  },
21
+ "./client/sync": {
22
+ "types": "./dist/client/sync.d.ts",
23
+ "import": "./dist/client/sync.js"
24
+ },
21
25
  "./server": {
22
26
  "types": "./dist/server/index.d.ts",
23
27
  "import": "./dist/server/index.js"
@@ -74,6 +78,7 @@
74
78
  "better-auth": "^1.4.5",
75
79
  "@bsv/sdk": "^1.9.9",
76
80
  "@neondatabase/serverless": "^1.0.2",
81
+ "bsv-bap": "^0.1.16",
77
82
  "payload-auth": "^0.6.0",
78
83
  "zod": "^4.1.12"
79
84
  },
@@ -84,6 +89,9 @@
84
89
  "@neondatabase/serverless": {
85
90
  "optional": true
86
91
  },
92
+ "bsv-bap": {
93
+ "optional": true
94
+ },
87
95
  "payload-auth": {
88
96
  "optional": true
89
97
  },
@@ -102,6 +110,7 @@
102
110
  "@neondatabase/serverless": "^1.0.2",
103
111
  "@types/node": "^24.10.7",
104
112
  "better-auth": "^1.4.10",
113
+ "bsv-bap": "^0.1.16",
105
114
  "typescript": "^5.9.3",
106
115
  "zod": "^4.3.5"
107
116
  }