@katlux/providers 0.1.1-alpha.128 → 0.1.1-alpha.129
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/index.cjs +3407 -1471
- package/dist/index.d.cts +617 -3
- package/dist/index.d.mts +617 -3
- package/dist/index.d.ts +617 -3
- package/dist/index.mjs +3398 -1472
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -296,6 +296,361 @@ interface IDeriveAuthAndEncryptionOptions {
|
|
|
296
296
|
authInfo?: string;
|
|
297
297
|
encryptionInfo?: string;
|
|
298
298
|
extractable?: boolean;
|
|
299
|
+
/** Optional flag specifying whether encryptionKey should be extractable (defaults to extractable) */
|
|
300
|
+
encryptionKeyExtractable?: boolean;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Options for re-keying an existing AES-GCM encrypted envelope.
|
|
304
|
+
*/
|
|
305
|
+
interface IRekeyPayloadOptions {
|
|
306
|
+
/** Original Authenticated Additional Data (AAD) bound to the envelope */
|
|
307
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
308
|
+
/** New AAD to bind to the re-encrypted envelope (defaults to options.aad) */
|
|
309
|
+
newAad?: string | Uint8Array | ArrayBuffer;
|
|
310
|
+
/** New Key Identifier (kid) to associate with the re-encrypted envelope */
|
|
311
|
+
newKid?: string;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Parameters for zero-knowledge client-side user keypair re-keying pipeline.
|
|
315
|
+
*/
|
|
316
|
+
interface IRekeyKeypairParams {
|
|
317
|
+
/** RSA-OAEP PKCS#8 private key envelope, encrypted under current KEK */
|
|
318
|
+
encryptedPrivateKey: IEncryptedPayload;
|
|
319
|
+
/** ECDSA PKCS#8 signing private key envelope, encrypted under current KEK */
|
|
320
|
+
encryptedSigningKey: IEncryptedPayload;
|
|
321
|
+
/** Current user master passphrase */
|
|
322
|
+
currentPassphrase: string;
|
|
323
|
+
/** New user master passphrase */
|
|
324
|
+
newPassphrase: string;
|
|
325
|
+
/** Current salt used for PBKDF2 stretching */
|
|
326
|
+
currentSalt: string | Uint8Array;
|
|
327
|
+
/** KDF options for stretching current passphrase (defaults to 310,000 iterations, SHA-256) */
|
|
328
|
+
kdfOptions?: IDeriveAuthAndEncryptionOptions;
|
|
329
|
+
/** Optional upgraded KDF options for stretching new passphrase (e.g. higher iteration count) */
|
|
330
|
+
newKdfOptions?: IDeriveAuthAndEncryptionOptions;
|
|
331
|
+
/** Optional public keys to verify keypair consistency (RSA encrypt/decrypt roundtrip & ECDSA sign/verify) */
|
|
332
|
+
publicKeys?: {
|
|
333
|
+
encryption?: CryptoKey;
|
|
334
|
+
signing?: CryptoKey;
|
|
335
|
+
};
|
|
336
|
+
/** Optional AAD bound to current encryptedPrivateKey */
|
|
337
|
+
privateKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
338
|
+
/** Optional AAD bound to current encryptedSigningKey */
|
|
339
|
+
signingKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
340
|
+
/** Optional new AAD to bind to re-encrypted privateKey (defaults to privateKeyAad) */
|
|
341
|
+
newPrivateKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
342
|
+
/** Optional new AAD to bind to re-encrypted signingKey (defaults to signingKeyAad) */
|
|
343
|
+
newSigningKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Result of zero-knowledge user keypair re-keying pipeline.
|
|
347
|
+
*/
|
|
348
|
+
interface IRekeyedKeypairResult {
|
|
349
|
+
/** RSA-OAEP private key re-encrypted under the new KEK */
|
|
350
|
+
encryptedPrivateKey: IEncryptedPayload;
|
|
351
|
+
/** ECDSA signing private key re-encrypted under the new KEK */
|
|
352
|
+
encryptedSigningKey: IEncryptedPayload;
|
|
353
|
+
/** Fresh Base64-encoded salt generated for the new passphrase */
|
|
354
|
+
newSalt: string;
|
|
355
|
+
/** Fresh domain-separated subkeys derived from the new passphrase and new salt */
|
|
356
|
+
newKeys: IDomainDerivedKeys;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Stored cryptographic public key pin record.
|
|
360
|
+
*/
|
|
361
|
+
interface IKeyPin {
|
|
362
|
+
/** Unique identifier of the peer / entity */
|
|
363
|
+
entityId: string;
|
|
364
|
+
/** Deterministic public key fingerprint formatted as `SHA256:<base64url>` */
|
|
365
|
+
fingerprint: string;
|
|
366
|
+
/** Timestamp (epoch ms) when this pin was established */
|
|
367
|
+
pinnedAt: number;
|
|
368
|
+
/** Last accepted reset sequence number (0 for initial TOFU pin) */
|
|
369
|
+
attestationSequence: number;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Storage adapter interface for public key pinning records.
|
|
373
|
+
*/
|
|
374
|
+
interface IKeyPinningStore {
|
|
375
|
+
/**
|
|
376
|
+
* Retrieves an existing key pin for the specified entityId, or null if none exists.
|
|
377
|
+
*/
|
|
378
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
379
|
+
/**
|
|
380
|
+
* Atomic compare-and-set: writes only if current pinned fingerprint equals expectedFingerprint (null = no pin).
|
|
381
|
+
* Returns true if the record was written/updated, false if condition failed.
|
|
382
|
+
*/
|
|
383
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
384
|
+
/**
|
|
385
|
+
* Removes a pinned entity key record.
|
|
386
|
+
*/
|
|
387
|
+
delete(entityId: string): Promise<void>;
|
|
388
|
+
/**
|
|
389
|
+
* Clears all key pins in the store.
|
|
390
|
+
*/
|
|
391
|
+
clear(): Promise<void>;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Unsigned key-reset attestation payload.
|
|
395
|
+
*/
|
|
396
|
+
interface IKeyResetAttestation {
|
|
397
|
+
/** Schema version, strictly 1 */
|
|
398
|
+
version: 1;
|
|
399
|
+
/** Unique identifier of the entity whose key is being replaced */
|
|
400
|
+
entityId: string;
|
|
401
|
+
/** Currently pinned public key fingerprint */
|
|
402
|
+
oldFingerprint: string;
|
|
403
|
+
/** Newly issued public key fingerprint */
|
|
404
|
+
newFingerprint: string;
|
|
405
|
+
/** Strictly increasing sequence number per entity */
|
|
406
|
+
sequence: number;
|
|
407
|
+
/** Timestamp (epoch ms) when attestation was created */
|
|
408
|
+
issuedAt: number;
|
|
409
|
+
/** Timestamp (epoch ms) when attestation expires */
|
|
410
|
+
expiresAt: number;
|
|
411
|
+
/** Public key fingerprint of the signing recovery authority */
|
|
412
|
+
authorityFingerprint: string;
|
|
413
|
+
/** Optional human-readable or audit reason for reset */
|
|
414
|
+
reason?: string;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Digitally signed key-reset attestation.
|
|
418
|
+
*/
|
|
419
|
+
interface ISignedKeyResetAttestation {
|
|
420
|
+
/** Canonical attestation payload */
|
|
421
|
+
attestation: IKeyResetAttestation;
|
|
422
|
+
/** Base64-encoded ECDSA P-256 signature */
|
|
423
|
+
signature: string;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Audit event dispatched when a public key pin is created or updated.
|
|
427
|
+
*/
|
|
428
|
+
interface IKeyPinChangeEvent {
|
|
429
|
+
/** Identifier of the entity */
|
|
430
|
+
entityId: string;
|
|
431
|
+
/** Previous pinned fingerprint, or null on initial TOFU */
|
|
432
|
+
previousFingerprint: string | null;
|
|
433
|
+
/** New pinned fingerprint */
|
|
434
|
+
newFingerprint: string;
|
|
435
|
+
/** Sequence number (0 for TOFU, > 0 for attested resets) */
|
|
436
|
+
sequence: number;
|
|
437
|
+
/** Type of change */
|
|
438
|
+
type: 'tofu' | 'attested_reset';
|
|
439
|
+
/** Epoch timestamp in ms */
|
|
440
|
+
timestamp: number;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Authority input type for verifyAndPinKey: CryptoKey, key object with fingerprint, Record, or Map.
|
|
444
|
+
*/
|
|
445
|
+
type TTrustedAuthorities = Array<CryptoKey | {
|
|
446
|
+
key: CryptoKey;
|
|
447
|
+
fingerprint?: string;
|
|
448
|
+
}> | Record<string, CryptoKey> | Map<string, CryptoKey>;
|
|
449
|
+
/**
|
|
450
|
+
* Options for CKeyManager.verifyAndPinKey.
|
|
451
|
+
*/
|
|
452
|
+
interface IVerifyAndPinOptions {
|
|
453
|
+
/** Storage adapter for persisting key pins */
|
|
454
|
+
store: IKeyPinningStore;
|
|
455
|
+
/** Provisioned out-of-band authority public keys */
|
|
456
|
+
trustedAuthorities: TTrustedAuthorities;
|
|
457
|
+
/** Optional resolver for fetching signed reset attestation when pin mismatch occurs */
|
|
458
|
+
fetchAttestation?: (entityId: string, oldFingerprint: string, newFingerprint: string) => Promise<ISignedKeyResetAttestation | null | undefined>;
|
|
459
|
+
/** Allowed clock skew in milliseconds (defaults to 5 minutes = 300,000ms) */
|
|
460
|
+
clockSkewMs?: number;
|
|
461
|
+
/** Maximum allowable validity window between issuedAt and expiresAt (defaults to 7 days = 604,800,000ms) */
|
|
462
|
+
maxExpirationWindowMs?: number;
|
|
463
|
+
/** Current epoch timestamp in ms (defaults to Date.now(), useful for testing) */
|
|
464
|
+
now?: number;
|
|
465
|
+
/** Audit hook invoked whenever a pin is created or modified */
|
|
466
|
+
onPinChange?: (event: IKeyPinChangeEvent) => void | Promise<void> | any;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Verification result returned by CKeyManager.verifyAndPinKey.
|
|
470
|
+
*/
|
|
471
|
+
interface IVerifyAndPinResult {
|
|
472
|
+
/** True if the key is trusted and pinned */
|
|
473
|
+
trusted: boolean;
|
|
474
|
+
/** True if this is the first contact (Trust On First Use) */
|
|
475
|
+
firstUse?: boolean;
|
|
476
|
+
/** True if a key-reset attestation was verified to update an existing pin */
|
|
477
|
+
resetVerified?: boolean;
|
|
478
|
+
/** Public key fingerprint of the verified key */
|
|
479
|
+
fingerprint: string;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Lifecycle status for blind-index HMAC keys in a multi-KID keyring.
|
|
483
|
+
*/
|
|
484
|
+
type TBlindIndexKeyStatus = 'active' | 'search-only' | 'retired';
|
|
485
|
+
/**
|
|
486
|
+
* Keyring mapping key IDs to HMAC CryptoKeys and their lifecycle status.
|
|
487
|
+
* Exactly one key must be 'active', matching activeKid.
|
|
488
|
+
*/
|
|
489
|
+
interface IBlindIndexKeyring {
|
|
490
|
+
/** Active key identifier used for all write-time blind index token generation */
|
|
491
|
+
activeKid: string;
|
|
492
|
+
/** Dictionary of key descriptors and their lifecycle statuses */
|
|
493
|
+
keys: Record<string, {
|
|
494
|
+
key: CryptoKey;
|
|
495
|
+
status: TBlindIndexKeyStatus;
|
|
496
|
+
algorithm?: string;
|
|
497
|
+
}>;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Abstract persistence filter clause emitted by rewriteEncryptedFilters.
|
|
501
|
+
*/
|
|
502
|
+
interface IAbstractPersistenceClause {
|
|
503
|
+
/** Target column name (e.g. 'email_bidx') */
|
|
504
|
+
column: string;
|
|
505
|
+
/** Abstract operator ('in' or 'notIn') */
|
|
506
|
+
op: 'in' | 'notIn' | 'eq' | 'neq' | 'raw';
|
|
507
|
+
/** Candidate values / token list */
|
|
508
|
+
values: string[] | any[];
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Supported SQL / persistence dialects for query rendering.
|
|
512
|
+
*/
|
|
513
|
+
type TPersistenceDialect = 'postgres' | 'postgresql' | 'sqlite' | 'mysql';
|
|
514
|
+
/**
|
|
515
|
+
* Blind-index field configuration options.
|
|
516
|
+
*/
|
|
517
|
+
interface IBlindIndexFieldConfig {
|
|
518
|
+
/** Custom target persistence column name (defaults to `${fieldName}_bidx`) */
|
|
519
|
+
column?: string;
|
|
520
|
+
/** Blind index keyring */
|
|
521
|
+
keyring: IBlindIndexKeyring;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Options for rewriteEncryptedFilters.
|
|
525
|
+
*/
|
|
526
|
+
interface IEncryptedFilterRewriteOptions {
|
|
527
|
+
/** Map of field names to their blind-index column configuration or keyring */
|
|
528
|
+
blindIndexFields?: Record<string, IBlindIndexFieldConfig | IBlindIndexKeyring>;
|
|
529
|
+
/** Maximum allowable candidate tokens across all expanded values (defaults to 500) */
|
|
530
|
+
maxCandidateTokens?: number;
|
|
531
|
+
/** Target database dialect for SQL clause rendering (defaults to 'postgres') */
|
|
532
|
+
dialect?: TPersistenceDialect;
|
|
533
|
+
/** Parameter index offset for parameterized queries (defaults to 1) */
|
|
534
|
+
paramOffset?: number;
|
|
535
|
+
/** Maximum parameter limit before chunking (defaults: SQLite 999, MySQL 65535, Postgres unlimited) */
|
|
536
|
+
maxParametersPerClause?: number;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Rendered SQL fragment with parameterized bindings.
|
|
540
|
+
*/
|
|
541
|
+
interface IRenderedSqlClause {
|
|
542
|
+
sql: string;
|
|
543
|
+
params: any[];
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Result returned by rewriteEncryptedFilters.
|
|
547
|
+
*/
|
|
548
|
+
interface IRewrittenPersistenceQuery {
|
|
549
|
+
/** Abstract dialect-agnostic persistence clauses */
|
|
550
|
+
clauses: IAbstractPersistenceClause[];
|
|
551
|
+
/** Total candidate tokens generated across all filters */
|
|
552
|
+
totalCandidateTokens: number;
|
|
553
|
+
/** Formats the abstract clauses into a dialect-specific SQL string and parameter array */
|
|
554
|
+
format(dialect?: TPersistenceDialect, options?: {
|
|
555
|
+
paramOffset?: number;
|
|
556
|
+
maxParametersPerClause?: number;
|
|
557
|
+
}): IRenderedSqlClause;
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Options for reencryptBatch.
|
|
561
|
+
*/
|
|
562
|
+
interface IReencryptBatchOptions<TRow = any> {
|
|
563
|
+
/** Target Key Identifier to migrate payloads to */
|
|
564
|
+
targetKid: string;
|
|
565
|
+
/** Keyring containing source keys and target key */
|
|
566
|
+
keyring: Record<string, CryptoKey | string | Uint8Array | (() => Promise<CryptoKey>)>;
|
|
567
|
+
/** Model fields containing IEncryptedPayload envelopes */
|
|
568
|
+
encryptedFields: string[];
|
|
569
|
+
/** Optional blind index configuration for sensitive fields */
|
|
570
|
+
blindIndex?: {
|
|
571
|
+
fields: string[];
|
|
572
|
+
keyring: IBlindIndexKeyring;
|
|
573
|
+
/** Optional mapping from field name to persistence column name (defaults to `${fieldName}_bidx`) */
|
|
574
|
+
columnMap?: Record<string, string>;
|
|
575
|
+
};
|
|
576
|
+
/** Concurrency version field name on row (default: 'updatedAt') */
|
|
577
|
+
versionField?: string;
|
|
578
|
+
/** Primary key extractor callback (defaults to (row) => row.id) */
|
|
579
|
+
getRowId?: (row: TRow) => string | number;
|
|
580
|
+
/** Force re-encryption even if kid === targetKid (default: false) */
|
|
581
|
+
force?: boolean;
|
|
582
|
+
/** Optional base AAD or contextual fields for AEAD binding */
|
|
583
|
+
baseAad?: string;
|
|
584
|
+
aadFields?: string[];
|
|
585
|
+
buildAad?: (row: TRow, fieldName: string) => string | Uint8Array | undefined;
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Result returned by reencryptBatch.
|
|
589
|
+
*/
|
|
590
|
+
interface IReencryptBatchResult<TRow = any> {
|
|
591
|
+
rows: Array<{
|
|
592
|
+
row: TRow;
|
|
593
|
+
id: string | number;
|
|
594
|
+
needsUpdate: boolean;
|
|
595
|
+
patch: Partial<TRow>;
|
|
596
|
+
expectedVersion: any;
|
|
597
|
+
updatedFields: string[];
|
|
598
|
+
skippedFields: string[];
|
|
599
|
+
}>;
|
|
600
|
+
scannedCount: number;
|
|
601
|
+
migratedCount: number;
|
|
602
|
+
skippedCount: number;
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Universal orchestrator options for dataset re-encryption.
|
|
606
|
+
*/
|
|
607
|
+
interface IReencryptDatasetOptions<TRow = any> extends IReencryptBatchOptions<TRow> {
|
|
608
|
+
/** Size of each chunk fetched into memory (default: 100) */
|
|
609
|
+
batchSize?: number;
|
|
610
|
+
/** Starting cursor for resuming an interrupted migration */
|
|
611
|
+
cursor?: string | number;
|
|
612
|
+
/** Maximum retry attempts when an optimistic lock conflict occurs (default: 3) */
|
|
613
|
+
maxRetries?: number;
|
|
614
|
+
/** Dry run mode: executes decryption and validation without committing writes */
|
|
615
|
+
dryRun?: boolean;
|
|
616
|
+
/** Callback to fetch a batch of rows ordered by cursor/primary key */
|
|
617
|
+
fetchBatch: (cursor: string | number | undefined, limit: number) => Promise<{
|
|
618
|
+
rows: TRow[];
|
|
619
|
+
nextCursor?: string | number;
|
|
620
|
+
totalCount?: number;
|
|
621
|
+
}>;
|
|
622
|
+
/** Callback to persist updated row with optimistic lock verification. Returns false on conflict. */
|
|
623
|
+
updateRow: (rowId: string | number, patch: Partial<TRow>, expectedVersion: any) => Promise<boolean>;
|
|
624
|
+
/** Callback to refetch a single conflicting record during optimistic concurrency retries */
|
|
625
|
+
refetchRow?: (rowId: string | number) => Promise<TRow | null>;
|
|
626
|
+
/** Progress telemetry callback */
|
|
627
|
+
onProgress?: (progress: IMigrationProgress) => void;
|
|
628
|
+
/** Cancellation signal for cooperative abort */
|
|
629
|
+
signal?: AbortSignal;
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* Telemetry emitted by reencryptDataset during migration.
|
|
633
|
+
*/
|
|
634
|
+
interface IMigrationProgress {
|
|
635
|
+
scannedRows: number;
|
|
636
|
+
migratedRows: number;
|
|
637
|
+
skippedRows: number;
|
|
638
|
+
conflictRows: number;
|
|
639
|
+
currentCursor?: string | number;
|
|
640
|
+
percentComplete?: number;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Final execution report returned by reencryptDataset.
|
|
644
|
+
*/
|
|
645
|
+
interface IMigrationSummary {
|
|
646
|
+
success: boolean;
|
|
647
|
+
scannedRows: number;
|
|
648
|
+
migratedRows: number;
|
|
649
|
+
skippedRows: number;
|
|
650
|
+
conflictRows: number;
|
|
651
|
+
lastProcessedCursor?: string | number;
|
|
652
|
+
completed: boolean;
|
|
653
|
+
durationMs: number;
|
|
299
654
|
}
|
|
300
655
|
|
|
301
656
|
/**
|
|
@@ -1958,7 +2313,7 @@ declare class CKeyManager {
|
|
|
1958
2313
|
*/
|
|
1959
2314
|
static wrapKey(keyToWrap: CryptoKey, wrappingKey: CryptoKey, format?: KeyFormat): Promise<string>;
|
|
1960
2315
|
/**
|
|
1961
|
-
* Unwraps a base64-encoded wrapped key using an unwrapping key (AES-KW or RSA-OAEP).
|
|
2316
|
+
* Unwraps a base64-encoded wrapped key using an unwrapping key (AES-KW, AES-GCM, or RSA-OAEP).
|
|
1962
2317
|
*/
|
|
1963
2318
|
static unwrapKey(wrappedBase64: string, unwrappingKey: CryptoKey, unwrappedKeyAlgorithm?: any, extractable?: boolean, keyUsages?: KeyUsage[], format?: KeyFormat): Promise<CryptoKey>;
|
|
1964
2319
|
/**
|
|
@@ -2062,6 +2417,130 @@ declare class CKeyManager {
|
|
|
2062
2417
|
* Verifies the authenticity and integrity of a signed access grant against granter public key.
|
|
2063
2418
|
*/
|
|
2064
2419
|
static verifyGrant(signedGrant: ISignedGrant, granterPublicKey: CryptoKey, options?: IVerifyGrantOptions): Promise<boolean>;
|
|
2420
|
+
/**
|
|
2421
|
+
* Encrypts raw bytes (e.g. PKCS#8 private key) into a standardized Katlux AES-GCM envelope.
|
|
2422
|
+
*
|
|
2423
|
+
* @param data - Raw byte buffer or Uint8Array to encrypt
|
|
2424
|
+
* @param key - AES-GCM CryptoKey (KEK)
|
|
2425
|
+
* @param options - Optional AAD, IV, or Key Identifier (kid)
|
|
2426
|
+
*/
|
|
2427
|
+
static encryptPayload(data: ArrayBuffer | Uint8Array, key: CryptoKey, options?: {
|
|
2428
|
+
iv?: Uint8Array;
|
|
2429
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
2430
|
+
kid?: string;
|
|
2431
|
+
}): Promise<IEncryptedPayload>;
|
|
2432
|
+
/**
|
|
2433
|
+
* Decrypts an AES-GCM encrypted envelope back into raw bytes.
|
|
2434
|
+
*
|
|
2435
|
+
* @param payload - Standardized Katlux AES-GCM envelope
|
|
2436
|
+
* @param key - AES-GCM CryptoKey (KEK)
|
|
2437
|
+
* @param options - Optional AAD
|
|
2438
|
+
* @returns Raw decrypted ArrayBuffer
|
|
2439
|
+
*/
|
|
2440
|
+
static decryptPayload(payload: IEncryptedPayload, key: CryptoKey, options?: {
|
|
2441
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
2442
|
+
}): Promise<ArrayBuffer>;
|
|
2443
|
+
/**
|
|
2444
|
+
* Atomically re-keys an existing AES-GCM encrypted envelope from oldKey to newKey.
|
|
2445
|
+
* Decrypts with oldKey, derives a fresh random 96-bit IV, and re-encrypts with newKey.
|
|
2446
|
+
* Memory zeroization of internal plaintext and ciphertext buffers is guaranteed via try...finally.
|
|
2447
|
+
*
|
|
2448
|
+
* @param payload - Existing AES-GCM encrypted payload envelope
|
|
2449
|
+
* @param oldKey - Current AES-GCM CryptoKey (KEK)
|
|
2450
|
+
* @param newKey - New AES-GCM CryptoKey (KEK)
|
|
2451
|
+
* @param options - Optional AAD, newAad, and newKid overrides
|
|
2452
|
+
*/
|
|
2453
|
+
static rekeyEncryptedPayload(payload: IEncryptedPayload, oldKey: CryptoKey, newKey: CryptoKey, options?: IRekeyPayloadOptions): Promise<IEncryptedPayload>;
|
|
2454
|
+
/**
|
|
2455
|
+
* Zero-knowledge master passphrase re-keying pipeline for user keypairs.
|
|
2456
|
+
*
|
|
2457
|
+
* Persistence Contract:
|
|
2458
|
+
* The caller must persist `encryptedPrivateKey`, `encryptedSigningKey`, `newSalt`, and the server
|
|
2459
|
+
* auth verifier ATOMICALLY (within a single database transaction or API request).
|
|
2460
|
+
* Partial persistence will lock the user out permanently.
|
|
2461
|
+
*
|
|
2462
|
+
* Zeroization Notice:
|
|
2463
|
+
* JavaScript memory zeroization (`fill(0)`) is best-effort due to garbage collector copies,
|
|
2464
|
+
* string immutability, and V8/SpiderMonkey engine internals. It strictly zeroes typed array buffers
|
|
2465
|
+
* allocated within Katlux control.
|
|
2466
|
+
*
|
|
2467
|
+
* Key Extractability:
|
|
2468
|
+
* All derived Key-Encrypting Keys (KEKs) are strictly non-extractable (`extractable: false`).
|
|
2469
|
+
* `authKey` extractability follows `newKdfOptions.extractable` (defaults to false).
|
|
2470
|
+
*
|
|
2471
|
+
* @param params - Re-keying configuration parameters
|
|
2472
|
+
* @returns Rekeyed private key envelopes, new salt, and fresh derived subkeys
|
|
2473
|
+
*/
|
|
2474
|
+
static rekeyUserKeypair(params: IRekeyKeypairParams): Promise<IRekeyedKeypairResult>;
|
|
2475
|
+
/**
|
|
2476
|
+
* Helper to resolve a CryptoKey from a TTrustedAuthorities structure matching a given authorityFingerprint.
|
|
2477
|
+
*/
|
|
2478
|
+
private static resolveAuthorityCryptoKey;
|
|
2479
|
+
/**
|
|
2480
|
+
* Signs a key-reset attestation using an authority ECDSA P-256 private key.
|
|
2481
|
+
*
|
|
2482
|
+
* Used by trusted recovery authorities or administrators to certify that
|
|
2483
|
+
* an entity's pinned public key was legitimately superseded.
|
|
2484
|
+
*/
|
|
2485
|
+
static signKeyResetAttestation(attestation: {
|
|
2486
|
+
version?: 1;
|
|
2487
|
+
entityId: string;
|
|
2488
|
+
oldFingerprint: string;
|
|
2489
|
+
newFingerprint: string;
|
|
2490
|
+
sequence: number;
|
|
2491
|
+
issuedAt?: number;
|
|
2492
|
+
expiresAt: number;
|
|
2493
|
+
authorityFingerprint?: string;
|
|
2494
|
+
reason?: string;
|
|
2495
|
+
}, authorityPrivateKey: CryptoKey, authorityPublicKey?: CryptoKey): Promise<ISignedKeyResetAttestation>;
|
|
2496
|
+
/**
|
|
2497
|
+
* Verifies an incoming public key against the Key Pinning Store (TOFU),
|
|
2498
|
+
* safely accepting legitimate key replacements accompanied by a valid signed reset attestation.
|
|
2499
|
+
*
|
|
2500
|
+
* Threat Model & Security Considerations:
|
|
2501
|
+
* - Protects against: Substituted public keys from a compromised or rogue key directory after first contact.
|
|
2502
|
+
* - Does not protect against: Initial contact substitution (TOFU attack), malicious JavaScript served by
|
|
2503
|
+
* the same origin, or client-side storage tampering via XSS. Pinning is defense-in-depth.
|
|
2504
|
+
* - Authorities MUST be provisioned out-of-band (e.g. bundled app config), NEVER fetched dynamically from the key server.
|
|
2505
|
+
*
|
|
2506
|
+
* @param entityId - Peer or entity unique identifier
|
|
2507
|
+
* @param publicKey - Presented public key (CryptoKey, SPKI Uint8Array/ArrayBuffer, or PEM/Base64 string)
|
|
2508
|
+
* @param options - Pinning store, trusted authorities, and optional attestation resolver
|
|
2509
|
+
*/
|
|
2510
|
+
static verifyAndPinKey(entityId: string, publicKey: CryptoKey | Uint8Array | ArrayBuffer | string, options: IVerifyAndPinOptions): Promise<IVerifyAndPinResult>;
|
|
2511
|
+
/**
|
|
2512
|
+
* Validates the structural integrity and lifecycle rules of a blind-index keyring.
|
|
2513
|
+
*
|
|
2514
|
+
* Enforcement rules:
|
|
2515
|
+
* - Keyring must be an object with string `activeKid` and `keys` dictionary.
|
|
2516
|
+
* - Exactly one key in `keys` must have `status: 'active'`.
|
|
2517
|
+
* - The active key's key ID must strictly match `activeKid`.
|
|
2518
|
+
* - Every key must possess a valid HMAC `CryptoKey` instance.
|
|
2519
|
+
*
|
|
2520
|
+
* Throws `ERR_BIDX_KEYRING_INVALID` on any violation.
|
|
2521
|
+
*/
|
|
2522
|
+
static validateBlindIndexKeyring(keyring: IBlindIndexKeyring): void;
|
|
2523
|
+
/**
|
|
2524
|
+
* Computes multi-token blind index candidates for search queries across key rotation lifecycles.
|
|
2525
|
+
*
|
|
2526
|
+
* Generates candidate tokens using the currently `active` key and all `search-only` keys.
|
|
2527
|
+
* Normalization (Unicode NFKC -> trim -> lowercase) is 100% identical to write-time tokens.
|
|
2528
|
+
* Returns a de-duplicated array of tokens with the active key's token first.
|
|
2529
|
+
* Returns an empty array `[]` for null/empty inputs.
|
|
2530
|
+
*
|
|
2531
|
+
* @param value - Search term string or primitive
|
|
2532
|
+
* @param keyring - Validated multi-KID blind index keyring
|
|
2533
|
+
*/
|
|
2534
|
+
static computeMultiBlindIndex(value: any, keyring: IBlindIndexKeyring): Promise<string[]>;
|
|
2535
|
+
/**
|
|
2536
|
+
* Computes the write-time blind index token using exclusively the currently active key.
|
|
2537
|
+
*
|
|
2538
|
+
* Used by data ingestion and re-indexing jobs.
|
|
2539
|
+
*
|
|
2540
|
+
* @param value - Ingest value string or primitive
|
|
2541
|
+
* @param keyring - Validated multi-KID blind index keyring
|
|
2542
|
+
*/
|
|
2543
|
+
static computeWriteBlindIndex(value: any, keyring: IBlindIndexKeyring): Promise<string>;
|
|
2065
2544
|
}
|
|
2066
2545
|
|
|
2067
2546
|
interface ICWebCryptoOptions {
|
|
@@ -2444,10 +2923,145 @@ declare function isAuthOrDecryptionError(err: any): boolean;
|
|
|
2444
2923
|
*/
|
|
2445
2924
|
declare function canonicalizeJson(value: any, seen?: Set<any>): string;
|
|
2446
2925
|
|
|
2926
|
+
/**
|
|
2927
|
+
* Web Streams Chunked AEAD Encryption & Decryption for Large Payloads.
|
|
2928
|
+
* Implements the STREAM construction (AES-GCM with 96-bit nonces, wrapped per-stream DEK,
|
|
2929
|
+
* and authenticated header binding). Zero new external dependencies.
|
|
2930
|
+
*/
|
|
2931
|
+
|
|
2932
|
+
interface IStreamEncryptionOptions {
|
|
2933
|
+
/**
|
|
2934
|
+
* Wrapping key: AES-GCM, AES-KW, or RSA-OAEP CryptoKey (or raw key / keyProvider function).
|
|
2935
|
+
* Used to wrap the per-stream DEK. The caller's key may stay non-extractable.
|
|
2936
|
+
*/
|
|
2937
|
+
key: CryptoKey | TKeyProvider;
|
|
2938
|
+
/**
|
|
2939
|
+
* Optional Key Identifier (KID) to embed in the stream header (max 255 bytes UTF-8).
|
|
2940
|
+
*/
|
|
2941
|
+
kid?: string;
|
|
2942
|
+
/**
|
|
2943
|
+
* Plaintext chunk size in bytes. Default: 65536 (64 KiB).
|
|
2944
|
+
* Allowed range: 4096 (4 KiB) to 4194304 (4 MiB).
|
|
2945
|
+
*/
|
|
2946
|
+
chunkSize?: number;
|
|
2947
|
+
}
|
|
2948
|
+
interface IStreamDecryptionOptions {
|
|
2949
|
+
/**
|
|
2950
|
+
* Single unwrap key (CryptoKey or TKeyProvider) to unwrap the per-stream DEK.
|
|
2951
|
+
*/
|
|
2952
|
+
key?: CryptoKey | TKeyProvider;
|
|
2953
|
+
/**
|
|
2954
|
+
* Keyring dictionary mapping kid to CryptoKey or key provider functions.
|
|
2955
|
+
*/
|
|
2956
|
+
keyring?: Record<string, TKeyProvider | IKeyPair>;
|
|
2957
|
+
/**
|
|
2958
|
+
* Alias for keyring to maintain consistency with IProviderEncryptionOptions.
|
|
2959
|
+
*/
|
|
2960
|
+
keys?: Record<string, TKeyProvider | IKeyPair>;
|
|
2961
|
+
}
|
|
2962
|
+
interface IStreamWithBufferMetric<I, O> extends TransformStream<I, O> {
|
|
2963
|
+
/**
|
|
2964
|
+
* Returns the current number of uncommitted bytes buffered inside the transformer.
|
|
2965
|
+
*/
|
|
2966
|
+
getBufferedBytes(): number;
|
|
2967
|
+
}
|
|
2968
|
+
/**
|
|
2969
|
+
* Creates an encryption TransformStream for chunked AEAD streaming encryption.
|
|
2970
|
+
*/
|
|
2971
|
+
declare function createEncryptionStream(options: IStreamEncryptionOptions): IStreamWithBufferMetric<Uint8Array, Uint8Array>;
|
|
2972
|
+
/**
|
|
2973
|
+
* Creates a decryption TransformStream for chunked AEAD streaming decryption.
|
|
2974
|
+
*/
|
|
2975
|
+
declare function createDecryptionStream(options: IStreamDecryptionOptions): IStreamWithBufferMetric<Uint8Array, Uint8Array>;
|
|
2976
|
+
/**
|
|
2977
|
+
* Encrypts a Blob payload using Web Streams chunked AEAD encryption.
|
|
2978
|
+
*/
|
|
2979
|
+
declare function encryptBlob(blob: Blob, options: IStreamEncryptionOptions): Promise<Blob>;
|
|
2980
|
+
/**
|
|
2981
|
+
* Decrypts a Blob payload using Web Streams chunked AEAD decryption.
|
|
2982
|
+
*/
|
|
2983
|
+
declare function decryptBlob(blob: Blob, options: IStreamDecryptionOptions, mimeType?: string): Promise<Blob>;
|
|
2984
|
+
|
|
2985
|
+
/**
|
|
2986
|
+
* In-memory storage adapter for public key pinning records.
|
|
2987
|
+
* Ideal for unit tests, ephemeral sessions, and server-side runtimes.
|
|
2988
|
+
*/
|
|
2989
|
+
declare class CMemoryKeyPinningStore implements IKeyPinningStore {
|
|
2990
|
+
private pins;
|
|
2991
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
2992
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
2993
|
+
delete(entityId: string): Promise<void>;
|
|
2994
|
+
clear(): Promise<void>;
|
|
2995
|
+
}
|
|
2996
|
+
/**
|
|
2997
|
+
* LocalStorage adapter for public key pinning records in browser environments.
|
|
2998
|
+
* Uses namespaced keys in the form `katlux:pin:<namespace>:<entityId>`.
|
|
2999
|
+
*/
|
|
3000
|
+
declare class CLocalStorageKeyPinningStore implements IKeyPinningStore {
|
|
3001
|
+
private readonly namespace;
|
|
3002
|
+
private readonly prefix;
|
|
3003
|
+
constructor(namespace?: string);
|
|
3004
|
+
private getKey;
|
|
3005
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
3006
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
3007
|
+
delete(entityId: string): Promise<void>;
|
|
3008
|
+
clear(): Promise<void>;
|
|
3009
|
+
}
|
|
3010
|
+
/**
|
|
3011
|
+
* IndexedDB adapter for public key pinning records.
|
|
3012
|
+
* Integrates with KatluxIndexedDB shared database singleton and executes
|
|
3013
|
+
* atomic compare-and-set operations within a single readwrite transaction.
|
|
3014
|
+
*/
|
|
3015
|
+
declare class CIndexedDBKeyPinningStore implements IKeyPinningStore {
|
|
3016
|
+
private readonly storeName;
|
|
3017
|
+
constructor(storeName?: string);
|
|
3018
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
3019
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
3020
|
+
delete(entityId: string): Promise<void>;
|
|
3021
|
+
clear(): Promise<void>;
|
|
3022
|
+
}
|
|
3023
|
+
|
|
3024
|
+
/**
|
|
3025
|
+
* Server query rewriter utility for encrypted and blind-indexed columns.
|
|
3026
|
+
*
|
|
3027
|
+
* Automatically expands high-level filters on blind-indexed fields into candidate tokens
|
|
3028
|
+
* across multi-KID keyrings (active and search-only keys), emitting abstract persistence
|
|
3029
|
+
* clauses that format cleanly into PostgreSQL (= ANY), MySQL and SQLite (IN (?, ...)).
|
|
3030
|
+
*
|
|
3031
|
+
* @param filters - Single IDataFilter or array of filters
|
|
3032
|
+
* @param options - Configuration mapping fields to blind index keyrings and dialect formatting
|
|
3033
|
+
*/
|
|
3034
|
+
declare function rewriteEncryptedFilters(filters: IDataFilter | IDataFilter[], options: IEncryptedFilterRewriteOptions): Promise<IRewrittenPersistenceQuery>;
|
|
3035
|
+
|
|
3036
|
+
/**
|
|
3037
|
+
* Katlux Batch Re-Encryption & Key Migration Orchestrator
|
|
3038
|
+
*
|
|
3039
|
+
* Implements storage-agnostic, memory-bounded batch re-encryption and
|
|
3040
|
+
* key migration pipelines for persistent datasets across key rotation lifecycles.
|
|
3041
|
+
*/
|
|
3042
|
+
|
|
3043
|
+
/**
|
|
3044
|
+
* Re-encrypts an array of row objects in memory, selectively updating fields that
|
|
3045
|
+
* do not match targetKid and updating HMAC blind index columns if configured.
|
|
3046
|
+
*
|
|
3047
|
+
* @param rows - Array of database records or document objects
|
|
3048
|
+
* @param options - Re-encryption options including targetKid, keyring, and field configs
|
|
3049
|
+
* @returns Batch processing result detailing modified rows, patches, and metrics
|
|
3050
|
+
*/
|
|
3051
|
+
declare function reencryptBatch<TRow = any>(rows: TRow[], options: IReencryptBatchOptions<TRow>): Promise<IReencryptBatchResult<TRow>>;
|
|
3052
|
+
/**
|
|
3053
|
+
* Universal storage-agnostic orchestrator for executing memory-bounded batch
|
|
3054
|
+
* re-encryption across database tables or remote datasets with optimistic concurrency.
|
|
3055
|
+
*
|
|
3056
|
+
* @param options - Dataset migration options including fetchBatch and updateRow adapters
|
|
3057
|
+
* @returns Final migration summary report with telemetry metrics
|
|
3058
|
+
*/
|
|
3059
|
+
declare function reencryptDataset<TRow = any>(options: IReencryptDatasetOptions<TRow>): Promise<IMigrationSummary>;
|
|
3060
|
+
|
|
2447
3061
|
/**
|
|
2448
3062
|
* Universal helper that verifies whether an arbitrary object is a Katlux encrypted payload envelope.
|
|
2449
3063
|
*/
|
|
2450
3064
|
declare function isEncrypted(payload: any): boolean;
|
|
2451
3065
|
|
|
2452
|
-
export { AAPIDataProvider, ADataProvider, AEncryptedClientProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CKeyManager, CLocalStorageCache, CMemoryCache, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CSearchIndex, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DECRYPT_ERROR_SENTINEL, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, canonicalizeJson, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createEncryptionProvider, debounce, decryptPageRows, encryptRows, encryptRowsChunked, evaluateFilter, extractTrigrams, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isAuthOrDecryptionError, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
2453
|
-
export type { CacheDriverLoader, IAccessGrant, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, ICookieCacheOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IDecryptErrorInfo, IDeriveAuthAndEncryptionOptions, IDomainDerivedKeys, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFieldEncryptionContext, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ISignedGrant, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVerifyGrantOptions, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|
|
3066
|
+
export { AAPIDataProvider, ADataProvider, AEncryptedClientProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CIndexedDBKeyPinningStore, CKeyManager, CLocalStorageCache, CLocalStorageKeyPinningStore, CMemoryCache, CMemoryKeyPinningStore, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CSearchIndex, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DECRYPT_ERROR_SENTINEL, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, canonicalizeJson, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createDecryptionStream, createEncryptionProvider, createEncryptionStream, debounce, decryptBlob, decryptPageRows, encryptBlob, encryptRows, encryptRowsChunked, evaluateFilter, extractTrigrams, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isAuthOrDecryptionError, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, reencryptBatch, reencryptDataset, resolveInfoBytes, rewriteEncryptedFilters, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
3067
|
+
export type { CacheDriverLoader, IAbstractPersistenceClause, IAccessGrant, IBlindIndexFieldConfig, IBlindIndexKeyring, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, ICookieCacheOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IDecryptErrorInfo, IDeriveAuthAndEncryptionOptions, IDomainDerivedKeys, IEncryptedFilterRewriteOptions, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFieldEncryptionContext, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IKeyPin, IKeyPinChangeEvent, IKeyPinningStore, IKeyResetAttestation, IMigrationProgress, IMigrationSummary, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IReencryptBatchOptions, IReencryptBatchResult, IReencryptDatasetOptions, IRekeyKeypairParams, IRekeyPayloadOptions, IRekeyedKeypairResult, IRenderedSqlClause, IRequestOptions, IRewrittenPersistenceQuery, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ISignedGrant, ISignedKeyResetAttestation, IStreamDecryptionOptions, IStreamEncryptionOptions, IStreamWithBufferMetric, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVerifyAndPinOptions, IVerifyAndPinResult, IVerifyGrantOptions, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TBlindIndexKeyStatus, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TPersistenceDialect, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TTrustedAuthorities, TUnsubscribe, TreePaginationMode };
|