@tinycloud/sdk-services 3.8.0-beta.1 → 3.8.0-beta.16
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/encryption/index.cjs +80 -7
- package/dist/encryption/index.cjs.map +1 -1
- package/dist/encryption/index.d.cts +21 -9
- package/dist/encryption/index.d.ts +21 -9
- package/dist/encryption/index.js +79 -7
- package/dist/encryption/index.js.map +1 -1
- package/dist/encryption/named-keys.cjs.map +1 -1
- package/dist/encryption/named-keys.d.cts +1 -1
- package/dist/encryption/named-keys.d.ts +1 -1
- package/dist/encryption/named-keys.js.map +1 -1
- package/dist/encryption/resource.cjs.map +1 -1
- package/dist/encryption/resource.js.map +1 -1
- package/dist/index.cjs +80 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +79 -7
- package/dist/index.js.map +1 -1
- package/dist/kv/index.cjs.map +1 -1
- package/dist/kv/index.d.cts +2 -2
- package/dist/kv/index.d.ts +2 -2
- package/dist/kv/index.js.map +1 -1
- package/dist/kv/replication/index.cjs +1 -0
- package/dist/kv/replication/index.cjs.map +1 -1
- package/dist/kv/replication/index.d.cts +2 -2
- package/dist/kv/replication/index.d.ts +2 -2
- package/dist/kv/replication/index.js +1 -0
- package/dist/kv/replication/index.js.map +1 -1
- package/dist/{scope-Cg00IaWk.d.ts → scope-1-8skVDk.d.ts} +77 -2
- package/dist/{scope-Cjo4O0uO.d.cts → scope-Dv3IAXMr.d.cts} +77 -2
- package/dist/{types-B_rbS4XE.d.cts → types-CBKrdtP8.d.cts} +6 -1
- package/dist/{types-BGRzS1ob.d.ts → types-DZBExWAf.d.ts} +6 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -7,13 +7,13 @@ import { B as BaseService } from './BaseService-D-29xShG.cjs';
|
|
|
7
7
|
export { a as BaseServiceOptions, R as RequestSignal, S as ServiceConstructor, b as ServiceRegistration } from './BaseService-D-29xShG.cjs';
|
|
8
8
|
import { IKVService } from './kv/index.cjs';
|
|
9
9
|
export { IPrefixedKVService, KVService, PrefixedKVService } from './kv/index.cjs';
|
|
10
|
-
export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING,
|
|
10
|
+
export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, av as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, aw as KVAction, ax as KVActionType, ay as KVBatchPutItem, az as KVBatchPutOptions, aA as KVBatchPutResponse, aB as KVBatchReadResponse, aC as KVChange, aD as KVChangesAuthority, aE as KVChangesOptions, aF as KVChangesResponse, aG as KVCreateSignedReadUrlOptions, aH as KVDeleteOptions, aI as KVGetOptions, aJ as KVHeadOptions, aK as KVListOptions, b as KVListPage, aL as KVListResponse, aM as KVPutOptions, c as KVReadThrough, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, aN as KVResponse, aO as KVResponseHeaders, aP as KVServiceConfig, aQ as KVSignedReadUrlResponse, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, w as PurgeTarget, x as ReplicaAccountGate, y as ReplicaAdmitHook, z as ReplicaAuthorityState, B as ReplicaBrowserGateAccess, D as ReplicaBrowserGateSnapshot, E as ReplicaBrowserGateTx, F as ReplicaBrowserPageAdmission, G as ReplicaClock, H as ReplicaCoverage, I as ReplicaDeliveryDecision, J as ReplicaDenyInput, M as ReplicaDenyOutcome, N as ReplicaDevice, O as ReplicaEraseReport, Q as ReplicaGateAccess, S as ReplicaGateReason, T as ReplicaGateScope, U as ReplicaGateSnapshot, V as ReplicaGateTx, W as ReplicaGatedError, X as ReplicaGatedHandle, Y as ReplicaGatedSpec, Z as ReplicaGatedStorage, _ as ReplicaGrantInfo, $ as ReplicaGuardedStore, a0 as ReplicaInspectedStatus, a1 as ReplicaLifecycleGate, a2 as ReplicaLocalEraseOutcome, a3 as ReplicaPageAdmission, a4 as ReplicaPartitionEraser, a5 as ReplicaPartitionIndexEntry, a6 as ReplicaPeerCommit, a7 as ReplicaPrivateGateHash, a8 as ReplicaPurgeError, a9 as ReplicaPurgeFailedEvent, aa as ReplicaPurgeIntent, ab as ReplicaPurgeLocalCopyResult, ac as ReplicaPurgeTrigger, ad as ReplicaQuotaLedger, ae as ReplicaQuotaSpec, af as ReplicaSessionStamp, ag as ReplicaStampedReply, ah as ReplicaState, ai as ReplicaStatusEntry, aj as ReplicationAuthority, ak as ReplicationControl, al as ReplicationEvent, R as ReplicationIdentity, am as ReplicationOptions, an as ReplicationPurgeReport, ao as ReplicationReason, ap as ReplicationScheduler, aq as ResolvedReplicationOptions, ar as SaltedHash, as as canonicalReplicationIdentity, at as replicationIdentityKey, au as requiresSecretsOptIn } from './scope-Dv3IAXMr.cjs';
|
|
11
11
|
export { ClampConsentAnchor, ConsentDeadlineMs, EffectiveGrantExpiry, EffectiveGrantExpiryInput, MintRemainingMs, NeedsSilentRenewal, ReplicaConsentAnchor, ReplicaConsentSource, ReplicaGrantPolicy } from './kv/replication/grantPolicyTypes.cjs';
|
|
12
12
|
export { BatchOptions, BatchResponse, DatabaseHandle, ExecuteOptions, ExecuteResponse, IDatabaseHandle, ISQLMigrations, ISQLService, QueryOptions, QueryResponse, SQLAction, SQLActionType, SQLMigrations, SQLService, SQLServiceConfig, SqlMigration, SqlMigrationApplyOptions, SqlMigrationApplyResponse, SqlStatement, SqlValue } from './sql/index.cjs';
|
|
13
|
-
import { D as DecryptCapabilityProof } from './types-
|
|
14
|
-
export { B as BuildDecryptInvocationInput, a as BuiltDecryptInvocation, C as CanonicalJson, b as DECRYPT_ACTION, c as DECRYPT_FACT_TYPE, d as DECRYPT_RESULT_TYPE, e as DEFAULT_ENCRYPTION_ALG, f as DEFAULT_KEY_VERSION, g as DecryptInvocationFact, h as DecryptInvocationSigner, i as DecryptRequestBody, j as DecryptResponseBody, k as ENCRYPTION_SERVICE, l as ENCRYPTION_SERVICE_SHORT, m as ENVELOPE_VERSION, E as EncryptionCrypto, n as EncryptionError, o as EncryptionErrorInput, I as InlineEncryptedEnvelope, J as Json, N as NetworkDescriptor, R as ReceiverKeyPair, p as ReceiverKeySigner, q as base64Decode, r as base64Encode, s as canonicalHashHex, t as canonicalizeEncryptionJson, u as encryptionError, v as hexDecode, w as hexEncode, x as utf8Decode, y as utf8Encode } from './types-
|
|
13
|
+
import { D as DecryptCapabilityProof } from './types-CBKrdtP8.cjs';
|
|
14
|
+
export { B as BuildDecryptInvocationInput, a as BuiltDecryptInvocation, C as CanonicalJson, b as DECRYPT_ACTION, c as DECRYPT_FACT_TYPE, d as DECRYPT_RESULT_TYPE, e as DEFAULT_ENCRYPTION_ALG, f as DEFAULT_KEY_VERSION, g as DecryptInvocationFact, h as DecryptInvocationSigner, i as DecryptRequestBody, j as DecryptResponseBody, k as ENCRYPTION_SERVICE, l as ENCRYPTION_SERVICE_SHORT, m as ENVELOPE_VERSION, E as EncryptionCrypto, n as EncryptionError, o as EncryptionErrorInput, I as InlineEncryptedEnvelope, J as Json, N as NetworkDescriptor, R as ReceiverKeyPair, p as ReceiverKeySigner, q as base64Decode, r as base64Encode, s as canonicalHashHex, t as canonicalizeEncryptionJson, u as encryptionError, v as hexDecode, w as hexEncode, x as utf8Decode, y as utf8Encode } from './types-CBKrdtP8.cjs';
|
|
15
15
|
import { IEncryptionService } from './encryption/index.cjs';
|
|
16
|
-
export { BuildCanonicalDecryptRequestInput, BuildDecryptFactsInput, CanonicalDecryptRequest, DecryptEnvelopeOptions, DecryptTransport, DiscoverNetworkInput, DiscoveredNetwork, DiscoverySource, ENCRYPTION_NETWORK_URN_PREFIX, EncryptToNetworkInput, EncryptToNetworkOptions, EncryptToNetworkResult, EncryptionService, EncryptionServiceConfig, NETWORK_NAME_PATTERN, NetworkIdError, NodeDescriptorFetcher, ParsedNetworkId, RandomReceiverKeyInput, SignedReceiverKeyInput, VerifyDecryptResponseInput, WellKnownDescriptorFetcher, buildCanonicalDecryptRequest, buildDecryptAttenuation, buildDecryptFacts, buildDecryptInvocation, buildNetworkId, canonicalSignedResponse, checkDecryptInvocationInput, decryptEnvelopeWithKey, deriveSignedReceiverKey, discoverNetwork, encryptToNetwork, ensureNetworkUsableForDecrypt, generateRandomReceiverKey, isNetworkId, networkDiscoveryKey, openWrappedKey, parseNetworkId, validateEnvelope, verifyDecryptResponse } from './encryption/index.cjs';
|
|
16
|
+
export { BuildCanonicalDecryptRequestInput, BuildDecryptFactsInput, CanonicalDecryptRequest, DecryptEnvelopeOptions, DecryptTransport, DiscoverNetworkInput, DiscoveredNetwork, DiscoverySource, ENCRYPTION_NETWORK_URN_PREFIX, EncryptToNetworkInput, EncryptToNetworkOptions, EncryptToNetworkResult, EncryptionService, EncryptionServiceConfig, NETWORK_NAME_PATTERN, NetworkIdError, NodeDescriptorFetcher, ParsedEncryptionResource, ParsedNetworkId, RandomReceiverKeyInput, SignedReceiverKeyInput, VerifyDecryptResponseInput, WellKnownDescriptorFetcher, buildCanonicalDecryptRequest, buildDecryptAttenuation, buildDecryptFacts, buildDecryptInvocation, buildNetworkId, canonicalSignedResponse, checkDecryptInvocationInput, decryptEnvelopeWithKey, deriveSignedReceiverKey, discoverNetwork, encryptToNetwork, ensureNetworkUsableForDecrypt, generateRandomReceiverKey, isNetworkId, networkDiscoveryKey, openWrappedKey, parseEncryptionResource, parseNetworkId, validateEnvelope, verifyDecryptResponse } from './encryption/index.cjs';
|
|
17
17
|
export { DecryptTransportResponseError } from '@tinycloud/sdk-services/internal/decrypt-transport-response-error';
|
|
18
18
|
export { kvPrefixCovers } from './kv/replication/prefix.cjs';
|
|
19
19
|
import './kv/replication/contractConstants.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -7,13 +7,13 @@ import { B as BaseService } from './BaseService-DO7vZ67k.js';
|
|
|
7
7
|
export { a as BaseServiceOptions, R as RequestSignal, S as ServiceConstructor, b as ServiceRegistration } from './BaseService-DO7vZ67k.js';
|
|
8
8
|
import { IKVService } from './kv/index.js';
|
|
9
9
|
export { IPrefixedKVService, KVService, PrefixedKVService } from './kv/index.js';
|
|
10
|
-
export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING,
|
|
10
|
+
export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, av as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, aw as KVAction, ax as KVActionType, ay as KVBatchPutItem, az as KVBatchPutOptions, aA as KVBatchPutResponse, aB as KVBatchReadResponse, aC as KVChange, aD as KVChangesAuthority, aE as KVChangesOptions, aF as KVChangesResponse, aG as KVCreateSignedReadUrlOptions, aH as KVDeleteOptions, aI as KVGetOptions, aJ as KVHeadOptions, aK as KVListOptions, b as KVListPage, aL as KVListResponse, aM as KVPutOptions, c as KVReadThrough, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, aN as KVResponse, aO as KVResponseHeaders, aP as KVServiceConfig, aQ as KVSignedReadUrlResponse, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, w as PurgeTarget, x as ReplicaAccountGate, y as ReplicaAdmitHook, z as ReplicaAuthorityState, B as ReplicaBrowserGateAccess, D as ReplicaBrowserGateSnapshot, E as ReplicaBrowserGateTx, F as ReplicaBrowserPageAdmission, G as ReplicaClock, H as ReplicaCoverage, I as ReplicaDeliveryDecision, J as ReplicaDenyInput, M as ReplicaDenyOutcome, N as ReplicaDevice, O as ReplicaEraseReport, Q as ReplicaGateAccess, S as ReplicaGateReason, T as ReplicaGateScope, U as ReplicaGateSnapshot, V as ReplicaGateTx, W as ReplicaGatedError, X as ReplicaGatedHandle, Y as ReplicaGatedSpec, Z as ReplicaGatedStorage, _ as ReplicaGrantInfo, $ as ReplicaGuardedStore, a0 as ReplicaInspectedStatus, a1 as ReplicaLifecycleGate, a2 as ReplicaLocalEraseOutcome, a3 as ReplicaPageAdmission, a4 as ReplicaPartitionEraser, a5 as ReplicaPartitionIndexEntry, a6 as ReplicaPeerCommit, a7 as ReplicaPrivateGateHash, a8 as ReplicaPurgeError, a9 as ReplicaPurgeFailedEvent, aa as ReplicaPurgeIntent, ab as ReplicaPurgeLocalCopyResult, ac as ReplicaPurgeTrigger, ad as ReplicaQuotaLedger, ae as ReplicaQuotaSpec, af as ReplicaSessionStamp, ag as ReplicaStampedReply, ah as ReplicaState, ai as ReplicaStatusEntry, aj as ReplicationAuthority, ak as ReplicationControl, al as ReplicationEvent, R as ReplicationIdentity, am as ReplicationOptions, an as ReplicationPurgeReport, ao as ReplicationReason, ap as ReplicationScheduler, aq as ResolvedReplicationOptions, ar as SaltedHash, as as canonicalReplicationIdentity, at as replicationIdentityKey, au as requiresSecretsOptIn } from './scope-1-8skVDk.js';
|
|
11
11
|
export { ClampConsentAnchor, ConsentDeadlineMs, EffectiveGrantExpiry, EffectiveGrantExpiryInput, MintRemainingMs, NeedsSilentRenewal, ReplicaConsentAnchor, ReplicaConsentSource, ReplicaGrantPolicy } from './kv/replication/grantPolicyTypes.js';
|
|
12
12
|
export { BatchOptions, BatchResponse, DatabaseHandle, ExecuteOptions, ExecuteResponse, IDatabaseHandle, ISQLMigrations, ISQLService, QueryOptions, QueryResponse, SQLAction, SQLActionType, SQLMigrations, SQLService, SQLServiceConfig, SqlMigration, SqlMigrationApplyOptions, SqlMigrationApplyResponse, SqlStatement, SqlValue } from './sql/index.js';
|
|
13
|
-
import { D as DecryptCapabilityProof } from './types-
|
|
14
|
-
export { B as BuildDecryptInvocationInput, a as BuiltDecryptInvocation, C as CanonicalJson, b as DECRYPT_ACTION, c as DECRYPT_FACT_TYPE, d as DECRYPT_RESULT_TYPE, e as DEFAULT_ENCRYPTION_ALG, f as DEFAULT_KEY_VERSION, g as DecryptInvocationFact, h as DecryptInvocationSigner, i as DecryptRequestBody, j as DecryptResponseBody, k as ENCRYPTION_SERVICE, l as ENCRYPTION_SERVICE_SHORT, m as ENVELOPE_VERSION, E as EncryptionCrypto, n as EncryptionError, o as EncryptionErrorInput, I as InlineEncryptedEnvelope, J as Json, N as NetworkDescriptor, R as ReceiverKeyPair, p as ReceiverKeySigner, q as base64Decode, r as base64Encode, s as canonicalHashHex, t as canonicalizeEncryptionJson, u as encryptionError, v as hexDecode, w as hexEncode, x as utf8Decode, y as utf8Encode } from './types-
|
|
13
|
+
import { D as DecryptCapabilityProof } from './types-DZBExWAf.js';
|
|
14
|
+
export { B as BuildDecryptInvocationInput, a as BuiltDecryptInvocation, C as CanonicalJson, b as DECRYPT_ACTION, c as DECRYPT_FACT_TYPE, d as DECRYPT_RESULT_TYPE, e as DEFAULT_ENCRYPTION_ALG, f as DEFAULT_KEY_VERSION, g as DecryptInvocationFact, h as DecryptInvocationSigner, i as DecryptRequestBody, j as DecryptResponseBody, k as ENCRYPTION_SERVICE, l as ENCRYPTION_SERVICE_SHORT, m as ENVELOPE_VERSION, E as EncryptionCrypto, n as EncryptionError, o as EncryptionErrorInput, I as InlineEncryptedEnvelope, J as Json, N as NetworkDescriptor, R as ReceiverKeyPair, p as ReceiverKeySigner, q as base64Decode, r as base64Encode, s as canonicalHashHex, t as canonicalizeEncryptionJson, u as encryptionError, v as hexDecode, w as hexEncode, x as utf8Decode, y as utf8Encode } from './types-DZBExWAf.js';
|
|
15
15
|
import { IEncryptionService } from './encryption/index.js';
|
|
16
|
-
export { BuildCanonicalDecryptRequestInput, BuildDecryptFactsInput, CanonicalDecryptRequest, DecryptEnvelopeOptions, DecryptTransport, DiscoverNetworkInput, DiscoveredNetwork, DiscoverySource, ENCRYPTION_NETWORK_URN_PREFIX, EncryptToNetworkInput, EncryptToNetworkOptions, EncryptToNetworkResult, EncryptionService, EncryptionServiceConfig, NETWORK_NAME_PATTERN, NetworkIdError, NodeDescriptorFetcher, ParsedNetworkId, RandomReceiverKeyInput, SignedReceiverKeyInput, VerifyDecryptResponseInput, WellKnownDescriptorFetcher, buildCanonicalDecryptRequest, buildDecryptAttenuation, buildDecryptFacts, buildDecryptInvocation, buildNetworkId, canonicalSignedResponse, checkDecryptInvocationInput, decryptEnvelopeWithKey, deriveSignedReceiverKey, discoverNetwork, encryptToNetwork, ensureNetworkUsableForDecrypt, generateRandomReceiverKey, isNetworkId, networkDiscoveryKey, openWrappedKey, parseNetworkId, validateEnvelope, verifyDecryptResponse } from './encryption/index.js';
|
|
16
|
+
export { BuildCanonicalDecryptRequestInput, BuildDecryptFactsInput, CanonicalDecryptRequest, DecryptEnvelopeOptions, DecryptTransport, DiscoverNetworkInput, DiscoveredNetwork, DiscoverySource, ENCRYPTION_NETWORK_URN_PREFIX, EncryptToNetworkInput, EncryptToNetworkOptions, EncryptToNetworkResult, EncryptionService, EncryptionServiceConfig, NETWORK_NAME_PATTERN, NetworkIdError, NodeDescriptorFetcher, ParsedEncryptionResource, ParsedNetworkId, RandomReceiverKeyInput, SignedReceiverKeyInput, VerifyDecryptResponseInput, WellKnownDescriptorFetcher, buildCanonicalDecryptRequest, buildDecryptAttenuation, buildDecryptFacts, buildDecryptInvocation, buildNetworkId, canonicalSignedResponse, checkDecryptInvocationInput, decryptEnvelopeWithKey, deriveSignedReceiverKey, discoverNetwork, encryptToNetwork, ensureNetworkUsableForDecrypt, generateRandomReceiverKey, isNetworkId, networkDiscoveryKey, openWrappedKey, parseEncryptionResource, parseNetworkId, validateEnvelope, verifyDecryptResponse } from './encryption/index.js';
|
|
17
17
|
export { DecryptTransportResponseError } from '@tinycloud/sdk-services/internal/decrypt-transport-response-error';
|
|
18
18
|
export { kvPrefixCovers } from './kv/replication/prefix.js';
|
|
19
19
|
import './kv/replication/contractConstants.js';
|
package/dist/index.js
CHANGED
|
@@ -713,6 +713,26 @@ function parseNetworkId(networkId) {
|
|
|
713
713
|
}
|
|
714
714
|
return { networkId, ownerDid, name };
|
|
715
715
|
}
|
|
716
|
+
function parseEncryptionResource(resource) {
|
|
717
|
+
const networkSeparator = resource.lastIndexOf(":");
|
|
718
|
+
const nameAndPath = resource.slice(networkSeparator + 1);
|
|
719
|
+
const pathSeparator = nameAndPath.indexOf("/");
|
|
720
|
+
const name = pathSeparator === -1 ? nameAndPath : nameAndPath.slice(0, pathSeparator);
|
|
721
|
+
const networkId = pathSeparator === -1 ? resource : `${resource.slice(0, networkSeparator + 1)}${name}`;
|
|
722
|
+
const parsed = parseNetworkId(networkId);
|
|
723
|
+
if (pathSeparator === -1) return parsed;
|
|
724
|
+
const keyPath = nameAndPath.slice(pathSeparator + 1);
|
|
725
|
+
const segments = keyPath.split("/");
|
|
726
|
+
const prefix = keyPath.endsWith("/");
|
|
727
|
+
if (keyPath.length === 0 || /[\u0000-\u001f\u007f\\]/.test(keyPath) || segments.some(
|
|
728
|
+
(segment, index) => segment === "." || segment === ".." || segment.length === 0 && !(prefix && index === segments.length - 1)
|
|
729
|
+
)) {
|
|
730
|
+
throw new NetworkIdError(
|
|
731
|
+
`encryption resource has an invalid keyPath (got ${JSON.stringify(resource)})`
|
|
732
|
+
);
|
|
733
|
+
}
|
|
734
|
+
return { ...parsed, keyPath };
|
|
735
|
+
}
|
|
716
736
|
function buildNetworkId(ownerDid, name) {
|
|
717
737
|
if (typeof ownerDid !== "string" || !ownerDid.startsWith("did:")) {
|
|
718
738
|
throw new NetworkIdError("ownerDid must be a DID");
|
|
@@ -7810,7 +7830,12 @@ function ensureNetworkUsableForDecrypt(descriptor) {
|
|
|
7810
7830
|
|
|
7811
7831
|
// src/encryption/envelope.ts
|
|
7812
7832
|
function encryptToNetwork(crypto2, input) {
|
|
7813
|
-
|
|
7833
|
+
const parsedResource = parseEncryptionResource(
|
|
7834
|
+
input.keyPath === void 0 ? input.networkId : `${input.networkId}/${input.keyPath}`
|
|
7835
|
+
);
|
|
7836
|
+
if (parsedResource.keyPath !== input.keyPath || input.keyPath?.endsWith("/")) {
|
|
7837
|
+
throw new NetworkIdError("keyPath must name an exact encryption key");
|
|
7838
|
+
}
|
|
7814
7839
|
const alg = input.alg ?? DEFAULT_ENCRYPTION_ALG;
|
|
7815
7840
|
const keyVersion = input.keyVersion ?? DEFAULT_KEY_VERSION;
|
|
7816
7841
|
const symmetricKey = crypto2.randomBytes(32);
|
|
@@ -7824,6 +7849,7 @@ function encryptToNetwork(crypto2, input) {
|
|
|
7824
7849
|
const envelope = {
|
|
7825
7850
|
v: ENVELOPE_VERSION,
|
|
7826
7851
|
networkId: input.networkId,
|
|
7852
|
+
...input.keyPath !== void 0 ? { keyPath: input.keyPath } : {},
|
|
7827
7853
|
alg,
|
|
7828
7854
|
keyVersion,
|
|
7829
7855
|
encryptedSymmetricKey,
|
|
@@ -7855,13 +7881,24 @@ function validateEnvelope(crypto2, envelope) {
|
|
|
7855
7881
|
};
|
|
7856
7882
|
}
|
|
7857
7883
|
try {
|
|
7858
|
-
|
|
7884
|
+
if (parseEncryptionResource(e.networkId).keyPath !== void 0) {
|
|
7885
|
+
throw new Error("networkId must identify the network root");
|
|
7886
|
+
}
|
|
7887
|
+
if (e.keyPath !== void 0) {
|
|
7888
|
+
if (typeof e.keyPath !== "string") {
|
|
7889
|
+
throw new Error("keyPath must be a string");
|
|
7890
|
+
}
|
|
7891
|
+
const parsed = parseEncryptionResource(`${e.networkId}/${e.keyPath}`);
|
|
7892
|
+
if (parsed.keyPath !== e.keyPath || e.keyPath.endsWith("/")) {
|
|
7893
|
+
throw new Error("keyPath must name an exact encryption key");
|
|
7894
|
+
}
|
|
7895
|
+
}
|
|
7859
7896
|
} catch (err3) {
|
|
7860
7897
|
return {
|
|
7861
7898
|
ok: false,
|
|
7862
7899
|
error: encryptionError({
|
|
7863
7900
|
code: "INVALID_ENVELOPE",
|
|
7864
|
-
message: `envelope
|
|
7901
|
+
message: `envelope encryption resource is malformed: ${err3 instanceof Error ? err3.message : String(err3)}`
|
|
7865
7902
|
})
|
|
7866
7903
|
};
|
|
7867
7904
|
}
|
|
@@ -7934,6 +7971,7 @@ function buildDecryptFacts(input) {
|
|
|
7934
7971
|
type: DECRYPT_FACT_TYPE,
|
|
7935
7972
|
targetNode: input.body.targetNode,
|
|
7936
7973
|
networkId: input.body.networkId,
|
|
7974
|
+
...input.body.keyPath !== void 0 ? { keyPath: input.body.keyPath } : {},
|
|
7937
7975
|
bodyHash,
|
|
7938
7976
|
encryptedSymmetricKeyHash: input.encryptedSymmetricKeyHash,
|
|
7939
7977
|
receiverPublicKeyHash,
|
|
@@ -7941,10 +7979,14 @@ function buildDecryptFacts(input) {
|
|
|
7941
7979
|
keyVersion: input.body.keyVersion
|
|
7942
7980
|
};
|
|
7943
7981
|
}
|
|
7944
|
-
function buildDecryptAttenuation(networkId) {
|
|
7945
|
-
|
|
7982
|
+
function buildDecryptAttenuation(networkId, keyPath) {
|
|
7983
|
+
const resource = keyPath === void 0 ? networkId : `${networkId}/${keyPath}`;
|
|
7984
|
+
const parsed = parseEncryptionResource(resource);
|
|
7985
|
+
if (parsed.networkId !== networkId || parsed.keyPath !== keyPath || keyPath?.endsWith("/")) {
|
|
7986
|
+
throw new NetworkIdError("keyPath must name an exact encryption key");
|
|
7987
|
+
}
|
|
7946
7988
|
return {
|
|
7947
|
-
[
|
|
7989
|
+
[resource]: {
|
|
7948
7990
|
[DECRYPT_ACTION]: {}
|
|
7949
7991
|
}
|
|
7950
7992
|
};
|
|
@@ -8004,6 +8046,15 @@ function checkDecryptInvocationInput(crypto2, input) {
|
|
|
8004
8046
|
})
|
|
8005
8047
|
};
|
|
8006
8048
|
}
|
|
8049
|
+
if (input.facts.keyPath !== input.body.keyPath) {
|
|
8050
|
+
return {
|
|
8051
|
+
ok: false,
|
|
8052
|
+
error: encryptionError({
|
|
8053
|
+
code: "INVALID_INPUT",
|
|
8054
|
+
message: "facts.keyPath must equal body.keyPath"
|
|
8055
|
+
})
|
|
8056
|
+
};
|
|
8057
|
+
}
|
|
8007
8058
|
if (input.facts.alg !== input.body.alg) {
|
|
8008
8059
|
return {
|
|
8009
8060
|
ok: false,
|
|
@@ -8041,7 +8092,9 @@ function checkDecryptInvocationInput(crypto2, input) {
|
|
|
8041
8092
|
};
|
|
8042
8093
|
}
|
|
8043
8094
|
try {
|
|
8044
|
-
|
|
8095
|
+
if (parseEncryptionResource(input.networkId).keyPath !== void 0) {
|
|
8096
|
+
throw new NetworkIdError("networkId must identify the network root");
|
|
8097
|
+
}
|
|
8045
8098
|
} catch (err3) {
|
|
8046
8099
|
return {
|
|
8047
8100
|
ok: false,
|
|
@@ -8051,6 +8104,22 @@ function checkDecryptInvocationInput(crypto2, input) {
|
|
|
8051
8104
|
})
|
|
8052
8105
|
};
|
|
8053
8106
|
}
|
|
8107
|
+
try {
|
|
8108
|
+
const resource = parseEncryptionResource(
|
|
8109
|
+
input.body.keyPath === void 0 ? input.body.networkId : `${input.body.networkId}/${input.body.keyPath}`
|
|
8110
|
+
);
|
|
8111
|
+
if (resource.keyPath !== input.body.keyPath || input.body.keyPath?.endsWith("/")) {
|
|
8112
|
+
throw new NetworkIdError("keyPath must name an exact encryption key");
|
|
8113
|
+
}
|
|
8114
|
+
} catch (err3) {
|
|
8115
|
+
return {
|
|
8116
|
+
ok: false,
|
|
8117
|
+
error: encryptionError({
|
|
8118
|
+
code: "INVALID_INPUT",
|
|
8119
|
+
message: err3 instanceof Error ? err3.message : String(err3)
|
|
8120
|
+
})
|
|
8121
|
+
};
|
|
8122
|
+
}
|
|
8054
8123
|
const canonicalBody = canonicalize(
|
|
8055
8124
|
input.body
|
|
8056
8125
|
);
|
|
@@ -8291,6 +8360,7 @@ var EncryptionService = class extends BaseService {
|
|
|
8291
8360
|
// that spelling in the envelope so a later response can be compared
|
|
8292
8361
|
// byte-for-byte (notably for checksummed did:pkh principals).
|
|
8293
8362
|
networkId: descriptor.networkId,
|
|
8363
|
+
...options?.keyPath !== void 0 ? { keyPath: options.keyPath } : {},
|
|
8294
8364
|
networkPublicKey,
|
|
8295
8365
|
plaintext,
|
|
8296
8366
|
...options?.aad !== void 0 ? { aad: options.aad } : {},
|
|
@@ -8350,6 +8420,7 @@ var EncryptionService = class extends BaseService {
|
|
|
8350
8420
|
type: DECRYPT_FACT_TYPE,
|
|
8351
8421
|
targetNode,
|
|
8352
8422
|
networkId: envelope.networkId,
|
|
8423
|
+
...envelope.keyPath !== void 0 ? { keyPath: envelope.keyPath } : {},
|
|
8353
8424
|
alg: envelope.alg,
|
|
8354
8425
|
keyVersion: envelope.keyVersion,
|
|
8355
8426
|
encryptedSymmetricKey: envelope.encryptedSymmetricKey,
|
|
@@ -8565,6 +8636,7 @@ export {
|
|
|
8565
8636
|
openWrappedKey,
|
|
8566
8637
|
parseAuthError,
|
|
8567
8638
|
parseCapabilityResource,
|
|
8639
|
+
parseEncryptionResource,
|
|
8568
8640
|
parseNetworkId,
|
|
8569
8641
|
parsePermissionHint,
|
|
8570
8642
|
parsePermissionHintFromErrorText,
|