@bsv/sdk 1.2.20 → 1.2.22
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/dist/cjs/package.json +3 -3
- package/dist/cjs/src/auth/Peer.js +536 -0
- package/dist/cjs/src/auth/Peer.js.map +1 -0
- package/dist/cjs/src/auth/SessionManager.js +66 -0
- package/dist/cjs/src/auth/SessionManager.js.map +1 -0
- package/dist/cjs/src/auth/{Certificate.js → certificates/Certificate.js} +22 -26
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -0
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +79 -0
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -0
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +49 -0
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -0
- package/dist/cjs/src/auth/certificates/index.js +25 -0
- package/dist/cjs/src/auth/certificates/index.js.map +1 -0
- package/dist/cjs/src/auth/clients/AuthFetch.js +411 -0
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -0
- package/dist/cjs/src/auth/clients/index.js +18 -0
- package/dist/cjs/src/auth/clients/index.js.map +1 -0
- package/dist/cjs/src/auth/index.js +20 -5
- package/dist/cjs/src/auth/index.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +259 -0
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -0
- package/dist/cjs/src/auth/transports/index.js +18 -0
- package/dist/cjs/src/auth/transports/index.js.map +1 -0
- package/dist/cjs/src/auth/types.js +3 -0
- package/dist/cjs/src/auth/types.js.map +1 -0
- package/dist/cjs/src/auth/utils/certificateHelpers.js +51 -0
- package/dist/cjs/src/auth/utils/certificateHelpers.js.map +1 -0
- package/dist/cjs/src/auth/utils/createNonce.js +19 -0
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -0
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js +31 -0
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -0
- package/dist/cjs/src/auth/utils/index.js +22 -0
- package/dist/cjs/src/auth/utils/index.js.map +1 -0
- package/dist/cjs/src/auth/utils/validateCertificates.js +42 -0
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -0
- package/dist/cjs/src/auth/utils/verifyNonce.js +27 -0
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -0
- package/dist/cjs/src/primitives/Point.js +1 -1
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +148 -148
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/auth/Peer.js +533 -0
- package/dist/esm/src/auth/Peer.js.map +1 -0
- package/dist/esm/src/auth/SessionManager.js +63 -0
- package/dist/esm/src/auth/SessionManager.js.map +1 -0
- package/dist/esm/src/auth/{Certificate.js → certificates/Certificate.js} +1 -2
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -0
- package/dist/esm/src/auth/certificates/MasterCertificate.js +73 -0
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -0
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js +44 -0
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -0
- package/dist/esm/src/auth/certificates/index.js +4 -0
- package/dist/esm/src/auth/certificates/index.js.map +1 -0
- package/dist/esm/src/auth/clients/AuthFetch.js +409 -0
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -0
- package/dist/esm/src/auth/clients/index.js +2 -0
- package/dist/esm/src/auth/clients/index.js.map +1 -0
- package/dist/esm/src/auth/index.js +7 -1
- package/dist/esm/src/auth/index.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +258 -0
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -0
- package/dist/esm/src/auth/transports/index.js +2 -0
- package/dist/esm/src/auth/transports/index.js.map +1 -0
- package/dist/esm/src/auth/types.js +2 -0
- package/dist/esm/src/auth/types.js.map +1 -0
- package/dist/esm/src/auth/utils/certificateHelpers.js +47 -0
- package/dist/esm/src/auth/utils/certificateHelpers.js.map +1 -0
- package/dist/esm/src/auth/utils/createNonce.js +16 -0
- package/dist/esm/src/auth/utils/createNonce.js.map +1 -0
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js +27 -0
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -0
- package/dist/esm/src/auth/utils/index.js +6 -0
- package/dist/esm/src/auth/utils/index.js.map +1 -0
- package/dist/esm/src/auth/utils/validateCertificates.js +38 -0
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -0
- package/dist/esm/src/auth/utils/verifyNonce.js +24 -0
- package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -0
- package/dist/esm/src/primitives/Point.js +1 -1
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/auth/Peer.d.ts +193 -0
- package/dist/types/src/auth/Peer.d.ts.map +1 -0
- package/dist/types/src/auth/SessionManager.d.ts +42 -0
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -0
- package/dist/types/src/auth/{Certificate.d.ts → certificates/Certificate.d.ts} +1 -1
- package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts +38 -0
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +26 -0
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/index.d.ts +4 -0
- package/dist/types/src/auth/certificates/index.d.ts.map +1 -0
- package/dist/types/src/auth/clients/AuthFetch.d.ts +87 -0
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -0
- package/dist/types/src/auth/clients/index.d.ts +2 -0
- package/dist/types/src/auth/clients/index.d.ts.map +1 -0
- package/dist/types/src/auth/index.d.ts +7 -1
- package/dist/types/src/auth/index.d.ts.map +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +51 -0
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -0
- package/dist/types/src/auth/transports/index.d.ts +2 -0
- package/dist/types/src/auth/transports/index.d.ts.map +1 -0
- package/dist/types/src/auth/types.d.ts +31 -0
- package/dist/types/src/auth/types.d.ts.map +1 -0
- package/dist/types/src/auth/utils/certificateHelpers.d.ts +26 -0
- package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +1 -0
- package/dist/types/src/auth/utils/createNonce.d.ts +8 -0
- package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -0
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +13 -0
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -0
- package/dist/types/src/auth/utils/index.d.ts +6 -0
- package/dist/types/src/auth/utils/index.d.ts.map +1 -0
- package/dist/types/src/auth/utils/validateCertificates.d.ts +12 -0
- package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -0
- package/dist/types/src/auth/utils/verifyNonce.d.ts +9 -0
- package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -0
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/README.md +1 -0
- package/docs/auth.md +1193 -0
- package/package.json +13 -3
- package/src/auth/Peer.ts +600 -0
- package/src/auth/SessionManager.ts +71 -0
- package/src/auth/__tests/Peer.test.ts +599 -0
- package/src/auth/__tests/SessionManager.test.ts +87 -0
- package/src/auth/{Certificate.ts → certificates/Certificate.ts} +15 -8
- package/src/auth/certificates/MasterCertificate.ts +106 -0
- package/src/auth/certificates/VerifiableCertificate.ts +73 -0
- package/src/auth/certificates/__tests/Certificate.test.ts +282 -0
- package/src/auth/certificates/index.ts +3 -0
- package/src/auth/clients/AuthFetch.ts +482 -0
- package/src/auth/clients/index.ts +1 -0
- package/src/auth/index.ts +7 -1
- package/src/auth/transports/SimplifiedFetchTransport.ts +288 -0
- package/src/auth/transports/index.ts +1 -0
- package/src/auth/types.ts +41 -0
- package/src/auth/utils/__tests/cryptononce.test.ts +84 -0
- package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +126 -0
- package/src/auth/utils/__tests/validateCertificates.test.ts +142 -0
- package/src/auth/utils/certificateHelpers.ts +86 -0
- package/src/auth/utils/createNonce.ts +16 -0
- package/src/auth/utils/getVerifiableCertificates.ts +40 -0
- package/src/auth/utils/index.ts +5 -0
- package/src/auth/utils/validateCertificates.ts +54 -0
- package/src/auth/utils/verifyNonce.ts +27 -0
- package/src/primitives/Point.ts +59 -59
- package/src/wallet/substrates/WalletWireProcessor.ts +1 -1
- package/src/wallet/substrates/WalletWireTransceiver.ts +1 -1
- package/dist/cjs/src/auth/Certificate.js.map +0 -1
- package/dist/esm/src/auth/Certificate.js.map +0 -1
- package/dist/types/src/auth/Certificate.d.ts.map +0 -1
- package/src/auth/__tests/Certificate.test.ts +0 -282
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthFetch = void 0;
|
|
4
|
+
const mod_js_1 = require("../../../mod.js");
|
|
5
|
+
const Peer_js_1 = require("../Peer.js");
|
|
6
|
+
const SimplifiedFetchTransport_js_1 = require("../transports/SimplifiedFetchTransport.js");
|
|
7
|
+
const SessionManager_js_1 = require("../SessionManager.js");
|
|
8
|
+
const PAYMENT_VERSION = '1.0';
|
|
9
|
+
/**
|
|
10
|
+
* AuthFetch provides a lightweight fetch client for interacting with servers
|
|
11
|
+
* over a simplified HTTP transport mechanism. It integrates session management, peer communication,
|
|
12
|
+
* and certificate handling to enable secure and mutually-authenticated requests.
|
|
13
|
+
*
|
|
14
|
+
* Additionally, it automatically handles 402 Payment Required responses by creating
|
|
15
|
+
* and sending BSV payment transactions when necessary.
|
|
16
|
+
*/
|
|
17
|
+
class AuthFetch {
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new SimplifiedFetch instance.
|
|
20
|
+
* @param wallet - The wallet instance for signing and authentication.
|
|
21
|
+
* @param requestedCertificates - Optional set of certificates to request from peers.
|
|
22
|
+
*/
|
|
23
|
+
constructor(wallet, requestedCertificates, sessionManager) {
|
|
24
|
+
this.callbacks = {};
|
|
25
|
+
this.certificatesReceived = [];
|
|
26
|
+
this.peers = {};
|
|
27
|
+
this.wallet = wallet;
|
|
28
|
+
this.requestedCertificates = requestedCertificates;
|
|
29
|
+
this.sessionManager = sessionManager || new SessionManager_js_1.SessionManager();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Mutually authenticates and sends a HTTP request to a server.
|
|
33
|
+
*
|
|
34
|
+
* 1) Attempt the request.
|
|
35
|
+
* 2) If 402 Payment Required, automatically create and send payment.
|
|
36
|
+
* 3) Return the final response.
|
|
37
|
+
*
|
|
38
|
+
* @param url - The URL to send the request to.
|
|
39
|
+
* @param config - Configuration options for the request, including method, headers, and body.
|
|
40
|
+
* @returns A promise that resolves with the server's response, structured as a Response-like object.
|
|
41
|
+
*
|
|
42
|
+
* @throws Will throw an error if unsupported headers are used or other validation fails.
|
|
43
|
+
*/
|
|
44
|
+
async fetch(url, config = {}) {
|
|
45
|
+
if (config.retryCounter) {
|
|
46
|
+
if (config.retryCounter <= 0) {
|
|
47
|
+
throw new Error('Request failed after maximum number of retries.');
|
|
48
|
+
}
|
|
49
|
+
config.retryCounter--;
|
|
50
|
+
}
|
|
51
|
+
const response = await new Promise(async (resolve, reject) => {
|
|
52
|
+
try {
|
|
53
|
+
// Apply defaults
|
|
54
|
+
const { method = 'GET', headers = {}, body } = config;
|
|
55
|
+
// Extract a base url
|
|
56
|
+
const parsedUrl = new URL(url);
|
|
57
|
+
const baseURL = parsedUrl.origin;
|
|
58
|
+
// Create a new transport for this base url if needed
|
|
59
|
+
let peerToUse;
|
|
60
|
+
if (!this.peers[baseURL]) {
|
|
61
|
+
// Create a peer for the request
|
|
62
|
+
const newTransport = new SimplifiedFetchTransport_js_1.SimplifiedFetchTransport(baseURL);
|
|
63
|
+
peerToUse = {
|
|
64
|
+
peer: new Peer_js_1.Peer(this.wallet, newTransport, this.requestedCertificates, this.sessionManager)
|
|
65
|
+
};
|
|
66
|
+
this.peers[baseURL] = peerToUse;
|
|
67
|
+
const callbackId = this.peers[baseURL].peer.listenForCertificatesReceived((senderPublicKey, certs) => {
|
|
68
|
+
this.certificatesReceived.push(...certs);
|
|
69
|
+
// peerToUse.peer.stopListeningForCertificatesReceived()
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Check if there's a session associated with this baseURL
|
|
74
|
+
if (this.peers[baseURL].supportsMutualAuth === false) {
|
|
75
|
+
// Use standard fetch if mutual authentication is not supported
|
|
76
|
+
try {
|
|
77
|
+
const response = await this.handleFetchAndValidate(url, config, this.peers[baseURL]);
|
|
78
|
+
resolve(response);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
reject(error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
peerToUse = this.peers[baseURL];
|
|
85
|
+
}
|
|
86
|
+
// Serialize the simplified fetch request.
|
|
87
|
+
const requestNonce = (0, mod_js_1.Random)(32);
|
|
88
|
+
const requestNonceAsBase64 = mod_js_1.Utils.toBase64(requestNonce);
|
|
89
|
+
const writer = await this.serializeRequest(method, headers, body, parsedUrl, requestNonce);
|
|
90
|
+
// Setup general message listener to resolve requests once a response is received
|
|
91
|
+
this.callbacks[requestNonceAsBase64] = { resolve, reject };
|
|
92
|
+
const listenerId = peerToUse.peer.listenForGeneralMessages((senderPublicKey, payload) => {
|
|
93
|
+
// Create a reader
|
|
94
|
+
const responseReader = new mod_js_1.Utils.Reader(payload);
|
|
95
|
+
// Deserialize first 32 bytes of payload
|
|
96
|
+
const responseNonceAsBase64 = mod_js_1.Utils.toBase64(responseReader.read(32));
|
|
97
|
+
if (responseNonceAsBase64 === requestNonceAsBase64) {
|
|
98
|
+
peerToUse.peer.stopListeningForGeneralMessages(listenerId);
|
|
99
|
+
// Save the identity key for the peer for future requests, since we have it here.
|
|
100
|
+
this.peers[baseURL].identityKey = senderPublicKey;
|
|
101
|
+
this.peers[baseURL].supportsMutualAuth = true;
|
|
102
|
+
// Status code
|
|
103
|
+
const statusCode = responseReader.readVarIntNum();
|
|
104
|
+
// Headers
|
|
105
|
+
const responseHeaders = {};
|
|
106
|
+
const nHeaders = responseReader.readVarIntNum();
|
|
107
|
+
if (nHeaders > 0) {
|
|
108
|
+
for (let i = 0; i < nHeaders; i++) {
|
|
109
|
+
const nHeaderKeyBytes = responseReader.readVarIntNum();
|
|
110
|
+
const headerKeyBytes = responseReader.read(nHeaderKeyBytes);
|
|
111
|
+
const headerKey = mod_js_1.Utils.toUTF8(headerKeyBytes);
|
|
112
|
+
const nHeaderValueBytes = responseReader.readVarIntNum();
|
|
113
|
+
const headerValueBytes = responseReader.read(nHeaderValueBytes);
|
|
114
|
+
const headerValue = mod_js_1.Utils.toUTF8(headerValueBytes);
|
|
115
|
+
responseHeaders[headerKey] = headerValue;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Add back the server identity key header
|
|
119
|
+
responseHeaders['x-bsv-auth-identity-key'] = senderPublicKey;
|
|
120
|
+
// Body
|
|
121
|
+
let responseBody;
|
|
122
|
+
const responseBodyBytes = responseReader.readVarIntNum();
|
|
123
|
+
if (responseBodyBytes > 0) {
|
|
124
|
+
responseBody = responseReader.read(responseBodyBytes);
|
|
125
|
+
}
|
|
126
|
+
// Create the Response object
|
|
127
|
+
const responseValue = new Response(responseBody ? new Uint8Array(responseBody) : null, {
|
|
128
|
+
status: statusCode,
|
|
129
|
+
statusText: `${statusCode}`,
|
|
130
|
+
headers: new Headers(responseHeaders)
|
|
131
|
+
});
|
|
132
|
+
// Resolve or reject the correct request with the response data
|
|
133
|
+
this.callbacks[requestNonceAsBase64].resolve(responseValue);
|
|
134
|
+
// Clean up
|
|
135
|
+
delete this.callbacks[requestNonceAsBase64];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Send the request, now that all listeners are set up
|
|
139
|
+
await peerToUse.peer.toPeer(writer.toArray(), peerToUse.identityKey).catch(async (error) => {
|
|
140
|
+
if (error.message.includes('HTTP server failed to authenticate')) {
|
|
141
|
+
try {
|
|
142
|
+
const response = await this.handleFetchAndValidate(url, config, peerToUse);
|
|
143
|
+
resolve(response);
|
|
144
|
+
}
|
|
145
|
+
catch (fetchError) {
|
|
146
|
+
reject(fetchError);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
reject(error);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
reject(e);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
// Check if server requires payment to access the requested route
|
|
159
|
+
if (response.status === 402) {
|
|
160
|
+
// Create and attach a payment, then retry
|
|
161
|
+
return await this.handlePaymentAndRetry(url, config, response);
|
|
162
|
+
}
|
|
163
|
+
return response;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Request Certificates from a Peer
|
|
167
|
+
* @param baseUrl
|
|
168
|
+
* @param certificatesToRequest
|
|
169
|
+
*/
|
|
170
|
+
async sendCertificateRequest(baseUrl, certificatesToRequest) {
|
|
171
|
+
const parsedUrl = new URL(baseUrl);
|
|
172
|
+
const baseURL = parsedUrl.origin;
|
|
173
|
+
let peerToUse;
|
|
174
|
+
if (this.peers[baseURL]) {
|
|
175
|
+
peerToUse = { peer: this.peers[baseURL].peer };
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const newTransport = new SimplifiedFetchTransport_js_1.SimplifiedFetchTransport(baseURL);
|
|
179
|
+
peerToUse = {
|
|
180
|
+
peer: new Peer_js_1.Peer(this.wallet, newTransport, this.requestedCertificates, this.sessionManager)
|
|
181
|
+
};
|
|
182
|
+
this.peers[baseURL] = peerToUse;
|
|
183
|
+
}
|
|
184
|
+
// Return a promise that resolves when certificates are received
|
|
185
|
+
return new Promise(async (resolve, reject) => {
|
|
186
|
+
// Set up the listener before making the request
|
|
187
|
+
const callbackId = peerToUse.peer.listenForCertificatesReceived((_senderPublicKey, certs) => {
|
|
188
|
+
peerToUse.peer.stopListeningForCertificatesReceived(callbackId);
|
|
189
|
+
this.certificatesReceived.push(...certs);
|
|
190
|
+
resolve(certs);
|
|
191
|
+
});
|
|
192
|
+
try {
|
|
193
|
+
// Initiate the certificate request
|
|
194
|
+
await peerToUse.peer.requestCertificates(certificatesToRequest, peerToUse.identityKey);
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
peerToUse.peer.stopListeningForCertificatesReceived(callbackId);
|
|
198
|
+
reject(err);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Return any certificates we've collected thus far, then clear them out.
|
|
204
|
+
*/
|
|
205
|
+
consumeReceivedCertificates() {
|
|
206
|
+
return this.certificatesReceived.splice(0);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Serializes the HTTP request to be sent over the Transport.
|
|
210
|
+
*
|
|
211
|
+
* @param method - The HTTP method (e.g., 'GET', 'POST') for the request.
|
|
212
|
+
* @param headers - A record of HTTP headers to include in the request.
|
|
213
|
+
* @param body - The body of the request, if applicable (e.g., for POST/PUT requests).
|
|
214
|
+
* @param parsedUrl - The parsed URL object containing the full request URL.
|
|
215
|
+
* @param requestNonce - A unique random nonce to ensure request integrity.
|
|
216
|
+
* @returns A promise that resolves to a `Writer` containing the serialized request.
|
|
217
|
+
*
|
|
218
|
+
* @throws Will throw an error if unsupported headers are used or serialization fails.
|
|
219
|
+
*/
|
|
220
|
+
async serializeRequest(method, headers, body, parsedUrl, requestNonce) {
|
|
221
|
+
const writer = new mod_js_1.Utils.Writer();
|
|
222
|
+
// Write request nonce
|
|
223
|
+
writer.write(requestNonce);
|
|
224
|
+
// Method length
|
|
225
|
+
writer.writeVarIntNum(method.length);
|
|
226
|
+
// Method
|
|
227
|
+
writer.write(mod_js_1.Utils.toArray(method));
|
|
228
|
+
// Handle pathname (e.g. /path/to/resource)
|
|
229
|
+
if (parsedUrl.pathname.length > 0) {
|
|
230
|
+
// Pathname length
|
|
231
|
+
const pathnameAsArray = mod_js_1.Utils.toArray(parsedUrl.pathname);
|
|
232
|
+
writer.writeVarIntNum(pathnameAsArray.length);
|
|
233
|
+
// Pathname
|
|
234
|
+
writer.write(pathnameAsArray);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
writer.writeVarIntNum(-1);
|
|
238
|
+
}
|
|
239
|
+
// Handle search params (e.g. ?q=hello)
|
|
240
|
+
if (parsedUrl.search.length > 0) {
|
|
241
|
+
// search length
|
|
242
|
+
const searchAsArray = mod_js_1.Utils.toArray(parsedUrl.search);
|
|
243
|
+
writer.writeVarIntNum(searchAsArray.length);
|
|
244
|
+
// search
|
|
245
|
+
writer.write(searchAsArray);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
writer.writeVarIntNum(-1);
|
|
249
|
+
}
|
|
250
|
+
// Construct headers to send / sign:
|
|
251
|
+
// - Custom headers prefixed with x-bsv are included
|
|
252
|
+
// - x-bsv-auth headers are not allowed
|
|
253
|
+
// - content-type and authorization are signed by client
|
|
254
|
+
const includedHeaders = [];
|
|
255
|
+
for (let [k, v] of Object.entries(headers)) {
|
|
256
|
+
k = k.toLowerCase(); // We will always sign lower-case header keys
|
|
257
|
+
if (k.startsWith('x-bsv-') || k === 'content-type' || k === 'authorization') {
|
|
258
|
+
if (k.startsWith('x-bsv-auth')) {
|
|
259
|
+
throw new Error('No BSV auth headers allowed here!');
|
|
260
|
+
}
|
|
261
|
+
includedHeaders.push([k, v]);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
throw new Error('Unsupported header in the simplified fetch implementation. Only content-type, authorization, and x-bsv-* headers are supported.');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// nHeaders
|
|
268
|
+
writer.writeVarIntNum(includedHeaders.length);
|
|
269
|
+
for (let i = 0; i < includedHeaders.length; i++) {
|
|
270
|
+
// headerKeyLength
|
|
271
|
+
const headerKeyAsArray = mod_js_1.Utils.toArray(includedHeaders[i][0], 'utf8');
|
|
272
|
+
writer.writeVarIntNum(headerKeyAsArray.length);
|
|
273
|
+
// headerKey
|
|
274
|
+
writer.write(headerKeyAsArray);
|
|
275
|
+
// headerValueLength
|
|
276
|
+
const headerValueAsArray = mod_js_1.Utils.toArray(includedHeaders[i][1], 'utf8');
|
|
277
|
+
writer.writeVarIntNum(headerValueAsArray.length);
|
|
278
|
+
// headerValue
|
|
279
|
+
writer.write(headerValueAsArray);
|
|
280
|
+
}
|
|
281
|
+
// Handle body
|
|
282
|
+
if (body) {
|
|
283
|
+
const reqBody = await this.normalizeBodyToNumberArray(body); // Use the utility function
|
|
284
|
+
writer.writeVarIntNum(reqBody.length);
|
|
285
|
+
writer.write(reqBody);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
writer.writeVarIntNum(-1); // No body
|
|
289
|
+
}
|
|
290
|
+
return writer;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Handles a non-authenticated fetch requests and validates that the server is not claiming to be authenticated.
|
|
294
|
+
*/
|
|
295
|
+
async handleFetchAndValidate(url, config, peerToUse) {
|
|
296
|
+
const response = await fetch(url, config);
|
|
297
|
+
response.headers.forEach(header => {
|
|
298
|
+
if (header.toLocaleLowerCase().startsWith('x-bsv')) {
|
|
299
|
+
throw new Error('The server is trying to claim it has been authenticated when it has not!');
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
if (response.ok) {
|
|
303
|
+
peerToUse.supportsMutualAuth = false;
|
|
304
|
+
return response;
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
throw new Error(`Request failed with status: ${response.status}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* If we get 402 Payment Required, we build a transaction via wallet.createAction()
|
|
312
|
+
* and re-attempt the request with an x-bsv-payment header.
|
|
313
|
+
*/
|
|
314
|
+
async handlePaymentAndRetry(url, config = {}, originalResponse) {
|
|
315
|
+
var _a;
|
|
316
|
+
// Make sure the server is using the correct payment version
|
|
317
|
+
const paymentVersion = originalResponse.headers.get('x-bsv-payment-version');
|
|
318
|
+
if (!paymentVersion || paymentVersion !== PAYMENT_VERSION) {
|
|
319
|
+
throw new Error(`Unsupported x-bsv-payment-version response header. Client version: ${PAYMENT_VERSION}, Server version: ${paymentVersion}`);
|
|
320
|
+
}
|
|
321
|
+
// Get required headers from the 402 response
|
|
322
|
+
const satoshisRequiredHeader = originalResponse.headers.get('x-bsv-payment-satoshis-required');
|
|
323
|
+
if (!satoshisRequiredHeader) {
|
|
324
|
+
throw new Error('Missing x-bsv-payment-satoshis-required response header.');
|
|
325
|
+
}
|
|
326
|
+
const satoshisRequired = parseInt(satoshisRequiredHeader);
|
|
327
|
+
if (isNaN(satoshisRequired) || satoshisRequired <= 0) {
|
|
328
|
+
throw new Error('Invalid x-bsv-payment-satoshis-required response header value.');
|
|
329
|
+
}
|
|
330
|
+
const serverIdentityKey = originalResponse.headers.get('x-bsv-auth-identity-key');
|
|
331
|
+
if (!serverIdentityKey) {
|
|
332
|
+
throw new Error('Missing x-bsv-auth-identity-key response header.');
|
|
333
|
+
}
|
|
334
|
+
const derivationPrefix = originalResponse.headers.get('x-bsv-payment-derivation-prefix');
|
|
335
|
+
if (!derivationPrefix) {
|
|
336
|
+
throw new Error('Missing x-bsv-payment-derivation-prefix response header.');
|
|
337
|
+
}
|
|
338
|
+
// Create a random suffix for the derivation path
|
|
339
|
+
const derivationSuffix = mod_js_1.Utils.toBase64((0, mod_js_1.Random)(10));
|
|
340
|
+
// Derive the script hex from the server identity key
|
|
341
|
+
const { publicKey: derivedPublicKey } = await this.wallet.getPublicKey({
|
|
342
|
+
protocolID: [2, 'wallet payment'],
|
|
343
|
+
keyID: `${derivationPrefix} ${derivationSuffix}`,
|
|
344
|
+
counterparty: serverIdentityKey
|
|
345
|
+
});
|
|
346
|
+
const lockingScript = new mod_js_1.P2PKH().lock(mod_js_1.PublicKey.fromString(derivedPublicKey).toHash()).toHex();
|
|
347
|
+
// Create the payment transaction using createAction
|
|
348
|
+
const { tx } = await this.wallet.createAction({
|
|
349
|
+
description: `Payment for request to ${new URL(url).origin}`,
|
|
350
|
+
outputs: [{
|
|
351
|
+
satoshis: satoshisRequired,
|
|
352
|
+
lockingScript,
|
|
353
|
+
outputDescription: 'HTTP request payment'
|
|
354
|
+
}]
|
|
355
|
+
});
|
|
356
|
+
// Attach the payment to the request headers
|
|
357
|
+
config.headers = config.headers || {};
|
|
358
|
+
config.headers['x-bsv-payment'] = JSON.stringify({
|
|
359
|
+
derivationPrefix,
|
|
360
|
+
transaction: mod_js_1.Utils.toBase64(tx)
|
|
361
|
+
});
|
|
362
|
+
(_a = config.retryCounter) !== null && _a !== void 0 ? _a : (config.retryCounter = 3);
|
|
363
|
+
// Re-attempt request with payment attached
|
|
364
|
+
return this.fetch(url, config);
|
|
365
|
+
}
|
|
366
|
+
async normalizeBodyToNumberArray(body) {
|
|
367
|
+
// 1. Null / undefined
|
|
368
|
+
if (body == null) {
|
|
369
|
+
return [];
|
|
370
|
+
}
|
|
371
|
+
// 2. number[]
|
|
372
|
+
if (Array.isArray(body) && body.every((item) => typeof item === 'number')) {
|
|
373
|
+
return body; // Return the array as is
|
|
374
|
+
}
|
|
375
|
+
// 3. string
|
|
376
|
+
if (typeof body === 'string') {
|
|
377
|
+
return mod_js_1.Utils.toArray(body, 'utf8');
|
|
378
|
+
}
|
|
379
|
+
// 4. ArrayBuffer / TypedArrays
|
|
380
|
+
if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {
|
|
381
|
+
const typedArray = body instanceof ArrayBuffer ? new Uint8Array(body) : new Uint8Array(body.buffer);
|
|
382
|
+
return Array.from(typedArray);
|
|
383
|
+
}
|
|
384
|
+
// 5. Blob
|
|
385
|
+
if (body instanceof Blob) {
|
|
386
|
+
const arrayBuffer = await body.arrayBuffer();
|
|
387
|
+
return Array.from(new Uint8Array(arrayBuffer));
|
|
388
|
+
}
|
|
389
|
+
// 6. FormData
|
|
390
|
+
if (body instanceof FormData) {
|
|
391
|
+
const entries = [];
|
|
392
|
+
body.forEach((value, key) => {
|
|
393
|
+
entries.push([key, value.toString()]);
|
|
394
|
+
});
|
|
395
|
+
const urlEncoded = new URLSearchParams(entries).toString();
|
|
396
|
+
return mod_js_1.Utils.toArray(urlEncoded, 'utf8');
|
|
397
|
+
}
|
|
398
|
+
// 7. URLSearchParams
|
|
399
|
+
if (body instanceof URLSearchParams) {
|
|
400
|
+
return mod_js_1.Utils.toArray(body.toString(), 'utf8');
|
|
401
|
+
}
|
|
402
|
+
// 8. ReadableStream
|
|
403
|
+
if (body instanceof ReadableStream) {
|
|
404
|
+
throw new Error('ReadableStream cannot be directly converted to number[].');
|
|
405
|
+
}
|
|
406
|
+
// 9. Fallback
|
|
407
|
+
throw new Error('Unsupported body type in this SimplifiedFetch implementation.');
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
exports.AuthFetch = AuthFetch;
|
|
411
|
+
//# sourceMappingURL=AuthFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthFetch.js","sourceRoot":"","sources":["../../../../../src/auth/clients/AuthFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AuthFetch.js"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/auth/clients/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
4
15
|
};
|
|
5
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
17
|
+
__exportStar(require("./certificates/index.js"), exports);
|
|
18
|
+
__exportStar(require("./Peer.js"), exports);
|
|
19
|
+
__exportStar(require("./SessionManager.js"), exports);
|
|
20
|
+
__exportStar(require("./types.js"), exports);
|
|
21
|
+
__exportStar(require("./utils/index.js"), exports);
|
|
22
|
+
__exportStar(require("./clients/index.js"), exports);
|
|
23
|
+
__exportStar(require("./transports/index.js"), exports);
|
|
9
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/auth/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,4CAAyB;AACzB,sDAAmC;AACnC,6CAA0B;AAC1B,mDAAgC;AAChC,qDAAkC;AAClC,wDAAqC"}
|