@storacha/encrypt-upload-client 1.1.66 → 1.1.67
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 +1 -1
- package/dist/config/constants.d.ts +1 -1
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +2 -2
- package/dist/config/env.d.ts +0 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +0 -7
- package/dist/core/client.js +1 -1
- package/dist/crypto/adapters/lit-crypto-adapter.d.ts +35 -4
- package/dist/crypto/adapters/lit-crypto-adapter.d.ts.map +1 -1
- package/dist/crypto/adapters/lit-crypto-adapter.js +38 -41
- package/dist/crypto/factories.node.d.ts +4 -10
- package/dist/crypto/factories.node.d.ts.map +1 -1
- package/dist/crypto/factories.node.js +6 -16
- package/dist/protocols/lit.d.ts +13 -18
- package/dist/protocols/lit.d.ts.map +1 -1
- package/dist/protocols/lit.js +67 -88
- package/dist/types.d.ts +24 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/file-metadata.d.ts.map +1 -1
- package/dist/utils/file-metadata.js +39 -14
- package/package.json +12 -11
- package/dist/examples/decrypt-test.d.ts +0 -2
- package/dist/examples/decrypt-test.d.ts.map +0 -1
- package/dist/examples/decrypt-test.js +0 -73
- package/dist/examples/encrypt-test.d.ts +0 -4
- package/dist/examples/encrypt-test.d.ts.map +0 -1
- package/dist/examples/encrypt-test.js +0 -61
- package/dist/test/cid-verification.spec.d.ts +0 -2
- package/dist/test/cid-verification.spec.d.ts.map +0 -1
- package/dist/test/cid-verification.spec.js +0 -314
- package/dist/test/crypto-compatibility.spec.d.ts +0 -2
- package/dist/test/crypto-compatibility.spec.d.ts.map +0 -1
- package/dist/test/crypto-compatibility.spec.js +0 -124
- package/dist/test/crypto-counter-security.spec.d.ts +0 -2
- package/dist/test/crypto-counter-security.spec.d.ts.map +0 -1
- package/dist/test/crypto-counter-security.spec.js +0 -147
- package/dist/test/crypto-streaming.spec.d.ts +0 -2
- package/dist/test/crypto-streaming.spec.d.ts.map +0 -1
- package/dist/test/crypto-streaming.spec.js +0 -129
- package/dist/test/encrypted-metadata.spec.d.ts +0 -2
- package/dist/test/encrypted-metadata.spec.d.ts.map +0 -1
- package/dist/test/encrypted-metadata.spec.js +0 -68
- package/dist/test/factories.spec.d.ts +0 -2
- package/dist/test/factories.spec.d.ts.map +0 -1
- package/dist/test/factories.spec.js +0 -142
- package/dist/test/file-metadata.spec.d.ts +0 -2
- package/dist/test/file-metadata.spec.d.ts.map +0 -1
- package/dist/test/file-metadata.spec.js +0 -433
- package/dist/test/fixtures/test-fixtures.d.ts +0 -28
- package/dist/test/fixtures/test-fixtures.d.ts.map +0 -1
- package/dist/test/fixtures/test-fixtures.js +0 -63
- package/dist/test/helpers/test-file-utils.d.ts +0 -60
- package/dist/test/helpers/test-file-utils.d.ts.map +0 -1
- package/dist/test/helpers/test-file-utils.js +0 -139
- package/dist/test/https-enforcement.spec.d.ts +0 -2
- package/dist/test/https-enforcement.spec.d.ts.map +0 -1
- package/dist/test/https-enforcement.spec.js +0 -125
- package/dist/test/kms-crypto-adapter.spec.d.ts +0 -2
- package/dist/test/kms-crypto-adapter.spec.d.ts.map +0 -1
- package/dist/test/kms-crypto-adapter.spec.js +0 -305
- package/dist/test/lit-crypto-adapter.spec.d.ts +0 -2
- package/dist/test/lit-crypto-adapter.spec.d.ts.map +0 -1
- package/dist/test/lit-crypto-adapter.spec.js +0 -120
- package/dist/test/memory-efficiency.spec.d.ts +0 -2
- package/dist/test/memory-efficiency.spec.d.ts.map +0 -1
- package/dist/test/memory-efficiency.spec.js +0 -93
- package/dist/test/mocks/key-manager.d.ts +0 -58
- package/dist/test/mocks/key-manager.d.ts.map +0 -1
- package/dist/test/mocks/key-manager.js +0 -137
- package/dist/test/node-crypto-adapter.spec.d.ts +0 -2
- package/dist/test/node-crypto-adapter.spec.d.ts.map +0 -1
- package/dist/test/node-crypto-adapter.spec.js +0 -103
- package/dist/test/node-generic-crypto-adapter.spec.d.ts +0 -2
- package/dist/test/node-generic-crypto-adapter.spec.d.ts.map +0 -1
- package/dist/test/node-generic-crypto-adapter.spec.js +0 -95
- package/dist/test/setup.d.ts +0 -2
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/test/setup.js +0 -12
- package/dist/tsconfig.spec.tsbuildinfo +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Wallet } from 'ethers';
|
|
2
1
|
import { UnknownLink } from 'multiformats';
|
|
3
2
|
import { Client as StorachaClient } from '@storacha/client';
|
|
4
3
|
import { Result, Failure, Block, Proof } from '@ucanto/interface';
|
|
5
|
-
import {
|
|
4
|
+
import { AuthSig, SessionSigsMap } from '@lit-protocol/types';
|
|
5
|
+
import { AccessControlConditions } from '@lit-protocol/access-control-conditions';
|
|
6
6
|
import type { BlobLike, AnyLink, Signer, DID, SigAlg, UploadOptions } from '@storacha/client/types';
|
|
7
|
+
import type { AuthData } from '@lit-protocol/schemas';
|
|
7
8
|
export type { IPLDBlock } from '@ucanto/interface';
|
|
8
9
|
export type { SpaceDID } from '@storacha/capabilities/types';
|
|
9
10
|
export type { UnknownFormat } from '@storacha/capabilities/types';
|
|
@@ -11,6 +12,12 @@ export type { Result, UnknownLink };
|
|
|
11
12
|
export type { BlobLike, AnyLink };
|
|
12
13
|
export type { UploadOptions } from '@storacha/client/types';
|
|
13
14
|
import type { SpaceDID } from '@storacha/capabilities/types';
|
|
15
|
+
import { Account } from 'viem';
|
|
16
|
+
import { createAuthManager } from '@lit-protocol/auth';
|
|
17
|
+
export type AuthManager = ReturnType<typeof createAuthManager>;
|
|
18
|
+
export type EoaAuthContext = Awaited<ReturnType<AuthManager['createEoaAuthContext']>>;
|
|
19
|
+
export type PkpAuthContext = Awaited<ReturnType<AuthManager['createPkpAuthContext']>>;
|
|
20
|
+
export type AuthenticationContext = EoaAuthContext | PkpAuthContext;
|
|
14
21
|
export interface FileMetadata {
|
|
15
22
|
name: string;
|
|
16
23
|
type: string;
|
|
@@ -98,10 +105,10 @@ export interface DecryptionConfig {
|
|
|
98
105
|
* Proofs to access the space
|
|
99
106
|
*/
|
|
100
107
|
proofs?: Proof[];
|
|
101
|
-
wallet?:
|
|
108
|
+
wallet?: Account;
|
|
102
109
|
sessionSigs?: SessionSigsMap;
|
|
103
110
|
pkpPublicKey?: string;
|
|
104
|
-
|
|
111
|
+
authData?: AuthData;
|
|
105
112
|
}
|
|
106
113
|
export interface EncryptedKeyResult {
|
|
107
114
|
strategy: EncryptionStrategy;
|
|
@@ -173,28 +180,21 @@ export interface KMSMetadataView extends KMSMetadata {
|
|
|
173
180
|
export interface DecodeFailure extends Failure {
|
|
174
181
|
name: 'DecodeFailure';
|
|
175
182
|
}
|
|
176
|
-
export interface
|
|
177
|
-
wallet:
|
|
183
|
+
export interface EoaAuthContextOptions {
|
|
184
|
+
wallet: Account;
|
|
178
185
|
accessControlConditions: AccessControlConditions;
|
|
179
186
|
dataToEncryptHash: string;
|
|
180
187
|
expiration?: string;
|
|
181
188
|
capabilityAuthSigs?: AuthSig[];
|
|
182
189
|
}
|
|
183
|
-
export interface
|
|
190
|
+
export interface PkpAuthContextOptions {
|
|
184
191
|
pkpPublicKey: string;
|
|
185
|
-
|
|
192
|
+
authData: AuthData;
|
|
186
193
|
accessControlConditions: AccessControlConditions;
|
|
187
194
|
dataToEncryptHash: string;
|
|
188
195
|
expiration?: string;
|
|
189
196
|
capabilityAuthSigs?: AuthSig[];
|
|
190
197
|
}
|
|
191
|
-
export interface LitPkpSigner {
|
|
192
|
-
pkpPublicKey: string;
|
|
193
|
-
authMethod: AuthMethod;
|
|
194
|
-
}
|
|
195
|
-
export interface LitWalletSigner {
|
|
196
|
-
wallet: Wallet;
|
|
197
|
-
}
|
|
198
198
|
export interface CreateDecryptWrappedInvocationOptions {
|
|
199
199
|
decryptDelegation: Proof;
|
|
200
200
|
issuer: Signer<DID, SigAlg>;
|
|
@@ -211,6 +211,15 @@ export interface ExecuteUcanValidationOptions {
|
|
|
211
211
|
accessControlConditions: AccessControlConditions;
|
|
212
212
|
wrappedInvocationJSON: string;
|
|
213
213
|
}
|
|
214
|
+
export type AuthContext = EoaAuthContext | PkpAuthContext;
|
|
215
|
+
export interface ExecuteUcanValidationActionOptions {
|
|
216
|
+
authContext: AuthContext;
|
|
217
|
+
spaceDID: `did:key:${string}`;
|
|
218
|
+
identityBoundCiphertext: string;
|
|
219
|
+
plaintextKeyHash: string;
|
|
220
|
+
accessControlConditions: AccessControlConditions;
|
|
221
|
+
wrappedInvocationJSON: string;
|
|
222
|
+
}
|
|
214
223
|
export type ExtractedMetadata = LitExtractedMetadata | KMSExtractedMetadata;
|
|
215
224
|
export interface LitExtractedMetadata {
|
|
216
225
|
strategy: 'lit';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/file-metadata.js"],"names":[],"mappings":"AAUA;;;;;YAKE;AASK,6CAJI,IAAI,CAAC,QAAQ,aACb,IAAI,CAAC,YAAY,GACf,IAAI,CAmDhB;AAQM,qDAHI,cAAc,GACZ,OAAO,CAAC;IAAC,UAAU,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAA;CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"file-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/file-metadata.js"],"names":[],"mappings":"AAUA;;;;;YAKE;AASK,6CAJI,IAAI,CAAC,QAAQ,aACb,IAAI,CAAC,YAAY,GACf,IAAI,CAmDhB;AAQM,qDAHI,cAAc,GACZ,OAAO,CAAC;IAAC,UAAU,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAA;CAAC,CAAC,CA8FnF;uBA5KsB,cAAc;sBADf,aAAa"}
|
|
@@ -73,30 +73,55 @@ export const extractFileMetadata = async (decryptedStream) => {
|
|
|
73
73
|
// Read metadata length from first 4 bytes
|
|
74
74
|
const lengthView = new DataView(header.buffer, 0, 4);
|
|
75
75
|
const metadataLength = lengthView.getUint32(0, true);
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
76
|
+
// Detect if this is a valid metadata header or raw file content
|
|
77
|
+
// Valid metadata length should be 0-1020, anything else indicates no metadata header
|
|
78
|
+
const hasValidMetadataHeader = metadataLength >= 0 && metadataLength <= METADATA_HEADER_SIZE - 4;
|
|
80
79
|
let fileMetadata = undefined;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
let headerBytesToInclude = null;
|
|
81
|
+
if (hasValidMetadataHeader) {
|
|
82
|
+
// Valid metadata header detected
|
|
83
|
+
if (metadataLength > 0) {
|
|
84
|
+
try {
|
|
85
|
+
// Extract and parse metadata
|
|
86
|
+
const metadataBytes = header.slice(4, 4 + metadataLength);
|
|
87
|
+
const metadataJson = new TextDecoder('utf-8', { fatal: true }).decode(metadataBytes);
|
|
88
|
+
const parsedMetadata = secureJsonParse(metadataJson);
|
|
89
|
+
// Use existing validation - if it throws, treat as no metadata
|
|
90
|
+
validateMetadataStructure(parsedMetadata);
|
|
91
|
+
fileMetadata = parsedMetadata;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
// JSON parsing or validation failed - treat as no metadata
|
|
95
|
+
console.warn('Metadata parsing/validation failed - treating as file without metadata:', error);
|
|
96
|
+
headerBytesToInclude = header;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// If metadataLength is 0, header is consumed normally (no metadata but valid header)
|
|
87
100
|
}
|
|
88
|
-
|
|
89
|
-
|
|
101
|
+
else {
|
|
102
|
+
// Invalid metadata length - treat entire stream as file content without metadata
|
|
103
|
+
console.warn(`Detected file without metadata header (apparent length: ${metadataLength})`);
|
|
104
|
+
// Include the "header" bytes as part of file content
|
|
105
|
+
headerBytesToInclude = header;
|
|
106
|
+
}
|
|
107
|
+
// Create file stream (reusing logic for both cases)
|
|
90
108
|
let remainderEnqueued = false;
|
|
109
|
+
let headerEnqueued = !headerBytesToInclude; // Skip header injection if no header to include
|
|
91
110
|
const fileStream = new ReadableStream({
|
|
92
111
|
async pull(controller) {
|
|
93
|
-
// First, enqueue
|
|
112
|
+
// First, enqueue header bytes if this file has no metadata header
|
|
113
|
+
if (!headerEnqueued && headerBytesToInclude) {
|
|
114
|
+
controller.enqueue(headerBytesToInclude);
|
|
115
|
+
headerEnqueued = true;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Then, enqueue any remainder bytes from the header read
|
|
94
119
|
if (!remainderEnqueued && remainder) {
|
|
95
120
|
controller.enqueue(remainder);
|
|
96
121
|
remainderEnqueued = true;
|
|
97
122
|
return;
|
|
98
123
|
}
|
|
99
|
-
//
|
|
124
|
+
// Finally, continue with the reader
|
|
100
125
|
const { done, value } = await reader.read();
|
|
101
126
|
if (done) {
|
|
102
127
|
controller.close();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storacha/encrypt-upload-client",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.67",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"description": "Client for upload and download encrypted files",
|
|
7
7
|
"author": "Storacha",
|
|
@@ -61,12 +61,12 @@
|
|
|
61
61
|
"@ipld/dag-json": "^10.2.3",
|
|
62
62
|
"@ipld/dag-ucan": "^3.4.5",
|
|
63
63
|
"@ipld/schema": "^6.0.6",
|
|
64
|
-
"@lit-protocol/
|
|
65
|
-
"@lit-protocol/
|
|
66
|
-
"@lit-protocol/
|
|
67
|
-
"@lit-protocol/
|
|
68
|
-
"@lit-protocol/lit-
|
|
69
|
-
"@lit-protocol/
|
|
64
|
+
"@lit-protocol/access-control-conditions": "^8.0.2",
|
|
65
|
+
"@lit-protocol/auth": "^8.1.2",
|
|
66
|
+
"@lit-protocol/auth-helpers": "^8.1.1",
|
|
67
|
+
"@lit-protocol/constants": "^8.0.8",
|
|
68
|
+
"@lit-protocol/lit-client": "^8.2.3",
|
|
69
|
+
"@lit-protocol/networks": "8.3.1",
|
|
70
70
|
"@ucanto/client": "^9.0.2",
|
|
71
71
|
"@ucanto/core": "^10.4.5",
|
|
72
72
|
"@ucanto/interface": "^11.0.1",
|
|
@@ -76,16 +76,17 @@
|
|
|
76
76
|
"@ucanto/validator": "^10.0.1",
|
|
77
77
|
"blockstore-core": "^3.0.0",
|
|
78
78
|
"carstream": "^2.1.0",
|
|
79
|
-
"dotenv": "^
|
|
80
|
-
"ethers": "5.7.1",
|
|
79
|
+
"dotenv": "^17.2.3",
|
|
81
80
|
"ipfs-unixfs-exporter": "^10.0.0",
|
|
82
81
|
"multiformats": "^13.3.6",
|
|
82
|
+
"viem": "^2.39.0",
|
|
83
83
|
"@storacha/capabilities": "^1.12.0",
|
|
84
|
-
"@storacha/client": "^1.8.
|
|
84
|
+
"@storacha/client": "^1.8.24",
|
|
85
85
|
"@storacha/upload-client": "^1.3.6"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@lit-protocol/
|
|
88
|
+
"@lit-protocol/schemas": "^8.0.2",
|
|
89
|
+
"@lit-protocol/types": "^8.0.2",
|
|
89
90
|
"@playwright/test": "^1.29.2",
|
|
90
91
|
"esbuild": "^0.25.1",
|
|
91
92
|
"mkcert": "^3.2.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decrypt-test.d.ts","sourceRoot":"","sources":["../../examples/decrypt-test.js"],"names":[],"mappings":""}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import dotenv from 'dotenv';
|
|
3
|
-
import { CID } from 'multiformats';
|
|
4
|
-
import * as Client from '@storacha/client';
|
|
5
|
-
import * as Signer from '@ucanto/principal/ed25519';
|
|
6
|
-
import { StoreMemory } from '@storacha/client/stores/memory';
|
|
7
|
-
import { create } from '../src/index.js';
|
|
8
|
-
import { Wallet } from 'ethers';
|
|
9
|
-
import { serviceConf, receiptsEndpoint } from '../src/config/service.js';
|
|
10
|
-
import { createNodeLitAdapter } from '../src/crypto/factories.node.js';
|
|
11
|
-
import { LitNodeClient } from '@lit-protocol/lit-node-client';
|
|
12
|
-
import { extract } from '@ucanto/core/delegation';
|
|
13
|
-
dotenv.config();
|
|
14
|
-
async function main() {
|
|
15
|
-
// set up storacha client with a new agent
|
|
16
|
-
const cid = CID.parse('bafyreifhwqmspdjsy6rgcmcizgodv7bwskgiehjhdx7wukax3z5r7tz5ji');
|
|
17
|
-
const delegationCarBuffer = fs.readFileSync('delegation.car');
|
|
18
|
-
const wallet = new Wallet(process.env.WALLET_PK || '');
|
|
19
|
-
const principal = Signer.parse(process.env.DELEGATEE_AGENT_PK || '');
|
|
20
|
-
const store = new StoreMemory();
|
|
21
|
-
const client = await Client.create({
|
|
22
|
-
principal,
|
|
23
|
-
store,
|
|
24
|
-
serviceConf,
|
|
25
|
-
receiptsEndpoint,
|
|
26
|
-
});
|
|
27
|
-
// Set up Lit client
|
|
28
|
-
const litClient = new LitNodeClient({
|
|
29
|
-
litNetwork: 'datil-dev',
|
|
30
|
-
});
|
|
31
|
-
await litClient.connect();
|
|
32
|
-
const encryptedClient = await create({
|
|
33
|
-
storachaClient: client,
|
|
34
|
-
cryptoAdapter: createNodeLitAdapter(litClient),
|
|
35
|
-
});
|
|
36
|
-
const res = await extract(delegationCarBuffer);
|
|
37
|
-
if (res.error) {
|
|
38
|
-
throw new Error(`Failed to extract delegation: ${res.error.message}`);
|
|
39
|
-
}
|
|
40
|
-
const decryptDelegation = res.ok;
|
|
41
|
-
const decryptionCapability = decryptDelegation.capabilities.find((c) => c.can === 'space/content/decrypt');
|
|
42
|
-
if (!decryptionCapability) {
|
|
43
|
-
throw new Error('Failed to find decryption capability');
|
|
44
|
-
}
|
|
45
|
-
const spaceDID = /** @type {`did:key:${string}`} */ (decryptionCapability.with);
|
|
46
|
-
const decryptionConfig = {
|
|
47
|
-
wallet,
|
|
48
|
-
decryptDelegation,
|
|
49
|
-
spaceDID,
|
|
50
|
-
};
|
|
51
|
-
const decryptedContent = await encryptedClient.retrieveAndDecryptFile(cid, decryptionConfig);
|
|
52
|
-
const reader = decryptedContent.stream.getReader();
|
|
53
|
-
const decoder = new TextDecoder();
|
|
54
|
-
let result = '';
|
|
55
|
-
let done = false;
|
|
56
|
-
while (!done) {
|
|
57
|
-
const { value, done: isDone } = await reader.read();
|
|
58
|
-
done = isDone;
|
|
59
|
-
if (value) {
|
|
60
|
-
result += decoder.decode(value, { stream: true });
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
console.log('================ RESULT ===================');
|
|
64
|
-
console.log(result);
|
|
65
|
-
console.log('===========================================');
|
|
66
|
-
}
|
|
67
|
-
main()
|
|
68
|
-
.then(() => process.exit(0))
|
|
69
|
-
.catch((err) => {
|
|
70
|
-
console.error(err);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=decrypt-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt-test.d.ts","sourceRoot":"","sources":["../../examples/encrypt-test.js"],"names":[],"mappings":"AAeA,mDAAmD;AACnD,iCADY,MAAM,0DAQjB;wBAlBuB,2BAA2B"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import dotenv from 'dotenv';
|
|
3
|
-
import { CarReader } from '@ipld/car';
|
|
4
|
-
import * as Client from '@storacha/client';
|
|
5
|
-
import { importDAG } from '@ucanto/core/delegation';
|
|
6
|
-
import * as Signer from '@ucanto/principal/ed25519';
|
|
7
|
-
import { StoreMemory } from '@storacha/client/stores/memory';
|
|
8
|
-
import * as EncryptClient from '../src/index.js';
|
|
9
|
-
import { serviceConf, receiptsEndpoint } from '../src/config/service.js';
|
|
10
|
-
import { createNodeLitAdapter } from '../src/crypto/factories.node.js';
|
|
11
|
-
import { LitNodeClient } from '@lit-protocol/lit-node-client';
|
|
12
|
-
dotenv.config();
|
|
13
|
-
/** @param {string} data Base64 encoded CAR file */
|
|
14
|
-
export async function parseProof(data) {
|
|
15
|
-
const blocks = [];
|
|
16
|
-
const reader = await CarReader.fromBytes(Buffer.from(data, 'base64'));
|
|
17
|
-
for await (const block of reader.blocks()) {
|
|
18
|
-
blocks.push(block);
|
|
19
|
-
}
|
|
20
|
-
return importDAG(blocks);
|
|
21
|
-
}
|
|
22
|
-
async function main() {
|
|
23
|
-
// set up storacha client with a new agent
|
|
24
|
-
const principal = Signer.parse(process.env.AGENT_PK || '');
|
|
25
|
-
const store = new StoreMemory();
|
|
26
|
-
const client = await Client.create({
|
|
27
|
-
principal,
|
|
28
|
-
store,
|
|
29
|
-
serviceConf,
|
|
30
|
-
receiptsEndpoint,
|
|
31
|
-
});
|
|
32
|
-
// now give Agent the delegation from the Space
|
|
33
|
-
const proof = await parseProof(process.env.PROOF || '');
|
|
34
|
-
const space = await client.addSpace(proof);
|
|
35
|
-
await client.setCurrentSpace(space.did());
|
|
36
|
-
// Set up Lit client
|
|
37
|
-
const litClient = new LitNodeClient({
|
|
38
|
-
litNetwork: 'datil-dev',
|
|
39
|
-
});
|
|
40
|
-
await litClient.connect();
|
|
41
|
-
const encryptedClient = await EncryptClient.create({
|
|
42
|
-
storachaClient: client,
|
|
43
|
-
cryptoAdapter: createNodeLitAdapter(litClient),
|
|
44
|
-
});
|
|
45
|
-
const fileContent = await fs.promises.readFile('./README.md');
|
|
46
|
-
const blob = new Blob([fileContent]);
|
|
47
|
-
// Create encryption config
|
|
48
|
-
const encryptionConfig = {
|
|
49
|
-
issuer: principal,
|
|
50
|
-
spaceDID: space.did(),
|
|
51
|
-
};
|
|
52
|
-
const link = await encryptedClient.encryptAndUploadFile(blob, encryptionConfig);
|
|
53
|
-
console.log(link);
|
|
54
|
-
}
|
|
55
|
-
main()
|
|
56
|
-
.then(() => process.exit(0))
|
|
57
|
-
.catch((err) => {
|
|
58
|
-
console.error(err);
|
|
59
|
-
process.exit(1);
|
|
60
|
-
});
|
|
61
|
-
//# sourceMappingURL=encrypt-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cid-verification.spec.d.ts","sourceRoot":"","sources":["../../test/cid-verification.spec.js"],"names":[],"mappings":""}
|