@haex-space/vault-sdk 2.5.106 → 2.5.107
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/{client-CbYg_Bl8.d.mts → client-CBCjziWo.d.mts} +1 -1
- package/dist/{client-0DvgO2Jf.d.ts → client-_FhZZse3.d.ts} +1 -1
- package/dist/index.d.mts +82 -7
- package/dist/index.d.ts +82 -7
- package/dist/index.js +157 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +143 -1
- package/dist/index.mjs.map +1 -1
- package/dist/node.d.mts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/react.d.mts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs.map +1 -1
- package/dist/runtime/nuxt.plugin.client.d.mts +2 -2
- package/dist/runtime/nuxt.plugin.client.d.ts +2 -2
- package/dist/runtime/nuxt.plugin.client.js.map +1 -1
- package/dist/runtime/nuxt.plugin.client.mjs.map +1 -1
- package/dist/svelte.d.mts +2 -2
- package/dist/svelte.d.ts +2 -2
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs.map +1 -1
- package/dist/{types-CORIMooS.d.mts → types-NWYbdRXr.d.mts} +44 -1
- package/dist/{types-CORIMooS.d.ts → types-NWYbdRXr.d.ts} +44 -1
- package/dist/vue.d.mts +2 -2
- package/dist/vue.d.ts +2 -2
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as DatabaseQueryResult, M as Migration, b as MigrationResult, W as WebRequestOptions, c as WebResponse, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, d as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult, e as ExternalRequestHandler, f as ExternalResponse, g as EventCallback } from './types-
|
|
1
|
+
import { D as DatabaseQueryResult, M as Migration, b as MigrationResult, W as WebRequestOptions, c as WebResponse, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, d as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult, e as ExternalRequestHandler, f as ExternalResponse, g as EventCallback } from './types-NWYbdRXr.mjs';
|
|
2
2
|
import { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy';
|
|
3
3
|
|
|
4
4
|
declare class StorageAPI {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as DatabaseQueryResult, M as Migration, b as MigrationResult, W as WebRequestOptions, c as WebResponse, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, d as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult, e as ExternalRequestHandler, f as ExternalResponse, g as EventCallback } from './types-
|
|
1
|
+
import { D as DatabaseQueryResult, M as Migration, b as MigrationResult, W as WebRequestOptions, c as WebResponse, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, d as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult, e as ExternalRequestHandler, f as ExternalResponse, g as EventCallback } from './types-NWYbdRXr.js';
|
|
2
2
|
import { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy';
|
|
3
3
|
|
|
4
4
|
declare class StorageAPI {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { H as HaexVaultSdk } from './client-
|
|
2
|
-
export { D as DatabaseAPI, a as Device, b as DeviceInfo, c as DeviceType, d as DirEntry, F as FileStat, e as FilesystemAPI, L as LOCALSEND_EVENTS, f as LocalSendAPI, g as LocalSendEvent, h as LocalSendFileInfo, i as LocalSendSettings, P as PendingTransfer, j as PermissionsAPI, A as RemoteAddBackendRequest, k as RemoteS3Config, l as RemoteS3PublicConfig, R as RemoteStorageAPI, m as RemoteStorageBackendInfo, n as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, o as SelectFileOptions, p as SelectFolderOptions, q as ServerInfo, r as ServerStatus, T as TransferDirection, s as TransferProgress, t as TransferState, W as WebAPI } from './client-
|
|
3
|
-
import { E as ExtensionManifest, H as HaexHubConfig } from './types-
|
|
4
|
-
export { A as ApplicationContext,
|
|
1
|
+
import { H as HaexVaultSdk } from './client-CBCjziWo.mjs';
|
|
2
|
+
export { D as DatabaseAPI, a as Device, b as DeviceInfo, c as DeviceType, d as DirEntry, F as FileStat, e as FilesystemAPI, L as LOCALSEND_EVENTS, f as LocalSendAPI, g as LocalSendEvent, h as LocalSendFileInfo, i as LocalSendSettings, P as PendingTransfer, j as PermissionsAPI, A as RemoteAddBackendRequest, k as RemoteS3Config, l as RemoteS3PublicConfig, R as RemoteStorageAPI, m as RemoteStorageBackendInfo, n as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, o as SelectFileOptions, p as SelectFolderOptions, q as ServerInfo, r as ServerStatus, T as TransferDirection, s as TransferProgress, t as TransferState, W as WebAPI } from './client-CBCjziWo.mjs';
|
|
3
|
+
import { h as SpaceRole, E as ExtensionManifest, H as HaexHubConfig } from './types-NWYbdRXr.mjs';
|
|
4
|
+
export { A as ApplicationContext, i as AuthorizedClient, B as BlockedClient, C as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, d as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, p as EXTERNAL_EVENTS, q as ErrorCode, g as EventCallback, a as ExtensionInfo, r as ExtensionRuntimeMode, s as ExternalAuthDecision, t as ExternalConnection, u as ExternalConnectionErrorCode, v as ExternalConnectionState, w as ExternalEvent, x as ExternalRequest, y as ExternalRequestEvent, e as ExternalRequestHandler, z as ExternalRequestPayload, f as ExternalResponse, F as FileChangeEvent, G as FileChangePayload, I as FileChangeType, J as FilteredSyncTablesResult, K as HAEXTENSION_EVENTS, L as HaexHubEvent, N as HaexHubRequest, O as HaexHubResponse, Q as HaexVaultSdkError, R as HaextensionEvent, T as PendingAuthorization, U as PermissionDeniedError, V as PermissionErrorBase, X as PermissionErrorCode, Y as PermissionPromptError, P as PermissionResponse, Z as PermissionStatus, _ as RequestedExtension, $ as SearchQuery, a0 as SearchRequestEvent, S as SearchResult, a1 as SessionAuthorization, a2 as SharedSpace, a3 as SpaceAccessTokenInfo, a4 as SpaceInvite, a5 as SpaceKeyGrantInfo, a6 as SpaceMemberInfo, a7 as SyncTablesUpdatedEvent, a8 as TABLE_SEPARATOR, W as WebRequestOptions, c as WebResponse, a9 as canExternalClientSendRequests, aa as getTableName, ab as isExternalClientConnected, ac as isPermissionDeniedError, ad as isPermissionError, ae as isPermissionPromptError } from './types-NWYbdRXr.mjs';
|
|
5
5
|
export { H as HaextensionConfig } from './config-D_HXjsEV.mjs';
|
|
6
6
|
import 'drizzle-orm/sqlite-proxy';
|
|
7
7
|
|
|
@@ -88,6 +88,7 @@ declare function installPolyfills(): void;
|
|
|
88
88
|
* Types for communicating with the haex-sync-server authentication endpoints.
|
|
89
89
|
* Used by haex-vault and extensions that need to interact with the sync server.
|
|
90
90
|
*/
|
|
91
|
+
|
|
91
92
|
/**
|
|
92
93
|
* S3-compatible storage configuration provided by the sync server.
|
|
93
94
|
*
|
|
@@ -187,6 +188,32 @@ interface ErrorResponse {
|
|
|
187
188
|
/** Error message */
|
|
188
189
|
error: string;
|
|
189
190
|
}
|
|
191
|
+
interface CreateSpaceRequest {
|
|
192
|
+
id: string;
|
|
193
|
+
encryptedName: string;
|
|
194
|
+
nameNonce: string;
|
|
195
|
+
keyGrant: {
|
|
196
|
+
encryptedSpaceKey: string;
|
|
197
|
+
keyNonce: string;
|
|
198
|
+
ephemeralPublicKey: string;
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
interface InviteMemberRequest {
|
|
202
|
+
userId: string;
|
|
203
|
+
role: SpaceRole;
|
|
204
|
+
keyGrant: {
|
|
205
|
+
encryptedSpaceKey: string;
|
|
206
|
+
keyNonce: string;
|
|
207
|
+
ephemeralPublicKey: string;
|
|
208
|
+
generation: number;
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
interface RegisterKeypairRequest {
|
|
212
|
+
publicKey: string;
|
|
213
|
+
encryptedPrivateKey: string;
|
|
214
|
+
privateKeyNonce: string;
|
|
215
|
+
privateKeySalt: string;
|
|
216
|
+
}
|
|
190
217
|
|
|
191
218
|
/**
|
|
192
219
|
* Central message type definitions for HaexSpace SDK
|
|
@@ -666,7 +693,7 @@ declare function deriveKeyFromPassword(password: string, salt: Uint8Array): Prom
|
|
|
666
693
|
/**
|
|
667
694
|
* Generates a random vault key (32 bytes)
|
|
668
695
|
*/
|
|
669
|
-
declare function generateVaultKey(): Uint8Array
|
|
696
|
+
declare function generateVaultKey(): Uint8Array<ArrayBuffer>;
|
|
670
697
|
/**
|
|
671
698
|
* Encrypts a string (like vault name) with a password-derived key
|
|
672
699
|
* Returns: { encryptedData, nonce } as Base64 strings
|
|
@@ -720,7 +747,55 @@ declare function unwrapKey(wrappedKey: Uint8Array, wrappingKey: Uint8Array): Pro
|
|
|
720
747
|
*/
|
|
721
748
|
declare function decryptCrdtData<T = object>(encryptedData: string, nonce: string, vaultKey: Uint8Array): Promise<T>;
|
|
722
749
|
declare function arrayBufferToBase64(buffer: ArrayBuffer | Uint8Array): string;
|
|
723
|
-
declare function base64ToArrayBuffer(base64: string): Uint8Array
|
|
750
|
+
declare function base64ToArrayBuffer(base64: string): Uint8Array<ArrayBuffer>;
|
|
751
|
+
|
|
752
|
+
declare const SIGNING_ALGO: {
|
|
753
|
+
name: string;
|
|
754
|
+
namedCurve: string;
|
|
755
|
+
};
|
|
756
|
+
declare const KEY_AGREEMENT_ALGO: {
|
|
757
|
+
name: string;
|
|
758
|
+
namedCurve: string;
|
|
759
|
+
};
|
|
760
|
+
interface UserKeypair {
|
|
761
|
+
publicKey: CryptoKey;
|
|
762
|
+
privateKey: CryptoKey;
|
|
763
|
+
}
|
|
764
|
+
interface ExportedUserKeypair {
|
|
765
|
+
publicKey: string;
|
|
766
|
+
privateKey: string;
|
|
767
|
+
}
|
|
768
|
+
declare function generateUserKeypairAsync(): Promise<UserKeypair>;
|
|
769
|
+
declare function exportUserKeypairAsync(keypair: UserKeypair): Promise<ExportedUserKeypair>;
|
|
770
|
+
declare function importUserPublicKeyAsync(base64: string): Promise<CryptoKey>;
|
|
771
|
+
declare function importUserPrivateKeyAsync(base64: string): Promise<CryptoKey>;
|
|
772
|
+
declare function importPublicKeyForKeyAgreementAsync(base64: string): Promise<CryptoKey>;
|
|
773
|
+
declare function importPrivateKeyForKeyAgreementAsync(base64: string): Promise<CryptoKey>;
|
|
774
|
+
declare function encryptPrivateKeyAsync(privateKeyBase64: string, password: string): Promise<{
|
|
775
|
+
encryptedPrivateKey: string;
|
|
776
|
+
nonce: string;
|
|
777
|
+
salt: string;
|
|
778
|
+
}>;
|
|
779
|
+
declare function decryptPrivateKeyAsync(encryptedPrivateKey: string, nonce: string, salt: string, password: string): Promise<string>;
|
|
780
|
+
|
|
781
|
+
interface EncryptedSpaceKey {
|
|
782
|
+
encryptedSpaceKey: string;
|
|
783
|
+
keyNonce: string;
|
|
784
|
+
ephemeralPublicKey: string;
|
|
785
|
+
}
|
|
786
|
+
declare function generateSpaceKey(): Uint8Array<ArrayBuffer>;
|
|
787
|
+
declare function encryptSpaceKeyForRecipientAsync(spaceKey: Uint8Array<ArrayBuffer>, recipientPublicKeyBase64: string): Promise<EncryptedSpaceKey>;
|
|
788
|
+
declare function decryptSpaceKeyAsync(encrypted: EncryptedSpaceKey, ownPrivateKeyBase64: string): Promise<Uint8Array>;
|
|
789
|
+
|
|
790
|
+
interface SignableRecord {
|
|
791
|
+
tableName: string;
|
|
792
|
+
rowPks: string;
|
|
793
|
+
columnName: string | null;
|
|
794
|
+
encryptedValue: string | null;
|
|
795
|
+
hlcTimestamp: string;
|
|
796
|
+
}
|
|
797
|
+
declare function signRecordAsync(record: SignableRecord, privateKeyBase64: string): Promise<string>;
|
|
798
|
+
declare function verifyRecordSignatureAsync(record: SignableRecord, signatureBase64: string, publicKeyBase64: string): Promise<boolean>;
|
|
724
799
|
|
|
725
800
|
/**
|
|
726
801
|
* Crypto utilities for WebAuthn/Passkey operations
|
|
@@ -796,4 +871,4 @@ declare function exportKeyPairAsync(keyPair: PasskeyKeyPair): Promise<ExportedPa
|
|
|
796
871
|
|
|
797
872
|
declare function createHaexVaultSdk(config?: HaexHubConfig): HaexVaultSdk;
|
|
798
873
|
|
|
799
|
-
export { type AuthUser, COSE_ALGORITHM, type CoseAlgorithm, type ExportedPasskeyKeyPair, ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HaexHubConfig, HaexVaultSdk, type HaexspaceMessageType, type PasskeyKeyPair, type StorageConfig, type ErrorResponse as SyncServerErrorResponse, type ServerInfo as SyncServerInfo, type LoginRequest as SyncServerLoginRequest, type LoginResponse as SyncServerLoginResponse, type RefreshRequest as SyncServerRefreshRequest, TAURI_COMMANDS, type TauriCommand, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultSdk, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, exportKeyPairAsync, exportPrivateKeyAsync, exportPublicKeyAsync, exportPublicKeyCoseAsync, generateCredentialId, generatePasskeyPairAsync, generateVaultKey, hexToBytes, importPrivateKeyAsync, importPublicKeyAsync, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, signWithPasskeyAsync, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, verifyWithPasskeyAsync, wrapKey };
|
|
874
|
+
export { type AuthUser, COSE_ALGORITHM, type CoseAlgorithm, type CreateSpaceRequest, type EncryptedSpaceKey, type ExportedPasskeyKeyPair, type ExportedUserKeypair, ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HaexHubConfig, HaexVaultSdk, type HaexspaceMessageType, type InviteMemberRequest, KEY_AGREEMENT_ALGO, type PasskeyKeyPair, type RegisterKeypairRequest, SIGNING_ALGO, type SignableRecord, SpaceRole, type StorageConfig, type ErrorResponse as SyncServerErrorResponse, type ServerInfo as SyncServerInfo, type LoginRequest as SyncServerLoginRequest, type LoginResponse as SyncServerLoginResponse, type RefreshRequest as SyncServerRefreshRequest, TAURI_COMMANDS, type TauriCommand, type UserKeypair, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultSdk, decryptCrdtData, decryptPrivateKeyAsync, decryptSpaceKeyAsync, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptPrivateKeyAsync, encryptSpaceKeyForRecipientAsync, encryptString, encryptVaultKey, exportKeyPairAsync, exportPrivateKeyAsync, exportPublicKeyAsync, exportPublicKeyCoseAsync, exportUserKeypairAsync, generateCredentialId, generatePasskeyPairAsync, generateSpaceKey, generateUserKeypairAsync, generateVaultKey, hexToBytes, importPrivateKeyAsync, importPrivateKeyForKeyAgreementAsync, importPublicKeyAsync, importPublicKeyForKeyAgreementAsync, importUserPrivateKeyAsync, importUserPublicKeyAsync, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, signRecordAsync, signWithPasskeyAsync, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, verifyRecordSignatureAsync, verifyWithPasskeyAsync, wrapKey };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { H as HaexVaultSdk } from './client-
|
|
2
|
-
export { D as DatabaseAPI, a as Device, b as DeviceInfo, c as DeviceType, d as DirEntry, F as FileStat, e as FilesystemAPI, L as LOCALSEND_EVENTS, f as LocalSendAPI, g as LocalSendEvent, h as LocalSendFileInfo, i as LocalSendSettings, P as PendingTransfer, j as PermissionsAPI, A as RemoteAddBackendRequest, k as RemoteS3Config, l as RemoteS3PublicConfig, R as RemoteStorageAPI, m as RemoteStorageBackendInfo, n as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, o as SelectFileOptions, p as SelectFolderOptions, q as ServerInfo, r as ServerStatus, T as TransferDirection, s as TransferProgress, t as TransferState, W as WebAPI } from './client-
|
|
3
|
-
import { E as ExtensionManifest, H as HaexHubConfig } from './types-
|
|
4
|
-
export { A as ApplicationContext,
|
|
1
|
+
import { H as HaexVaultSdk } from './client-_FhZZse3.js';
|
|
2
|
+
export { D as DatabaseAPI, a as Device, b as DeviceInfo, c as DeviceType, d as DirEntry, F as FileStat, e as FilesystemAPI, L as LOCALSEND_EVENTS, f as LocalSendAPI, g as LocalSendEvent, h as LocalSendFileInfo, i as LocalSendSettings, P as PendingTransfer, j as PermissionsAPI, A as RemoteAddBackendRequest, k as RemoteS3Config, l as RemoteS3PublicConfig, R as RemoteStorageAPI, m as RemoteStorageBackendInfo, n as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, o as SelectFileOptions, p as SelectFolderOptions, q as ServerInfo, r as ServerStatus, T as TransferDirection, s as TransferProgress, t as TransferState, W as WebAPI } from './client-_FhZZse3.js';
|
|
3
|
+
import { h as SpaceRole, E as ExtensionManifest, H as HaexHubConfig } from './types-NWYbdRXr.js';
|
|
4
|
+
export { A as ApplicationContext, i as AuthorizedClient, B as BlockedClient, C as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, d as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, p as EXTERNAL_EVENTS, q as ErrorCode, g as EventCallback, a as ExtensionInfo, r as ExtensionRuntimeMode, s as ExternalAuthDecision, t as ExternalConnection, u as ExternalConnectionErrorCode, v as ExternalConnectionState, w as ExternalEvent, x as ExternalRequest, y as ExternalRequestEvent, e as ExternalRequestHandler, z as ExternalRequestPayload, f as ExternalResponse, F as FileChangeEvent, G as FileChangePayload, I as FileChangeType, J as FilteredSyncTablesResult, K as HAEXTENSION_EVENTS, L as HaexHubEvent, N as HaexHubRequest, O as HaexHubResponse, Q as HaexVaultSdkError, R as HaextensionEvent, T as PendingAuthorization, U as PermissionDeniedError, V as PermissionErrorBase, X as PermissionErrorCode, Y as PermissionPromptError, P as PermissionResponse, Z as PermissionStatus, _ as RequestedExtension, $ as SearchQuery, a0 as SearchRequestEvent, S as SearchResult, a1 as SessionAuthorization, a2 as SharedSpace, a3 as SpaceAccessTokenInfo, a4 as SpaceInvite, a5 as SpaceKeyGrantInfo, a6 as SpaceMemberInfo, a7 as SyncTablesUpdatedEvent, a8 as TABLE_SEPARATOR, W as WebRequestOptions, c as WebResponse, a9 as canExternalClientSendRequests, aa as getTableName, ab as isExternalClientConnected, ac as isPermissionDeniedError, ad as isPermissionError, ae as isPermissionPromptError } from './types-NWYbdRXr.js';
|
|
5
5
|
export { H as HaextensionConfig } from './config-D_HXjsEV.js';
|
|
6
6
|
import 'drizzle-orm/sqlite-proxy';
|
|
7
7
|
|
|
@@ -88,6 +88,7 @@ declare function installPolyfills(): void;
|
|
|
88
88
|
* Types for communicating with the haex-sync-server authentication endpoints.
|
|
89
89
|
* Used by haex-vault and extensions that need to interact with the sync server.
|
|
90
90
|
*/
|
|
91
|
+
|
|
91
92
|
/**
|
|
92
93
|
* S3-compatible storage configuration provided by the sync server.
|
|
93
94
|
*
|
|
@@ -187,6 +188,32 @@ interface ErrorResponse {
|
|
|
187
188
|
/** Error message */
|
|
188
189
|
error: string;
|
|
189
190
|
}
|
|
191
|
+
interface CreateSpaceRequest {
|
|
192
|
+
id: string;
|
|
193
|
+
encryptedName: string;
|
|
194
|
+
nameNonce: string;
|
|
195
|
+
keyGrant: {
|
|
196
|
+
encryptedSpaceKey: string;
|
|
197
|
+
keyNonce: string;
|
|
198
|
+
ephemeralPublicKey: string;
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
interface InviteMemberRequest {
|
|
202
|
+
userId: string;
|
|
203
|
+
role: SpaceRole;
|
|
204
|
+
keyGrant: {
|
|
205
|
+
encryptedSpaceKey: string;
|
|
206
|
+
keyNonce: string;
|
|
207
|
+
ephemeralPublicKey: string;
|
|
208
|
+
generation: number;
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
interface RegisterKeypairRequest {
|
|
212
|
+
publicKey: string;
|
|
213
|
+
encryptedPrivateKey: string;
|
|
214
|
+
privateKeyNonce: string;
|
|
215
|
+
privateKeySalt: string;
|
|
216
|
+
}
|
|
190
217
|
|
|
191
218
|
/**
|
|
192
219
|
* Central message type definitions for HaexSpace SDK
|
|
@@ -666,7 +693,7 @@ declare function deriveKeyFromPassword(password: string, salt: Uint8Array): Prom
|
|
|
666
693
|
/**
|
|
667
694
|
* Generates a random vault key (32 bytes)
|
|
668
695
|
*/
|
|
669
|
-
declare function generateVaultKey(): Uint8Array
|
|
696
|
+
declare function generateVaultKey(): Uint8Array<ArrayBuffer>;
|
|
670
697
|
/**
|
|
671
698
|
* Encrypts a string (like vault name) with a password-derived key
|
|
672
699
|
* Returns: { encryptedData, nonce } as Base64 strings
|
|
@@ -720,7 +747,55 @@ declare function unwrapKey(wrappedKey: Uint8Array, wrappingKey: Uint8Array): Pro
|
|
|
720
747
|
*/
|
|
721
748
|
declare function decryptCrdtData<T = object>(encryptedData: string, nonce: string, vaultKey: Uint8Array): Promise<T>;
|
|
722
749
|
declare function arrayBufferToBase64(buffer: ArrayBuffer | Uint8Array): string;
|
|
723
|
-
declare function base64ToArrayBuffer(base64: string): Uint8Array
|
|
750
|
+
declare function base64ToArrayBuffer(base64: string): Uint8Array<ArrayBuffer>;
|
|
751
|
+
|
|
752
|
+
declare const SIGNING_ALGO: {
|
|
753
|
+
name: string;
|
|
754
|
+
namedCurve: string;
|
|
755
|
+
};
|
|
756
|
+
declare const KEY_AGREEMENT_ALGO: {
|
|
757
|
+
name: string;
|
|
758
|
+
namedCurve: string;
|
|
759
|
+
};
|
|
760
|
+
interface UserKeypair {
|
|
761
|
+
publicKey: CryptoKey;
|
|
762
|
+
privateKey: CryptoKey;
|
|
763
|
+
}
|
|
764
|
+
interface ExportedUserKeypair {
|
|
765
|
+
publicKey: string;
|
|
766
|
+
privateKey: string;
|
|
767
|
+
}
|
|
768
|
+
declare function generateUserKeypairAsync(): Promise<UserKeypair>;
|
|
769
|
+
declare function exportUserKeypairAsync(keypair: UserKeypair): Promise<ExportedUserKeypair>;
|
|
770
|
+
declare function importUserPublicKeyAsync(base64: string): Promise<CryptoKey>;
|
|
771
|
+
declare function importUserPrivateKeyAsync(base64: string): Promise<CryptoKey>;
|
|
772
|
+
declare function importPublicKeyForKeyAgreementAsync(base64: string): Promise<CryptoKey>;
|
|
773
|
+
declare function importPrivateKeyForKeyAgreementAsync(base64: string): Promise<CryptoKey>;
|
|
774
|
+
declare function encryptPrivateKeyAsync(privateKeyBase64: string, password: string): Promise<{
|
|
775
|
+
encryptedPrivateKey: string;
|
|
776
|
+
nonce: string;
|
|
777
|
+
salt: string;
|
|
778
|
+
}>;
|
|
779
|
+
declare function decryptPrivateKeyAsync(encryptedPrivateKey: string, nonce: string, salt: string, password: string): Promise<string>;
|
|
780
|
+
|
|
781
|
+
interface EncryptedSpaceKey {
|
|
782
|
+
encryptedSpaceKey: string;
|
|
783
|
+
keyNonce: string;
|
|
784
|
+
ephemeralPublicKey: string;
|
|
785
|
+
}
|
|
786
|
+
declare function generateSpaceKey(): Uint8Array<ArrayBuffer>;
|
|
787
|
+
declare function encryptSpaceKeyForRecipientAsync(spaceKey: Uint8Array<ArrayBuffer>, recipientPublicKeyBase64: string): Promise<EncryptedSpaceKey>;
|
|
788
|
+
declare function decryptSpaceKeyAsync(encrypted: EncryptedSpaceKey, ownPrivateKeyBase64: string): Promise<Uint8Array>;
|
|
789
|
+
|
|
790
|
+
interface SignableRecord {
|
|
791
|
+
tableName: string;
|
|
792
|
+
rowPks: string;
|
|
793
|
+
columnName: string | null;
|
|
794
|
+
encryptedValue: string | null;
|
|
795
|
+
hlcTimestamp: string;
|
|
796
|
+
}
|
|
797
|
+
declare function signRecordAsync(record: SignableRecord, privateKeyBase64: string): Promise<string>;
|
|
798
|
+
declare function verifyRecordSignatureAsync(record: SignableRecord, signatureBase64: string, publicKeyBase64: string): Promise<boolean>;
|
|
724
799
|
|
|
725
800
|
/**
|
|
726
801
|
* Crypto utilities for WebAuthn/Passkey operations
|
|
@@ -796,4 +871,4 @@ declare function exportKeyPairAsync(keyPair: PasskeyKeyPair): Promise<ExportedPa
|
|
|
796
871
|
|
|
797
872
|
declare function createHaexVaultSdk(config?: HaexHubConfig): HaexVaultSdk;
|
|
798
873
|
|
|
799
|
-
export { type AuthUser, COSE_ALGORITHM, type CoseAlgorithm, type ExportedPasskeyKeyPair, ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HaexHubConfig, HaexVaultSdk, type HaexspaceMessageType, type PasskeyKeyPair, type StorageConfig, type ErrorResponse as SyncServerErrorResponse, type ServerInfo as SyncServerInfo, type LoginRequest as SyncServerLoginRequest, type LoginResponse as SyncServerLoginResponse, type RefreshRequest as SyncServerRefreshRequest, TAURI_COMMANDS, type TauriCommand, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultSdk, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, exportKeyPairAsync, exportPrivateKeyAsync, exportPublicKeyAsync, exportPublicKeyCoseAsync, generateCredentialId, generatePasskeyPairAsync, generateVaultKey, hexToBytes, importPrivateKeyAsync, importPublicKeyAsync, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, signWithPasskeyAsync, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, verifyWithPasskeyAsync, wrapKey };
|
|
874
|
+
export { type AuthUser, COSE_ALGORITHM, type CoseAlgorithm, type CreateSpaceRequest, type EncryptedSpaceKey, type ExportedPasskeyKeyPair, type ExportedUserKeypair, ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HaexHubConfig, HaexVaultSdk, type HaexspaceMessageType, type InviteMemberRequest, KEY_AGREEMENT_ALGO, type PasskeyKeyPair, type RegisterKeypairRequest, SIGNING_ALGO, type SignableRecord, SpaceRole, type StorageConfig, type ErrorResponse as SyncServerErrorResponse, type ServerInfo as SyncServerInfo, type LoginRequest as SyncServerLoginRequest, type LoginResponse as SyncServerLoginResponse, type RefreshRequest as SyncServerRefreshRequest, TAURI_COMMANDS, type TauriCommand, type UserKeypair, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultSdk, decryptCrdtData, decryptPrivateKeyAsync, decryptSpaceKeyAsync, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptPrivateKeyAsync, encryptSpaceKeyForRecipientAsync, encryptString, encryptVaultKey, exportKeyPairAsync, exportPrivateKeyAsync, exportPublicKeyAsync, exportPublicKeyCoseAsync, exportUserKeypairAsync, generateCredentialId, generatePasskeyPairAsync, generateSpaceKey, generateUserKeypairAsync, generateVaultKey, hexToBytes, importPrivateKeyAsync, importPrivateKeyForKeyAgreementAsync, importPublicKeyAsync, importPublicKeyForKeyAgreementAsync, importUserPrivateKeyAsync, importUserPublicKeyAsync, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, signRecordAsync, signWithPasskeyAsync, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, verifyRecordSignatureAsync, verifyWithPasskeyAsync, wrapKey };
|
package/dist/index.js
CHANGED
|
@@ -2744,6 +2744,148 @@ async function verifyExtensionSignature(files, manifest) {
|
|
|
2744
2744
|
}
|
|
2745
2745
|
}
|
|
2746
2746
|
|
|
2747
|
+
// src/crypto/userKeypair.ts
|
|
2748
|
+
var SIGNING_ALGO = { name: "ECDSA", namedCurve: "P-256" };
|
|
2749
|
+
var KEY_AGREEMENT_ALGO = { name: "ECDH", namedCurve: "P-256" };
|
|
2750
|
+
async function generateUserKeypairAsync() {
|
|
2751
|
+
const keypair = await crypto.subtle.generateKey(SIGNING_ALGO, true, ["sign", "verify"]);
|
|
2752
|
+
return { publicKey: keypair.publicKey, privateKey: keypair.privateKey };
|
|
2753
|
+
}
|
|
2754
|
+
async function exportUserKeypairAsync(keypair) {
|
|
2755
|
+
const pub = await crypto.subtle.exportKey("spki", keypair.publicKey);
|
|
2756
|
+
const priv = await crypto.subtle.exportKey("pkcs8", keypair.privateKey);
|
|
2757
|
+
return { publicKey: arrayBufferToBase64(pub), privateKey: arrayBufferToBase64(priv) };
|
|
2758
|
+
}
|
|
2759
|
+
async function importUserPublicKeyAsync(base64) {
|
|
2760
|
+
return crypto.subtle.importKey("spki", base64ToArrayBuffer(base64), SIGNING_ALGO, true, ["verify"]);
|
|
2761
|
+
}
|
|
2762
|
+
async function importUserPrivateKeyAsync(base64) {
|
|
2763
|
+
return crypto.subtle.importKey("pkcs8", base64ToArrayBuffer(base64), SIGNING_ALGO, true, ["sign"]);
|
|
2764
|
+
}
|
|
2765
|
+
async function importPublicKeyForKeyAgreementAsync(base64) {
|
|
2766
|
+
return crypto.subtle.importKey("spki", base64ToArrayBuffer(base64), KEY_AGREEMENT_ALGO, true, []);
|
|
2767
|
+
}
|
|
2768
|
+
async function importPrivateKeyForKeyAgreementAsync(base64) {
|
|
2769
|
+
return crypto.subtle.importKey("pkcs8", base64ToArrayBuffer(base64), KEY_AGREEMENT_ALGO, true, ["deriveBits"]);
|
|
2770
|
+
}
|
|
2771
|
+
async function encryptPrivateKeyAsync(privateKeyBase64, password) {
|
|
2772
|
+
const salt = crypto.getRandomValues(new Uint8Array(32));
|
|
2773
|
+
const derivedKey = await deriveKeyFromPassword(password, salt);
|
|
2774
|
+
const nonce = crypto.getRandomValues(new Uint8Array(12));
|
|
2775
|
+
const encrypted = await crypto.subtle.encrypt(
|
|
2776
|
+
{ name: "AES-GCM", iv: nonce },
|
|
2777
|
+
derivedKey,
|
|
2778
|
+
new TextEncoder().encode(privateKeyBase64)
|
|
2779
|
+
);
|
|
2780
|
+
return {
|
|
2781
|
+
encryptedPrivateKey: arrayBufferToBase64(encrypted),
|
|
2782
|
+
nonce: arrayBufferToBase64(nonce),
|
|
2783
|
+
salt: arrayBufferToBase64(salt)
|
|
2784
|
+
};
|
|
2785
|
+
}
|
|
2786
|
+
async function decryptPrivateKeyAsync(encryptedPrivateKey, nonce, salt, password) {
|
|
2787
|
+
const derivedKey = await deriveKeyFromPassword(password, base64ToArrayBuffer(salt));
|
|
2788
|
+
const decrypted = await crypto.subtle.decrypt(
|
|
2789
|
+
{ name: "AES-GCM", iv: base64ToArrayBuffer(nonce) },
|
|
2790
|
+
derivedKey,
|
|
2791
|
+
base64ToArrayBuffer(encryptedPrivateKey)
|
|
2792
|
+
);
|
|
2793
|
+
return new TextDecoder().decode(decrypted);
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2796
|
+
// src/crypto/spaceKey.ts
|
|
2797
|
+
function generateSpaceKey() {
|
|
2798
|
+
return generateVaultKey();
|
|
2799
|
+
}
|
|
2800
|
+
async function encryptSpaceKeyForRecipientAsync(spaceKey, recipientPublicKeyBase64) {
|
|
2801
|
+
const ephemeral = await crypto.subtle.generateKey(KEY_AGREEMENT_ALGO, true, ["deriveBits"]);
|
|
2802
|
+
const recipientKey = await importPublicKeyForKeyAgreementAsync(recipientPublicKeyBase64);
|
|
2803
|
+
const sharedBits = await crypto.subtle.deriveBits(
|
|
2804
|
+
{ name: "ECDH", public: recipientKey },
|
|
2805
|
+
ephemeral.privateKey,
|
|
2806
|
+
256
|
|
2807
|
+
);
|
|
2808
|
+
const aesKey = await crypto.subtle.deriveKey(
|
|
2809
|
+
{
|
|
2810
|
+
name: "HKDF",
|
|
2811
|
+
hash: "SHA-256",
|
|
2812
|
+
salt: new Uint8Array(0),
|
|
2813
|
+
info: new TextEncoder().encode("haex-space-key")
|
|
2814
|
+
},
|
|
2815
|
+
await crypto.subtle.importKey("raw", sharedBits, "HKDF", false, ["deriveKey"]),
|
|
2816
|
+
{ name: "AES-GCM", length: 256 },
|
|
2817
|
+
false,
|
|
2818
|
+
["encrypt"]
|
|
2819
|
+
);
|
|
2820
|
+
const nonce = crypto.getRandomValues(new Uint8Array(12));
|
|
2821
|
+
const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv: nonce }, aesKey, spaceKey);
|
|
2822
|
+
const ephPub = await crypto.subtle.exportKey("spki", ephemeral.publicKey);
|
|
2823
|
+
return {
|
|
2824
|
+
encryptedSpaceKey: arrayBufferToBase64(encrypted),
|
|
2825
|
+
keyNonce: arrayBufferToBase64(nonce),
|
|
2826
|
+
ephemeralPublicKey: arrayBufferToBase64(ephPub)
|
|
2827
|
+
};
|
|
2828
|
+
}
|
|
2829
|
+
async function decryptSpaceKeyAsync(encrypted, ownPrivateKeyBase64) {
|
|
2830
|
+
const ephPubKey = await crypto.subtle.importKey(
|
|
2831
|
+
"spki",
|
|
2832
|
+
base64ToArrayBuffer(encrypted.ephemeralPublicKey),
|
|
2833
|
+
KEY_AGREEMENT_ALGO,
|
|
2834
|
+
true,
|
|
2835
|
+
[]
|
|
2836
|
+
);
|
|
2837
|
+
const ownPrivKey = await importPrivateKeyForKeyAgreementAsync(ownPrivateKeyBase64);
|
|
2838
|
+
const sharedBits = await crypto.subtle.deriveBits(
|
|
2839
|
+
{ name: "ECDH", public: ephPubKey },
|
|
2840
|
+
ownPrivKey,
|
|
2841
|
+
256
|
|
2842
|
+
);
|
|
2843
|
+
const aesKey = await crypto.subtle.deriveKey(
|
|
2844
|
+
{
|
|
2845
|
+
name: "HKDF",
|
|
2846
|
+
hash: "SHA-256",
|
|
2847
|
+
salt: new Uint8Array(0),
|
|
2848
|
+
info: new TextEncoder().encode("haex-space-key")
|
|
2849
|
+
},
|
|
2850
|
+
await crypto.subtle.importKey("raw", sharedBits, "HKDF", false, ["deriveKey"]),
|
|
2851
|
+
{ name: "AES-GCM", length: 256 },
|
|
2852
|
+
false,
|
|
2853
|
+
["decrypt"]
|
|
2854
|
+
);
|
|
2855
|
+
const decrypted = await crypto.subtle.decrypt(
|
|
2856
|
+
{ name: "AES-GCM", iv: base64ToArrayBuffer(encrypted.keyNonce) },
|
|
2857
|
+
aesKey,
|
|
2858
|
+
base64ToArrayBuffer(encrypted.encryptedSpaceKey)
|
|
2859
|
+
);
|
|
2860
|
+
return new Uint8Array(decrypted);
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2863
|
+
// src/crypto/recordSigning.ts
|
|
2864
|
+
function canonicalize(record) {
|
|
2865
|
+
const parts = [
|
|
2866
|
+
record.tableName,
|
|
2867
|
+
record.rowPks,
|
|
2868
|
+
record.columnName === null ? "NULL" : record.columnName,
|
|
2869
|
+
record.encryptedValue === null ? "NULL" : record.encryptedValue,
|
|
2870
|
+
record.hlcTimestamp
|
|
2871
|
+
].join("\0");
|
|
2872
|
+
return new TextEncoder().encode(parts);
|
|
2873
|
+
}
|
|
2874
|
+
async function signRecordAsync(record, privateKeyBase64) {
|
|
2875
|
+
const key = await importUserPrivateKeyAsync(privateKeyBase64);
|
|
2876
|
+
const sig = await crypto.subtle.sign({ name: "ECDSA", hash: "SHA-256" }, key, canonicalize(record));
|
|
2877
|
+
return arrayBufferToBase64(sig);
|
|
2878
|
+
}
|
|
2879
|
+
async function verifyRecordSignatureAsync(record, signatureBase64, publicKeyBase64) {
|
|
2880
|
+
const key = await importUserPublicKeyAsync(publicKeyBase64);
|
|
2881
|
+
return crypto.subtle.verify(
|
|
2882
|
+
{ name: "ECDSA", hash: "SHA-256" },
|
|
2883
|
+
key,
|
|
2884
|
+
base64ToArrayBuffer(signatureBase64),
|
|
2885
|
+
canonicalize(record)
|
|
2886
|
+
);
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2747
2889
|
// src/crypto/passkey.ts
|
|
2748
2890
|
function toArrayBuffer(data) {
|
|
2749
2891
|
if (data instanceof ArrayBuffer) {
|
|
@@ -2926,12 +3068,14 @@ exports.HAEXSPACE_MESSAGE_TYPES = HAEXSPACE_MESSAGE_TYPES;
|
|
|
2926
3068
|
exports.HAEXTENSION_EVENTS = HAEXTENSION_EVENTS;
|
|
2927
3069
|
exports.HaexVaultSdk = HaexVaultSdk;
|
|
2928
3070
|
exports.HaexVaultSdkError = HaexVaultSdkError;
|
|
3071
|
+
exports.KEY_AGREEMENT_ALGO = KEY_AGREEMENT_ALGO;
|
|
2929
3072
|
exports.LOCALSEND_EVENTS = LOCALSEND_EVENTS;
|
|
2930
3073
|
exports.LocalSendAPI = LocalSendAPI;
|
|
2931
3074
|
exports.PermissionErrorCode = PermissionErrorCode;
|
|
2932
3075
|
exports.PermissionStatus = PermissionStatus;
|
|
2933
3076
|
exports.PermissionsAPI = PermissionsAPI;
|
|
2934
3077
|
exports.RemoteStorageAPI = RemoteStorageAPI;
|
|
3078
|
+
exports.SIGNING_ALGO = SIGNING_ALGO;
|
|
2935
3079
|
exports.TABLE_SEPARATOR = TABLE_SEPARATOR;
|
|
2936
3080
|
exports.TAURI_COMMANDS = TAURI_COMMANDS;
|
|
2937
3081
|
exports.WebAPI = WebAPI;
|
|
@@ -2940,24 +3084,35 @@ exports.base64ToArrayBuffer = base64ToArrayBuffer;
|
|
|
2940
3084
|
exports.canExternalClientSendRequests = canExternalClientSendRequests;
|
|
2941
3085
|
exports.createHaexVaultSdk = createHaexVaultSdk;
|
|
2942
3086
|
exports.decryptCrdtData = decryptCrdtData;
|
|
3087
|
+
exports.decryptPrivateKeyAsync = decryptPrivateKeyAsync;
|
|
3088
|
+
exports.decryptSpaceKeyAsync = decryptSpaceKeyAsync;
|
|
2943
3089
|
exports.decryptString = decryptString;
|
|
2944
3090
|
exports.decryptVaultKey = decryptVaultKey;
|
|
2945
3091
|
exports.decryptVaultName = decryptVaultName;
|
|
2946
3092
|
exports.deriveKeyFromPassword = deriveKeyFromPassword;
|
|
2947
3093
|
exports.encryptCrdtData = encryptCrdtData;
|
|
3094
|
+
exports.encryptPrivateKeyAsync = encryptPrivateKeyAsync;
|
|
3095
|
+
exports.encryptSpaceKeyForRecipientAsync = encryptSpaceKeyForRecipientAsync;
|
|
2948
3096
|
exports.encryptString = encryptString;
|
|
2949
3097
|
exports.encryptVaultKey = encryptVaultKey;
|
|
2950
3098
|
exports.exportKeyPairAsync = exportKeyPairAsync;
|
|
2951
3099
|
exports.exportPrivateKeyAsync = exportPrivateKeyAsync;
|
|
2952
3100
|
exports.exportPublicKeyAsync = exportPublicKeyAsync;
|
|
2953
3101
|
exports.exportPublicKeyCoseAsync = exportPublicKeyCoseAsync;
|
|
3102
|
+
exports.exportUserKeypairAsync = exportUserKeypairAsync;
|
|
2954
3103
|
exports.generateCredentialId = generateCredentialId;
|
|
2955
3104
|
exports.generatePasskeyPairAsync = generatePasskeyPairAsync;
|
|
3105
|
+
exports.generateSpaceKey = generateSpaceKey;
|
|
3106
|
+
exports.generateUserKeypairAsync = generateUserKeypairAsync;
|
|
2956
3107
|
exports.generateVaultKey = generateVaultKey;
|
|
2957
3108
|
exports.getTableName = getTableName;
|
|
2958
3109
|
exports.hexToBytes = hexToBytes;
|
|
2959
3110
|
exports.importPrivateKeyAsync = importPrivateKeyAsync;
|
|
3111
|
+
exports.importPrivateKeyForKeyAgreementAsync = importPrivateKeyForKeyAgreementAsync;
|
|
2960
3112
|
exports.importPublicKeyAsync = importPublicKeyAsync;
|
|
3113
|
+
exports.importPublicKeyForKeyAgreementAsync = importPublicKeyForKeyAgreementAsync;
|
|
3114
|
+
exports.importUserPrivateKeyAsync = importUserPrivateKeyAsync;
|
|
3115
|
+
exports.importUserPublicKeyAsync = importUserPublicKeyAsync;
|
|
2961
3116
|
exports.installBaseTag = installBaseTag;
|
|
2962
3117
|
exports.installCookiePolyfill = installCookiePolyfill;
|
|
2963
3118
|
exports.installHistoryPolyfill = installHistoryPolyfill;
|
|
@@ -2968,10 +3123,12 @@ exports.isExternalClientConnected = isExternalClientConnected;
|
|
|
2968
3123
|
exports.isPermissionDeniedError = isPermissionDeniedError;
|
|
2969
3124
|
exports.isPermissionError = isPermissionError;
|
|
2970
3125
|
exports.isPermissionPromptError = isPermissionPromptError;
|
|
3126
|
+
exports.signRecordAsync = signRecordAsync;
|
|
2971
3127
|
exports.signWithPasskeyAsync = signWithPasskeyAsync;
|
|
2972
3128
|
exports.sortObjectKeysRecursively = sortObjectKeysRecursively;
|
|
2973
3129
|
exports.unwrapKey = unwrapKey;
|
|
2974
3130
|
exports.verifyExtensionSignature = verifyExtensionSignature;
|
|
3131
|
+
exports.verifyRecordSignatureAsync = verifyRecordSignatureAsync;
|
|
2975
3132
|
exports.verifyWithPasskeyAsync = verifyWithPasskeyAsync;
|
|
2976
3133
|
exports.wrapKey = wrapKey;
|
|
2977
3134
|
//# sourceMappingURL=index.js.map
|