@interop/http-digest-header 3.1.0 → 3.2.0
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/README.md +5 -0
- package/dist/httpDigest.d.ts +3 -1
- package/dist/httpDigest.d.ts.map +1 -1
- package/dist/httpDigest.js +53 -6
- package/dist/httpDigest.js.map +1 -1
- package/dist/util-browser.d.ts +9 -2
- package/dist/util-browser.d.ts.map +1 -1
- package/dist/util-browser.js +10 -0
- package/dist/util-browser.js.map +1 -1
- package/dist/util.d.ts +8 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +15 -0
- package/dist/util.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -85,6 +85,11 @@ const verifyResult = await httpDigest.verifyHeaderValue({
|
|
|
85
85
|
// -> { verified: false }
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
`data` may be a string, a JSON-serializable object, a `Uint8Array`, a `Blob`, or
|
|
89
|
+
a `ReadableStream<Uint8Array>`. A `Blob` or stream is hashed incrementally, one
|
|
90
|
+
chunk at a time, so a large file upload is never held in memory in full. A
|
|
91
|
+
stream is consumed by hashing it.
|
|
92
|
+
|
|
88
93
|
### Usage in React Native
|
|
89
94
|
|
|
90
95
|
In React Native, this library's `react-native` export resolves the digest
|
package/dist/httpDigest.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
type DigestData = string | object | Blob | Uint8Array
|
|
1
|
+
type DigestData = string | object | Blob | Uint8Array | ReadableStream<Uint8Array>;
|
|
2
2
|
/**
|
|
3
3
|
* Creates a value suitable for the HTTP `Digest` header.
|
|
4
4
|
*
|
|
5
5
|
* @param options - The options to use.
|
|
6
6
|
* @param options.data - The data to be hashed (a request or response body).
|
|
7
|
+
* A `Blob` or `ReadableStream` is hashed incrementally, one chunk at a time,
|
|
8
|
+
* so memory use does not grow with its size. A stream is consumed.
|
|
7
9
|
* @param options.algorithm - Hash algorithm to use (e.g. 'sha256').
|
|
8
10
|
* @param options.useMultihash - Whether to encode via multihash; if false, the
|
|
9
11
|
* hash will be base64-encoded (non-url).
|
package/dist/httpDigest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpDigest.d.ts","sourceRoot":"","sources":["../src/httpDigest.ts"],"names":[],"mappings":"AAMA,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"httpDigest.d.ts","sourceRoot":"","sources":["../src/httpDigest.ts"],"names":[],"mappings":"AAMA,KAAK,UAAU,GACX,MAAM,GACN,MAAM,GACN,IAAI,GACJ,UAAU,GACV,cAAc,CAAC,UAAU,CAAC,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,IAAI,EACJ,SAAoB,EACpB,YAAmB,EACpB,GAAE;IACD,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAOvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,IAAI,EACJ,WAAW,EACZ,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAahD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAW,EACZ,EAAE;IACD,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CASvC"}
|
package/dist/httpDigest.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2019-2025 Digital Bazaar, Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import { base64Encode, base64urlEncode } from './util.js';
|
|
4
|
+
import { base64Encode, base64urlEncode, createSha256 } from './util.js';
|
|
5
5
|
import { sha256 } from './digest.js';
|
|
6
6
|
/**
|
|
7
7
|
* Creates a value suitable for the HTTP `Digest` header.
|
|
8
8
|
*
|
|
9
9
|
* @param options - The options to use.
|
|
10
10
|
* @param options.data - The data to be hashed (a request or response body).
|
|
11
|
+
* A `Blob` or `ReadableStream` is hashed incrementally, one chunk at a time,
|
|
12
|
+
* so memory use does not grow with its size. A stream is consumed.
|
|
11
13
|
* @param options.algorithm - Hash algorithm to use (e.g. 'sha256').
|
|
12
14
|
* @param options.useMultihash - Whether to encode via multihash; if false, the
|
|
13
15
|
* hash will be base64-encoded (non-url).
|
|
@@ -84,6 +86,15 @@ async function _createHeaderValueComponents({ data, algorithm = 'sha256', useMul
|
|
|
84
86
|
function _createMultihash({ digest }) {
|
|
85
87
|
// format as multihash digest
|
|
86
88
|
// sha2-256: 0x12, length: 32 (0x20), digest value
|
|
89
|
+
//
|
|
90
|
+
// The ecosystem's general multihash byte codec lives in
|
|
91
|
+
// `@interop/data-integrity-core/multihash`; this site deliberately keeps
|
|
92
|
+
// its local bytes instead of adopting it. The `mh=` header form is a
|
|
93
|
+
// preexisting wire convention frozen at sha2-256, so the encode side is
|
|
94
|
+
// this fixed two-byte prefix, and the verify paths compare encoded
|
|
95
|
+
// strings rather than decoding -- the codec's strict decoder would never
|
|
96
|
+
// run. Adopting it would also give this generic HTTP utility a dependency
|
|
97
|
+
// on the SSI-ecosystem types package below which it sits.
|
|
87
98
|
const mh = new Uint8Array(34);
|
|
88
99
|
mh[0] = 0x12;
|
|
89
100
|
mh[1] = 0x20;
|
|
@@ -123,13 +134,49 @@ function _parseHeaderValue(headerValue) {
|
|
|
123
134
|
return { key, algorithm, encodedDigest };
|
|
124
135
|
}
|
|
125
136
|
async function _getDigest({ data, algorithm }) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
137
|
+
if (algorithm !== 'sha256') {
|
|
138
|
+
throw new Error(`Algorithm "${algorithm}" is not unsupported.`);
|
|
139
|
+
}
|
|
140
|
+
// React Native's `Blob` has no `stream()`; it takes the buffered path below.
|
|
141
|
+
if (data instanceof Blob && typeof data.stream === 'function') {
|
|
142
|
+
return _sha256Stream(data.stream());
|
|
143
|
+
}
|
|
144
|
+
if (typeof ReadableStream !== 'undefined' && data instanceof ReadableStream) {
|
|
145
|
+
return _sha256Stream(data);
|
|
146
|
+
}
|
|
147
|
+
return sha256(await _normalizeData(data));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Hashes a byte stream incrementally, so only one chunk is held at a time.
|
|
151
|
+
*
|
|
152
|
+
* @param stream - The byte stream to hash; it is read to the end, or
|
|
153
|
+
* cancelled if hashing fails.
|
|
154
|
+
*
|
|
155
|
+
* @returns Resolves to the raw SHA-256 digest.
|
|
156
|
+
*/
|
|
157
|
+
async function _sha256Stream(stream) {
|
|
158
|
+
const hash = createSha256();
|
|
159
|
+
const reader = stream.getReader();
|
|
160
|
+
try {
|
|
161
|
+
for (;;) {
|
|
162
|
+
const { done, value } = await reader.read();
|
|
163
|
+
if (done) {
|
|
164
|
+
return hash.digest();
|
|
165
|
+
}
|
|
166
|
+
hash.update(value);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
// release the source (e.g. a fetch body) instead of leaving it half-read;
|
|
171
|
+
// an already-errored stream rejects `cancel()`, which is not of interest
|
|
172
|
+
await reader.cancel(error).catch(() => { });
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
reader.releaseLock();
|
|
129
177
|
}
|
|
130
|
-
throw new Error(`Algorithm "${algorithm}" is not unsupported.`);
|
|
131
178
|
}
|
|
132
|
-
// normalize all inputs to a `Uint8Array` for hashing
|
|
179
|
+
// normalize all in-memory inputs to a `Uint8Array` for hashing
|
|
133
180
|
async function _normalizeData(data) {
|
|
134
181
|
if (data instanceof Uint8Array) {
|
|
135
182
|
return data;
|
package/dist/httpDigest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpDigest.js","sourceRoot":"","sources":["../src/httpDigest.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"httpDigest.js","sourceRoot":"","sources":["../src/httpDigest.ts"],"names":[],"mappings":"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"}
|
package/dist/util-browser.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Starts an incremental SHA-256 hash. WebCrypto has no incremental digest,
|
|
3
|
+
* so this uses `@noble/hashes`.
|
|
4
|
+
*
|
|
5
|
+
* @returns A hasher to feed chunks to with `update()`, then `digest()` once.
|
|
3
6
|
*/
|
|
7
|
+
export declare function createSha256(): {
|
|
8
|
+
update(chunk: Uint8Array): void;
|
|
9
|
+
digest(): Uint8Array;
|
|
10
|
+
};
|
|
4
11
|
export declare function base64Encode(bytes: Uint8Array): string;
|
|
5
12
|
export declare function base64urlEncode(bytes: Uint8Array): string;
|
|
6
13
|
//# sourceMappingURL=util-browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-browser.d.ts","sourceRoot":"","sources":["../src/util-browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util-browser.d.ts","sourceRoot":"","sources":["../src/util-browser.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI;IAC9B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,MAAM,IAAI,UAAU,CAAA;CACrB,CAEA;AAWD,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMtD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CASzD"}
|
package/dist/util-browser.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
5
|
+
/**
|
|
6
|
+
* Starts an incremental SHA-256 hash. WebCrypto has no incremental digest,
|
|
7
|
+
* so this uses `@noble/hashes`.
|
|
8
|
+
*
|
|
9
|
+
* @returns A hasher to feed chunks to with `update()`, then `digest()` once.
|
|
10
|
+
*/
|
|
11
|
+
export function createSha256() {
|
|
12
|
+
return sha256.create();
|
|
13
|
+
}
|
|
4
14
|
export function base64Encode(bytes) {
|
|
5
15
|
const maybe = bytes;
|
|
6
16
|
if (maybe.toBase64) {
|
package/dist/util-browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-browser.js","sourceRoot":"","sources":["../src/util-browser.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"util-browser.js","sourceRoot":"","sources":["../src/util-browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAI1B,OAAO,MAAM,CAAC,MAAM,EAAE,CAAA;AACxB,CAAC;AAWD,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,MAAM,KAAK,GAAG,KAAsB,CAAA;IACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,KAAK,GAAG,KAAsB,CAAA;IACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Starts an incremental SHA-256 hash, backed by native `node:crypto`.
|
|
3
|
+
*
|
|
4
|
+
* @returns A hasher to feed chunks to with `update()`, then `digest()` once.
|
|
3
5
|
*/
|
|
6
|
+
export declare function createSha256(): {
|
|
7
|
+
update(chunk: Uint8Array): void;
|
|
8
|
+
digest(): Uint8Array;
|
|
9
|
+
};
|
|
4
10
|
export declare function base64Encode(bytes: Uint8Array): string;
|
|
5
11
|
export declare function base64urlEncode(bytes: Uint8Array): string;
|
|
6
12
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI;IAC9B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,MAAM,IAAI,UAAU,CAAA;CACrB,CAQA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIzD"}
|
package/dist/util.js
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
/**
|
|
6
|
+
* Starts an incremental SHA-256 hash, backed by native `node:crypto`.
|
|
7
|
+
*
|
|
8
|
+
* @returns A hasher to feed chunks to with `update()`, then `digest()` once.
|
|
9
|
+
*/
|
|
10
|
+
export function createSha256() {
|
|
11
|
+
const hash = createHash('sha256');
|
|
12
|
+
return {
|
|
13
|
+
update: chunk => {
|
|
14
|
+
hash.update(chunk);
|
|
15
|
+
},
|
|
16
|
+
digest: () => new Uint8Array(hash.digest())
|
|
17
|
+
};
|
|
18
|
+
}
|
|
4
19
|
export function base64Encode(bytes) {
|
|
5
20
|
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64');
|
|
6
21
|
}
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC3E,QAAQ,CACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC3E,WAAW,CACZ,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAI1B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC3E,QAAQ,CACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC3E,WAAW,CACZ,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interop/http-digest-header",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Minimal isomorphic library (Node.js and browser) for creating and verifying Digest headers for HTTP Signatures",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"scripts": {
|
|
@@ -88,5 +88,8 @@
|
|
|
88
88
|
"engines": {
|
|
89
89
|
"node": ">=24.0"
|
|
90
90
|
},
|
|
91
|
-
"packageManager": "pnpm@11.5.0"
|
|
91
|
+
"packageManager": "pnpm@11.5.0",
|
|
92
|
+
"dependencies": {
|
|
93
|
+
"@noble/hashes": "^2.4.0"
|
|
94
|
+
}
|
|
92
95
|
}
|