@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,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SimplifiedFetchTransport = void 0;
|
|
4
|
+
const mod_js_1 = require("../../../mod.js");
|
|
5
|
+
const SUCCESS_STATUS_CODES = [200, 402];
|
|
6
|
+
/**
|
|
7
|
+
* Implements an HTTP-specific transport for handling Peer mutual authentication messages.
|
|
8
|
+
* This class integrates with fetch to send and receive authenticated messages between peers.
|
|
9
|
+
*/
|
|
10
|
+
class SimplifiedFetchTransport {
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new instance of SimplifiedFetchTransport.
|
|
13
|
+
* @param baseUrl - The base URL for all HTTP requests made by this transport.
|
|
14
|
+
* @param fetchClient - A fetch implementation to use for HTTP requests (default: global fetch).
|
|
15
|
+
*/
|
|
16
|
+
constructor(baseUrl, fetchClient = fetch) {
|
|
17
|
+
this.fetchClient = fetchClient;
|
|
18
|
+
this.baseUrl = baseUrl;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sends a message to an HTTP server using the transport mechanism.
|
|
22
|
+
* Handles both general and authenticated message types. For general messages,
|
|
23
|
+
* the payload is deserialized and sent as an HTTP request. For other message types,
|
|
24
|
+
* the message is sent as a POST request to the `/auth` endpoint.
|
|
25
|
+
*
|
|
26
|
+
* @param message - The AuthMessage to send.
|
|
27
|
+
* @returns A promise that resolves when the message is successfully sent.
|
|
28
|
+
*
|
|
29
|
+
* @throws Will throw an error if no listener has been registered via `onData`.
|
|
30
|
+
*/
|
|
31
|
+
async send(message) {
|
|
32
|
+
if (!this.onDataCallback) {
|
|
33
|
+
throw new Error('Listen before you start speaking. God gave you two ears and one mouth for a reason.');
|
|
34
|
+
}
|
|
35
|
+
if (message.messageType !== 'general') {
|
|
36
|
+
const response = await this.fetchClient(`${this.baseUrl}/.well-known/auth`, {
|
|
37
|
+
method: 'POST',
|
|
38
|
+
headers: {
|
|
39
|
+
'Content-Type': 'application/json'
|
|
40
|
+
},
|
|
41
|
+
body: JSON.stringify(message)
|
|
42
|
+
});
|
|
43
|
+
// Handle the response if data is received and callback is set
|
|
44
|
+
if (response.ok && this.onDataCallback) {
|
|
45
|
+
const responseMessage = await response.json();
|
|
46
|
+
if ((responseMessage === null || responseMessage === void 0 ? void 0 : responseMessage.status) !== 'certificate received') {
|
|
47
|
+
this.onDataCallback(responseMessage);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Server may be a non authenticated server
|
|
52
|
+
throw new Error('HTTP server failed to authenticate');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Parse message payload
|
|
57
|
+
const httpRequest = this.deserializeRequestPayload(message.payload);
|
|
58
|
+
// Send the byte array as the HTTP payload
|
|
59
|
+
const url = `${this.baseUrl}${httpRequest.urlPostfix}`;
|
|
60
|
+
let httpRequestWithAuthHeaders = httpRequest;
|
|
61
|
+
if (typeof httpRequest.headers !== 'object') {
|
|
62
|
+
httpRequestWithAuthHeaders.headers = {};
|
|
63
|
+
}
|
|
64
|
+
// Append auth headers in request to server
|
|
65
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-version'] = message.version;
|
|
66
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-identity-key'] = message.identityKey;
|
|
67
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-nonce'] = message.nonce;
|
|
68
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-your-nonce'] = message.yourNonce;
|
|
69
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-signature'] = mod_js_1.Utils.toHex(message.signature);
|
|
70
|
+
httpRequestWithAuthHeaders.headers['x-bsv-auth-request-id'] = httpRequest.requestId;
|
|
71
|
+
// Ensure Content-Type is set for requests with a body
|
|
72
|
+
if (httpRequestWithAuthHeaders.body) {
|
|
73
|
+
const headers = httpRequestWithAuthHeaders.headers;
|
|
74
|
+
if (!headers['content-type']) {
|
|
75
|
+
throw new Error('Content-Type header is required for requests with a body.');
|
|
76
|
+
}
|
|
77
|
+
const contentType = headers['content-type'];
|
|
78
|
+
// Transform body based on Content-Type
|
|
79
|
+
if (contentType.includes('application/json')) {
|
|
80
|
+
// Convert byte array to JSON string
|
|
81
|
+
httpRequestWithAuthHeaders.body = mod_js_1.Utils.toUTF8(httpRequestWithAuthHeaders.body);
|
|
82
|
+
}
|
|
83
|
+
else if (contentType.includes('application/x-www-form-urlencoded')) {
|
|
84
|
+
// Convert byte array to URL-encoded string
|
|
85
|
+
httpRequestWithAuthHeaders.body = mod_js_1.Utils.toUTF8(httpRequestWithAuthHeaders.body);
|
|
86
|
+
}
|
|
87
|
+
else if (contentType.includes('text/plain')) {
|
|
88
|
+
// Convert byte array to plain UTF-8 string
|
|
89
|
+
httpRequestWithAuthHeaders.body = mod_js_1.Utils.toUTF8(httpRequestWithAuthHeaders.body);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// For all other content types, treat as binary data
|
|
93
|
+
httpRequestWithAuthHeaders.body = new Uint8Array(httpRequestWithAuthHeaders.body);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Send the actual fetch request to the server
|
|
97
|
+
const response = await this.fetchClient(url, {
|
|
98
|
+
method: httpRequestWithAuthHeaders.method,
|
|
99
|
+
headers: httpRequestWithAuthHeaders.headers,
|
|
100
|
+
body: httpRequestWithAuthHeaders.body
|
|
101
|
+
});
|
|
102
|
+
// Check for an acceptable status
|
|
103
|
+
if (!SUCCESS_STATUS_CODES.includes(response.status)) {
|
|
104
|
+
// Try parsing JSON error
|
|
105
|
+
let errorInfo;
|
|
106
|
+
try {
|
|
107
|
+
errorInfo = await response.json();
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Fallback to text if JSON parse fails
|
|
111
|
+
const text = await response.text().catch(() => '');
|
|
112
|
+
throw new Error(`HTTP ${response.status} - ${text || 'Unknown error'}`);
|
|
113
|
+
}
|
|
114
|
+
// If we find a known { status: 'error', code, description } structure
|
|
115
|
+
if ((errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.status) === 'error' && typeof errorInfo.description === 'string') {
|
|
116
|
+
const msg = `HTTP ${response.status} - ${errorInfo.description}`;
|
|
117
|
+
throw new Error(errorInfo.code ? `${msg} (code: ${errorInfo.code})` : msg);
|
|
118
|
+
}
|
|
119
|
+
// Otherwise just throw whatever we got
|
|
120
|
+
throw new Error(`HTTP ${response.status} - ${JSON.stringify(errorInfo)}`);
|
|
121
|
+
}
|
|
122
|
+
const parsedBody = await response.arrayBuffer();
|
|
123
|
+
const payloadWriter = new mod_js_1.Utils.Writer();
|
|
124
|
+
payloadWriter.write(mod_js_1.Utils.toArray(response.headers.get('x-bsv-auth-request-id'), 'base64'));
|
|
125
|
+
payloadWriter.writeVarIntNum(response.status);
|
|
126
|
+
// Filter out headers the server signed:
|
|
127
|
+
// - Custom headers prefixed with x-bsv are included, except auth
|
|
128
|
+
// - x-bsv-auth headers are not allowed
|
|
129
|
+
// - authorization header is signed by the server
|
|
130
|
+
const includedHeaders = [];
|
|
131
|
+
// Collect headers into a raw array for sorting
|
|
132
|
+
const headersArray = [];
|
|
133
|
+
response.headers.forEach((value, key) => {
|
|
134
|
+
const lowerKey = key.toLowerCase();
|
|
135
|
+
if (lowerKey.startsWith('x-bsv-') || lowerKey === 'authorization') {
|
|
136
|
+
if (!lowerKey.startsWith('x-bsv-auth')) {
|
|
137
|
+
headersArray.push([lowerKey, value]);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
// Sort headers explicitly to match server-side order
|
|
142
|
+
headersArray.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
|
|
143
|
+
includedHeaders.push(...headersArray);
|
|
144
|
+
// nHeaders
|
|
145
|
+
payloadWriter.writeVarIntNum(includedHeaders.length);
|
|
146
|
+
for (let i = 0; i < includedHeaders.length; i++) {
|
|
147
|
+
// headerKeyLength
|
|
148
|
+
const headerKeyAsArray = mod_js_1.Utils.toArray(includedHeaders[i][0], 'utf8');
|
|
149
|
+
payloadWriter.writeVarIntNum(headerKeyAsArray.length);
|
|
150
|
+
// headerKey
|
|
151
|
+
payloadWriter.write(headerKeyAsArray);
|
|
152
|
+
// headerValueLength
|
|
153
|
+
const headerValueAsArray = mod_js_1.Utils.toArray(includedHeaders[i][1], 'utf8');
|
|
154
|
+
payloadWriter.writeVarIntNum(headerValueAsArray.length);
|
|
155
|
+
// headerValue
|
|
156
|
+
payloadWriter.write(headerValueAsArray);
|
|
157
|
+
}
|
|
158
|
+
// Handle body
|
|
159
|
+
if (parsedBody) {
|
|
160
|
+
const bodyAsArray = Array.from(new Uint8Array(parsedBody));
|
|
161
|
+
payloadWriter.writeVarIntNum(bodyAsArray.length);
|
|
162
|
+
payloadWriter.write(bodyAsArray);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
payloadWriter.writeVarIntNum(-1);
|
|
166
|
+
}
|
|
167
|
+
// Build the correct AuthMessage for the response
|
|
168
|
+
const responseMessage = {
|
|
169
|
+
version: response.headers.get('x-bsv-auth-version'),
|
|
170
|
+
messageType: response.headers.get('x-bsv-auth-message-type') === 'certificateRequest' ? 'certificateRequest' : 'general',
|
|
171
|
+
identityKey: response.headers.get('x-bsv-auth-identity-key'),
|
|
172
|
+
nonce: response.headers.get('x-bsv-auth-nonce'),
|
|
173
|
+
yourNonce: response.headers.get('x-bsv-auth-your-nonce'),
|
|
174
|
+
requestedCertificates: JSON.parse(response.headers.get('x-bsv-auth-requested-certificates')),
|
|
175
|
+
payload: payloadWriter.toArray(),
|
|
176
|
+
signature: mod_js_1.Utils.toArray(response.headers.get('x-bsv-auth-signature'), 'hex'),
|
|
177
|
+
};
|
|
178
|
+
// If the server didn't provide the correct authentication headers, throw an error
|
|
179
|
+
if (!responseMessage.version) {
|
|
180
|
+
throw new Error('HTTP server failed to authenticate');
|
|
181
|
+
}
|
|
182
|
+
// Handle the response if data is received and callback is set
|
|
183
|
+
this.onDataCallback(responseMessage);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Registers a callback to handle incoming messages.
|
|
188
|
+
* This must be called before sending any messages to ensure responses can be processed.
|
|
189
|
+
*
|
|
190
|
+
* @param callback - A function to invoke when an incoming AuthMessage is received.
|
|
191
|
+
* @returns A promise that resolves once the callback is set.
|
|
192
|
+
*/
|
|
193
|
+
async onData(callback) {
|
|
194
|
+
this.onDataCallback = (m) => {
|
|
195
|
+
callback(m);
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Deserializes a request payload from a byte array into an HTTP request-like structure.
|
|
200
|
+
*
|
|
201
|
+
* @param payload - The serialized payload to deserialize.
|
|
202
|
+
* @returns An object representing the deserialized request, including the method,
|
|
203
|
+
* URL postfix (path and query string), headers, body, and request ID.
|
|
204
|
+
*/
|
|
205
|
+
deserializeRequestPayload(payload) {
|
|
206
|
+
// Create a reader
|
|
207
|
+
const requestReader = new mod_js_1.Utils.Reader(payload);
|
|
208
|
+
// The first 32 bytes is the requestId
|
|
209
|
+
const requestId = mod_js_1.Utils.toBase64(requestReader.read(32));
|
|
210
|
+
// Method
|
|
211
|
+
const methodLength = requestReader.readVarIntNum();
|
|
212
|
+
let method = 'GET';
|
|
213
|
+
if (methodLength > 0) {
|
|
214
|
+
method = mod_js_1.Utils.toUTF8(requestReader.read(methodLength));
|
|
215
|
+
}
|
|
216
|
+
// Path
|
|
217
|
+
const pathLength = requestReader.readVarIntNum();
|
|
218
|
+
let path = '';
|
|
219
|
+
if (pathLength > 0) {
|
|
220
|
+
path = mod_js_1.Utils.toUTF8(requestReader.read(pathLength));
|
|
221
|
+
}
|
|
222
|
+
// Search
|
|
223
|
+
const searchLength = requestReader.readVarIntNum();
|
|
224
|
+
let search = '';
|
|
225
|
+
if (searchLength > 0) {
|
|
226
|
+
search = mod_js_1.Utils.toUTF8(requestReader.read(searchLength));
|
|
227
|
+
}
|
|
228
|
+
// Read headers
|
|
229
|
+
const requestHeaders = {};
|
|
230
|
+
const nHeaders = requestReader.readVarIntNum();
|
|
231
|
+
if (nHeaders > 0) {
|
|
232
|
+
for (let i = 0; i < nHeaders; i++) {
|
|
233
|
+
const nHeaderKeyBytes = requestReader.readVarIntNum();
|
|
234
|
+
const headerKeyBytes = requestReader.read(nHeaderKeyBytes);
|
|
235
|
+
const headerKey = mod_js_1.Utils.toUTF8(headerKeyBytes);
|
|
236
|
+
const nHeaderValueBytes = requestReader.readVarIntNum();
|
|
237
|
+
const headerValueBytes = requestReader.read(nHeaderValueBytes);
|
|
238
|
+
const headerValue = mod_js_1.Utils.toUTF8(headerValueBytes);
|
|
239
|
+
requestHeaders[headerKey] = headerValue;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Read body
|
|
243
|
+
let requestBody;
|
|
244
|
+
const requestBodyBytes = requestReader.readVarIntNum();
|
|
245
|
+
if (requestBodyBytes > 0) {
|
|
246
|
+
requestBody = requestReader.read(requestBodyBytes);
|
|
247
|
+
}
|
|
248
|
+
// Return the deserialized RequestInit
|
|
249
|
+
return {
|
|
250
|
+
urlPostfix: path + search,
|
|
251
|
+
method,
|
|
252
|
+
headers: requestHeaders,
|
|
253
|
+
body: requestBody,
|
|
254
|
+
requestId
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.SimplifiedFetchTransport = SimplifiedFetchTransport;
|
|
259
|
+
//# sourceMappingURL=SimplifiedFetchTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimplifiedFetchTransport.js","sourceRoot":"","sources":["../../../../../src/auth/transports/SimplifiedFetchTransport.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("./SimplifiedFetchTransport.js"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/auth/transports/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA6C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/auth/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMasterCertificate = createMasterCertificate;
|
|
4
|
+
exports.createVerifiableCertificate = createVerifiableCertificate;
|
|
5
|
+
const mod_js_1 = require("../../../mod.js");
|
|
6
|
+
const MasterCertificate_js_1 = require("../certificates/MasterCertificate.js");
|
|
7
|
+
const VerifiableCertificate_js_1 = require("../certificates/VerifiableCertificate.js");
|
|
8
|
+
/**
|
|
9
|
+
* Creates a Master Certificate by encrypting provided fields and generating a master keyring.
|
|
10
|
+
*
|
|
11
|
+
* @param {Wallet} wallet - The wallet instance used for encryption and public key retrieval.
|
|
12
|
+
* @param {Record<string, string>} fields - The certificate fields to encrypt.
|
|
13
|
+
* @param {string} certificateType - The type of the certificate being created.
|
|
14
|
+
* @param {string} certificateSerialNumber - The serial number of the certificate.
|
|
15
|
+
* @param {string} certifierPublicKey - The public key of the certifier.
|
|
16
|
+
* @returns {Promise<MasterCertificate>} A promise resolving to the created Master Certificate.
|
|
17
|
+
*/
|
|
18
|
+
async function createMasterCertificate(wallet, fields, certificateType, certificateSerialNumber, certifierPublicKey) {
|
|
19
|
+
const certificateFields = {};
|
|
20
|
+
const masterKeyring = {};
|
|
21
|
+
for (const fieldName in fields) {
|
|
22
|
+
const fieldSymmetricKey = mod_js_1.SymmetricKey.fromRandom();
|
|
23
|
+
const encryptedFieldValue = fieldSymmetricKey.encrypt(mod_js_1.Utils.toArray(fields[fieldName], 'utf8'));
|
|
24
|
+
certificateFields[fieldName] = mod_js_1.Utils.toBase64(encryptedFieldValue);
|
|
25
|
+
const encryptedFieldKey = await wallet.encrypt({
|
|
26
|
+
plaintext: fieldSymmetricKey.toArray(),
|
|
27
|
+
protocolID: [2, 'certificate field encryption'],
|
|
28
|
+
keyID: `${certificateSerialNumber} ${fieldName}`,
|
|
29
|
+
counterparty: 'self'
|
|
30
|
+
});
|
|
31
|
+
masterKeyring[fieldName] = mod_js_1.Utils.toBase64(encryptedFieldKey.ciphertext);
|
|
32
|
+
}
|
|
33
|
+
return new MasterCertificate_js_1.MasterCertificate(certificateType, certificateSerialNumber, (await wallet.getPublicKey({ identityKey: true })).publicKey, certifierPublicKey, 'revocationOutpoint', certificateFields, masterKeyring);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates a Verifiable Certificate by signing a Master Certificate and generating a keyring for a verifier.
|
|
37
|
+
*
|
|
38
|
+
* @param {MasterCertificate} masterCertificate - The master certificate to convert into a verifiable certificate.
|
|
39
|
+
* @param {Wallet} wallet - The wallet instance used for generating a keyring for the verifier.
|
|
40
|
+
* @param {string} verifierIdentityKey - The identity key of the verifier.
|
|
41
|
+
* @param {string[]} fieldsToReveal - The list of fields to reveal to the verifier.
|
|
42
|
+
* @param {PrivateKey} certifierPrivateKey - The private key of the certifier for signing the certificate.
|
|
43
|
+
* @returns {Promise<VerifiableCertificate>} A promise resolving to the created Verifiable Certificate.
|
|
44
|
+
*/
|
|
45
|
+
async function createVerifiableCertificate(masterCertificate, wallet, verifierIdentityKey, fieldsToReveal, certifierPrivateKey) {
|
|
46
|
+
const certifierWallet = new mod_js_1.ProtoWallet(certifierPrivateKey);
|
|
47
|
+
await masterCertificate.sign(certifierWallet);
|
|
48
|
+
const keyringForVerifier = await masterCertificate.createKeyringForVerifier(wallet, verifierIdentityKey, fieldsToReveal);
|
|
49
|
+
return new VerifiableCertificate_js_1.VerifiableCertificate(masterCertificate.type, masterCertificate.serialNumber, masterCertificate.subject, masterCertificate.certifier, masterCertificate.revocationOutpoint, masterCertificate.fields, masterCertificate.signature, keyringForVerifier);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=certificateHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificateHelpers.js","sourceRoot":"","sources":["../../../../../src/auth/utils/certificateHelpers.ts"],"names":[],"mappings":";;AAcA,0DAiCC;AAYD,kEA0BC;AArFD,4CAAsF;AACtF,+EAAwE;AACxE,uFAAgF;AAEhF;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,MAA8B,EAC9B,eAAuB,EACvB,uBAA+B,EAC/B,kBAA0B;IAE1B,MAAM,iBAAiB,GAA2B,EAAE,CAAA;IACpD,MAAM,aAAa,GAA2B,EAAE,CAAA;IAEhD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,qBAAY,CAAC,UAAU,EAAE,CAAA;QACnD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/F,iBAAiB,CAAC,SAAS,CAAC,GAAG,cAAK,CAAC,QAAQ,CAAC,mBAA+B,CAAC,CAAA;QAE9E,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAC7C,SAAS,EAAE,iBAAiB,CAAC,OAAO,EAAE;YACtC,UAAU,EAAE,CAAC,CAAC,EAAE,8BAA8B,CAAC;YAC/C,KAAK,EAAE,GAAG,uBAAuB,IAAI,SAAS,EAAE;YAChD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAA;QACF,aAAa,CAAC,SAAS,CAAC,GAAG,cAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,IAAI,wCAAiB,CAC1B,eAAe,EACf,uBAAuB,EACvB,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAC5D,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,CACd,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,2BAA2B,CAC/C,iBAAoC,EACpC,MAAc,EACd,mBAA2B,EAC3B,cAAwB,EACxB,mBAA+B;IAE/B,MAAM,eAAe,GAAG,IAAI,oBAAW,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAE7C,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,CACzE,MAAM,EACN,mBAAmB,EACnB,cAAc,CACf,CAAA;IAED,OAAO,IAAI,gDAAqB,CAC9B,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,YAAY,EAC9B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,kBAAkB,EACpC,iBAAiB,CAAC,MAAM,EACxB,iBAAiB,CAAC,SAAS,EAC3B,kBAAkB,CACnB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNonce = createNonce;
|
|
4
|
+
const mod_js_1 = require("../../../mod.js");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a nonce derived from a privateKey
|
|
7
|
+
* @param wallet
|
|
8
|
+
* @returns A random nonce derived with a wallet
|
|
9
|
+
*/
|
|
10
|
+
async function createNonce(wallet) {
|
|
11
|
+
// Generate 16 random bytes for the first half of the data
|
|
12
|
+
const firstHalf = (0, mod_js_1.Random)(16);
|
|
13
|
+
// Create an sha256 HMAC
|
|
14
|
+
const { hmac } = await wallet.createHmac({ protocolID: [2, 'server hmac'], keyID: mod_js_1.Utils.toUTF8(firstHalf), data: firstHalf, counterparty: 'self' });
|
|
15
|
+
// Concatenate firstHalf and secondHalf as the nonce bytes
|
|
16
|
+
const nonceBytes = [...firstHalf, ...hmac];
|
|
17
|
+
return mod_js_1.Utils.toBase64(nonceBytes);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=createNonce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createNonce.js","sourceRoot":"","sources":["../../../../../src/auth/utils/createNonce.ts"],"names":[],"mappings":";;AAOA,kCAQC;AAfD,4CAAuD;AAEvD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAA,eAAM,EAAC,EAAE,CAAC,CAAA;IAC5B,wBAAwB;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,cAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;IACnJ,0DAA0D;IAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,OAAO,cAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVerifiableCertificates = void 0;
|
|
4
|
+
const VerifiableCertificate_js_1 = require("../certificates/VerifiableCertificate.js");
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves an array of verifiable certificates based on the request.
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @param {RequestedCertificateSet} requestedCertificates - The set of certificates requested by the peer.
|
|
10
|
+
* @param {string} verifierIdentityKey - The public key of the verifier requesting the certificates.
|
|
11
|
+
* @returns {Promise<VerifiableCertificate[]>} An array of verifiable certificates.
|
|
12
|
+
*/
|
|
13
|
+
const getVerifiableCertificates = async (wallet, requestedCertificates, verifierIdentityKey) => {
|
|
14
|
+
// Find matching certificates we have
|
|
15
|
+
// Note: This may return multiple certificates that match the correct type.
|
|
16
|
+
const matchingCertificates = await wallet.listCertificates({
|
|
17
|
+
certifiers: requestedCertificates.certifiers,
|
|
18
|
+
types: Object.keys(requestedCertificates.types)
|
|
19
|
+
});
|
|
20
|
+
// For each certificate requested, create a verifiable cert with selectively revealed fields
|
|
21
|
+
return await Promise.all(matchingCertificates.certificates.map(async (certificate) => {
|
|
22
|
+
const { keyringForVerifier } = await wallet.proveCertificate({
|
|
23
|
+
certificate,
|
|
24
|
+
fieldsToReveal: requestedCertificates.types[certificate.type],
|
|
25
|
+
verifier: verifierIdentityKey
|
|
26
|
+
});
|
|
27
|
+
return new VerifiableCertificate_js_1.VerifiableCertificate(certificate.type, certificate.serialNumber, certificate.subject, certificate.certifier, certificate.revocationOutpoint, certificate.fields, certificate.signature, keyringForVerifier);
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
exports.getVerifiableCertificates = getVerifiableCertificates;
|
|
31
|
+
//# sourceMappingURL=getVerifiableCertificates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getVerifiableCertificates.js","sourceRoot":"","sources":["../../../../../src/auth/utils/getVerifiableCertificates.ts"],"names":[],"mappings":";;;AAAA,uFAAgF;AAIhF;;;;;;;GAOG;AACI,MAAM,yBAAyB,GAAG,KAAK,EAAE,MAAc,EAAE,qBAA8C,EAAE,mBAA2B,EAAoC,EAAE;IAC/K,qCAAqC;IACrC,2EAA2E;IAC3E,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;QACzD,UAAU,EAAE,qBAAqB,CAAC,UAAU;QAC5C,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;KAChD,CAAC,CAAA;IAEF,4FAA4F;IAC5F,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,oBAAoB,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;QACxD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;YAC3D,WAAW;YACX,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7D,QAAQ,EAAE,mBAAmB;SAC9B,CAAC,CAAA;QACF,OAAO,IAAI,gDAAqB,CAC9B,WAAW,CAAC,IAAI,EAChB,WAAW,CAAC,YAAY,EACxB,WAAW,CAAC,OAAO,EACnB,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,kBAAkB,EAC9B,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,SAAS,EACrB,kBAAkB,CACnB,CAAA;IACH,CAAC,CAAC,CAAC,CAAA;AACP,CAAC,CAAA;AA3BY,QAAA,yBAAyB,6BA2BrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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("./verifyNonce.js"), exports);
|
|
18
|
+
__exportStar(require("./createNonce.js"), exports);
|
|
19
|
+
__exportStar(require("./getVerifiableCertificates.js"), exports);
|
|
20
|
+
__exportStar(require("./validateCertificates.js"), exports);
|
|
21
|
+
__exportStar(require("./certificateHelpers.js"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/auth/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,mDAAgC;AAChC,iEAA8C;AAC9C,4DAAyC;AACzC,0DAAuC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateCertificates = void 0;
|
|
4
|
+
const VerifiableCertificate_js_1 = require("../certificates/VerifiableCertificate.js");
|
|
5
|
+
/**
|
|
6
|
+
* Validates and processes the certificates received from a peer.
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @param {AuthMessage} message - The message containing the certificates to validate.
|
|
10
|
+
* @returns {Promise<void>}
|
|
11
|
+
* @throws Will throw an error if certificate validation or field decryption fails.
|
|
12
|
+
*/
|
|
13
|
+
const validateCertificates = async (verifierWallet, message, certificatesRequested) => {
|
|
14
|
+
await Promise.all(message.certificates.map(async (incomingCert) => {
|
|
15
|
+
if (incomingCert.subject !== message.identityKey) {
|
|
16
|
+
throw new Error(`The subject of one of your certificates ("${incomingCert.subject}") is not the same as the request sender ("${message.identityKey}").`);
|
|
17
|
+
}
|
|
18
|
+
// Verify Certificate structure and signature
|
|
19
|
+
const certToVerify = new VerifiableCertificate_js_1.VerifiableCertificate(incomingCert.type, incomingCert.serialNumber, incomingCert.subject, incomingCert.certifier, incomingCert.revocationOutpoint, incomingCert.fields, incomingCert.signature, incomingCert.keyring);
|
|
20
|
+
const isValidCert = await certToVerify.verify();
|
|
21
|
+
if (!isValidCert) {
|
|
22
|
+
throw new Error(`The signature for the certificate with serial number ${certToVerify.serialNumber} is invalid!`);
|
|
23
|
+
}
|
|
24
|
+
// Check if the certificate matches requested certifiers, types, and fields
|
|
25
|
+
if (certificatesRequested) {
|
|
26
|
+
const { certifiers, types } = certificatesRequested;
|
|
27
|
+
// Check certifier matches
|
|
28
|
+
if (!certifiers.includes(certToVerify.certifier)) {
|
|
29
|
+
throw new Error(`Certificate with serial number ${certToVerify.serialNumber} has an unrequested certifier: ${certToVerify.certifier}`);
|
|
30
|
+
}
|
|
31
|
+
// Check type and fields match requested
|
|
32
|
+
const requestedFields = types[certToVerify.type];
|
|
33
|
+
if (!requestedFields) {
|
|
34
|
+
throw new Error(`Certificate with type ${certToVerify.type} was not requested`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Attempt to decrypt fields
|
|
38
|
+
await certToVerify.decryptFields(verifierWallet);
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
exports.validateCertificates = validateCertificates;
|
|
42
|
+
//# sourceMappingURL=validateCertificates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCertificates.js","sourceRoot":"","sources":["../../../../../src/auth/utils/validateCertificates.ts"],"names":[],"mappings":";;;AAEA,uFAAgF;AAEhF;;;;;;;GAOG;AACI,MAAM,oBAAoB,GAAG,KAAK,EAAE,cAAsB,EAAE,OAAoB,EAAE,qBAA+C,EAAiB,EAAE;IACzJ,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,YAAmC,EAAE,EAAE;QACvF,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,CAAC,OAAO,8CAA8C,OAAO,CAAC,WAAW,KAAK,CAAC,CAAA;QAC1J,CAAC;QAED,6CAA6C;QAC7C,MAAM,YAAY,GAAG,IAAI,gDAAqB,CAC5C,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,kBAAkB,EAC/B,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,OAAO,CACrB,CAAA;QACD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wDAAwD,YAAY,CAAC,YAAY,cAAc,CAAC,CAAA;QAClH,CAAC;QAED,2EAA2E;QAC3E,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAA;YAEnD,0BAA0B;YAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,CAAC,YAAY,kCAAkC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAA;YACxI,CAAC;YAED,wCAAwC;YACxC,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,CAAC,IAAI,oBAAoB,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAClD,CAAC,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AAzCY,QAAA,oBAAoB,wBAyChC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyNonce = verifyNonce;
|
|
4
|
+
const mod_js_1 = require("../../../mod.js");
|
|
5
|
+
/**
|
|
6
|
+
* Verifies a nonce derived from a wallet
|
|
7
|
+
* @param nonce - A nonce to verify as a base64 string.
|
|
8
|
+
* @param wallet
|
|
9
|
+
* @returns The status of the validation
|
|
10
|
+
*/
|
|
11
|
+
async function verifyNonce(nonce, wallet) {
|
|
12
|
+
// Convert nonce from base64 string to Uint8Array
|
|
13
|
+
const buffer = mod_js_1.Utils.toArray(nonce, 'base64');
|
|
14
|
+
// Split the nonce buffer
|
|
15
|
+
const data = buffer.slice(0, 16);
|
|
16
|
+
const hmac = buffer.slice(16);
|
|
17
|
+
// Calculate the HMAC
|
|
18
|
+
const { valid } = await wallet.verifyHmac({
|
|
19
|
+
data,
|
|
20
|
+
hmac,
|
|
21
|
+
protocolID: [2, 'server hmac'],
|
|
22
|
+
keyID: mod_js_1.Utils.toUTF8(data),
|
|
23
|
+
counterparty: 'self'
|
|
24
|
+
});
|
|
25
|
+
return valid;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=verifyNonce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyNonce.js","sourceRoot":"","sources":["../../../../../src/auth/utils/verifyNonce.ts"],"names":[],"mappings":";;AAQA,kCAkBC;AA1BD,4CAA+C;AAE/C;;;;;GAKG;AACI,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,MAAc;IAC7D,iDAAiD;IACjD,MAAM,MAAM,GAAG,cAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE7C,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE7B,qBAAqB;IACrB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACxC,IAAI;QACJ,IAAI;QACJ,UAAU,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC;QAC9B,KAAK,EAAE,cAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACzB,YAAY,EAAE,MAAM;KACrB,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -145,7 +145,7 @@ class Point extends BasePoint_js_1.default {
|
|
|
145
145
|
}
|
|
146
146
|
else if (Array.isArray(x)) {
|
|
147
147
|
xBigInt = BigInt('0x' +
|
|
148
|
-
|
|
148
|
+
(0, utils_js_1.toHex)(x).padStart(64, '0'));
|
|
149
149
|
}
|
|
150
150
|
else if (typeof x === 'number') {
|
|
151
151
|
xBigInt = BigInt(x);
|