mindoodb 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-server.md +1001 -0
- package/README.md +89 -28
- package/dist/__mocks__/expo-standard-web-crypto.d.ts +10 -0
- package/dist/__mocks__/expo-standard-web-crypto.d.ts.map +1 -0
- package/dist/__mocks__/expo-standard-web-crypto.js +22 -0
- package/dist/__mocks__/expo-standard-web-crypto.js.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +8 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +16 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +1 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +2 -2
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +30 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +152 -5
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +17 -2
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +129 -0
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +22 -2
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +110 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/index.d.ts +1 -1
- package/dist/appendonlystores/network/index.d.ts.map +1 -1
- package/dist/appendonlystores/network/index.js.map +1 -1
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +65 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +741 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts +25 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js +41 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts +21 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js +106 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js.map +1 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +21 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/core/BaseMindooDB.d.ts +115 -13
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +1232 -269
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +69 -6
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +302 -109
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +13 -10
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +144 -27
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/BaseMindooTenantFactory.d.ts +27 -29
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantFactory.js +185 -112
- package/dist/core/BaseMindooTenantFactory.js.map +1 -1
- package/dist/core/MindooDBServerAdmin.d.ts +238 -0
- package/dist/core/MindooDBServerAdmin.d.ts.map +1 -0
- package/dist/core/MindooDBServerAdmin.js +345 -0
- package/dist/core/MindooDBServerAdmin.js.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +68 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +659 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +45 -3
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +184 -23
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts +49 -0
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts.map +1 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js +325 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js.map +1 -0
- package/dist/core/appendonlystores/bloom.d.ts +85 -0
- package/dist/core/appendonlystores/bloom.d.ts.map +1 -0
- package/dist/core/appendonlystores/bloom.js +228 -0
- package/dist/core/appendonlystores/bloom.js.map +1 -0
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts +37 -2
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.d.ts +12 -0
- package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.js.map +1 -1
- package/dist/core/appendonlystores/types.d.ts +206 -0
- package/dist/core/appendonlystores/types.d.ts.map +1 -1
- package/dist/core/automerge-adapter.d.ts +15 -0
- package/dist/core/automerge-adapter.d.ts.map +1 -0
- package/dist/core/automerge-adapter.js +73 -0
- package/dist/core/automerge-adapter.js.map +1 -0
- package/dist/core/cache/CacheManager.d.ts +75 -0
- package/dist/core/cache/CacheManager.d.ts.map +1 -0
- package/dist/core/cache/CacheManager.js +101 -0
- package/dist/core/cache/CacheManager.js.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts +41 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js +120 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js.map +1 -0
- package/dist/core/cache/LocalCacheStore.d.ts +50 -0
- package/dist/core/cache/LocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/LocalCacheStore.js +39 -0
- package/dist/core/cache/LocalCacheStore.js.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.js +55 -0
- package/dist/core/crypto/pbkdf2Iterations.js.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts +5 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.js +87 -0
- package/dist/core/crypto/privateKeyEncryption.js.map +1 -0
- package/dist/core/index.d.ts +18 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +42 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +4 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +39 -11
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js +3 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.d.ts +43 -0
- package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.js +173 -0
- package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +7 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +28 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
- package/dist/core/keys/KeyBag.d.ts +56 -12
- package/dist/core/keys/KeyBag.d.ts.map +1 -1
- package/dist/core/keys/KeyBag.js +156 -70
- package/dist/core/keys/KeyBag.js.map +1 -1
- package/dist/core/keys/KeyContext.d.ts +4 -0
- package/dist/core/keys/KeyContext.d.ts.map +1 -0
- package/dist/core/keys/KeyContext.js +17 -0
- package/dist/core/keys/KeyContext.js.map +1 -0
- package/dist/core/types.d.ts +512 -60
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/MindooURI.d.ts +58 -0
- package/dist/core/uri/MindooURI.d.ts.map +1 -0
- package/dist/core/uri/MindooURI.js +169 -0
- package/dist/core/uri/MindooURI.js.map +1 -0
- package/dist/core/userid/index.d.ts +0 -10
- package/dist/core/userid/index.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.js +37 -3
- package/dist/core/utils/idGeneration.js.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +544 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1358 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts +15 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.js +73 -0
- package/dist/node/attachments/writeAttachmentToFile.js.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts +17 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js +128 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js.map +1 -0
- package/dist/node/cli/change-identity-password.d.ts +7 -0
- package/dist/node/cli/change-identity-password.d.ts.map +1 -0
- package/dist/node/cli/change-identity-password.js +67 -0
- package/dist/node/cli/change-identity-password.js.map +1 -0
- package/dist/node/cli/cli-utils.d.ts +16 -0
- package/dist/node/cli/cli-utils.d.ts.map +1 -0
- package/dist/node/cli/cli-utils.js +113 -0
- package/dist/node/cli/cli-utils.js.map +1 -0
- package/dist/node/cli/identity-export-public.d.ts +4 -0
- package/dist/node/cli/identity-export-public.d.ts.map +1 -0
- package/dist/node/cli/identity-export-public.js +55 -0
- package/dist/node/cli/identity-export-public.js.map +1 -0
- package/dist/node/cli/identity-info.d.ts +4 -0
- package/dist/node/cli/identity-info.d.ts.map +1 -0
- package/dist/node/cli/identity-info.js +57 -0
- package/dist/node/cli/identity-info.js.map +1 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +8 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/server/CapabilityMatcher.d.ts +45 -0
- package/dist/node/server/CapabilityMatcher.d.ts.map +1 -0
- package/dist/node/server/CapabilityMatcher.js +117 -0
- package/dist/node/server/CapabilityMatcher.js.map +1 -0
- package/dist/node/server/MindooDBServer.d.ts +87 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -0
- package/dist/node/server/MindooDBServer.js +1040 -0
- package/dist/node/server/MindooDBServer.js.map +1 -0
- package/dist/node/server/ServerSync.d.ts +41 -0
- package/dist/node/server/ServerSync.d.ts.map +1 -0
- package/dist/node/server/ServerSync.js +187 -0
- package/dist/node/server/ServerSync.js.map +1 -0
- package/dist/node/server/StoreFactory.d.ts +45 -0
- package/dist/node/server/StoreFactory.d.ts.map +1 -0
- package/dist/node/server/StoreFactory.js +89 -0
- package/dist/node/server/StoreFactory.js.map +1 -0
- package/dist/node/server/SystemAdminAuth.d.ts +65 -0
- package/dist/node/server/SystemAdminAuth.d.ts.map +1 -0
- package/dist/node/server/SystemAdminAuth.js +200 -0
- package/dist/node/server/SystemAdminAuth.js.map +1 -0
- package/dist/node/server/SystemIpAllowlist.d.ts +21 -0
- package/dist/node/server/SystemIpAllowlist.d.ts.map +1 -0
- package/dist/node/server/SystemIpAllowlist.js +210 -0
- package/dist/node/server/SystemIpAllowlist.js.map +1 -0
- package/dist/node/server/TenantManager.d.ts +85 -0
- package/dist/node/server/TenantManager.d.ts.map +1 -0
- package/dist/node/server/TenantManager.js +493 -0
- package/dist/node/server/TenantManager.js.map +1 -0
- package/dist/node/server/add-to-network.d.ts +20 -0
- package/dist/node/server/add-to-network.d.ts.map +1 -0
- package/dist/node/server/add-to-network.js +275 -0
- package/dist/node/server/add-to-network.js.map +1 -0
- package/dist/node/server/config.d.ts +51 -0
- package/dist/node/server/config.d.ts.map +1 -0
- package/dist/node/server/config.js +218 -0
- package/dist/node/server/config.js.map +1 -0
- package/dist/node/server/resolveServerPassword.d.ts +7 -0
- package/dist/node/server/resolveServerPassword.d.ts.map +1 -0
- package/dist/node/server/resolveServerPassword.js +25 -0
- package/dist/node/server/resolveServerPassword.js.map +1 -0
- package/dist/node/server/server.d.ts +22 -0
- package/dist/node/server/server.d.ts.map +1 -0
- package/dist/node/server/server.js +225 -0
- package/dist/node/server/server.js.map +1 -0
- package/dist/node/server/serverinit.d.ts +21 -0
- package/dist/node/server/serverinit.d.ts.map +1 -0
- package/dist/node/server/serverinit.js +317 -0
- package/dist/node/server/serverinit.js.map +1 -0
- package/dist/node/server/types.d.ts +162 -0
- package/dist/node/server/types.d.ts.map +1 -0
- package/dist/node/server/types.js +24 -0
- package/dist/node/server/types.js.map +1 -0
- package/dist/node/server/validation.d.ts +47 -0
- package/dist/node/server/validation.d.ts.map +1 -0
- package/dist/node/server/validation.js +114 -0
- package/dist/node/server/validation.js.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts +48 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js +113 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts +18 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.js +112 -0
- package/dist/reactnative/crypto/AESAdapter.js.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts +34 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js +386 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts +23 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js +51 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts +13 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.js +50 -0
- package/dist/reactnative/crypto/HMACAdapter.js.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts +21 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js +72 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts +19 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js +67 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts +37 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js +72 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts +38 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.js +184 -0
- package/dist/reactnative/crypto/RSAAdapter.js.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts +33 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js +61 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts +9 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.js +29 -0
- package/dist/reactnative/crypto/SHA256Adapter.js.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts +63 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js +350 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js.map +1 -0
- package/dist/reactnative/index.d.ts +9 -0
- package/dist/reactnative/index.d.ts.map +1 -0
- package/dist/reactnative/index.js +41 -0
- package/dist/reactnative/index.js.map +1 -0
- package/package.json +63 -7
- package/patches/PATCHES.md +111 -0
- package/patches/react-native+0.76.9.patch +34 -0
- package/patches/react-native-quick-crypto+1.0.7.patch +42 -0
- package/scripts/cli.js +21 -0
- package/scripts/setup-react-native.js +228 -0
- package/templates/reactnative/App.js +252 -0
- package/templates/reactnative/app.json +29 -0
- package/templates/reactnative/babel.config.js +6 -0
- package/templates/reactnative/index.js +26 -0
- package/templates/reactnative/metro.config.snippet.js +39 -0
- package/templates/reactnative/mindoodb-polyfills.js +116 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AES-GCM Adapter
|
|
4
|
+
* Implements AES-GCM encryption/decryption using node-forge
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.aesGcmEncrypt = aesGcmEncrypt;
|
|
11
|
+
exports.aesGcmDecrypt = aesGcmDecrypt;
|
|
12
|
+
const node_forge_1 = __importDefault(require("node-forge"));
|
|
13
|
+
/**
|
|
14
|
+
* Encrypt data with AES-GCM
|
|
15
|
+
*/
|
|
16
|
+
async function aesGcmEncrypt(params, key, data) {
|
|
17
|
+
// Extract raw key material
|
|
18
|
+
const rawKey = key._rawKey || key;
|
|
19
|
+
const keyBytes = rawKey instanceof ArrayBuffer ? new Uint8Array(rawKey) : new Uint8Array(rawKey);
|
|
20
|
+
const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
21
|
+
// Ensure IV is a proper ArrayBuffer
|
|
22
|
+
let ivBytes;
|
|
23
|
+
if (params.iv instanceof Uint8Array) {
|
|
24
|
+
ivBytes = params.iv;
|
|
25
|
+
}
|
|
26
|
+
else if (params.iv instanceof ArrayBuffer) {
|
|
27
|
+
ivBytes = new Uint8Array(params.iv);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// ArrayBufferView - copy to ensure we have ArrayBuffer
|
|
31
|
+
const view = params.iv;
|
|
32
|
+
const copy = new Uint8Array(view.byteLength);
|
|
33
|
+
copy.set(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
|
|
34
|
+
ivBytes = copy;
|
|
35
|
+
}
|
|
36
|
+
// Create cipher - node-forge expects key as ByteBuffer
|
|
37
|
+
const cipher = node_forge_1.default.cipher.createCipher("AES-GCM", node_forge_1.default.util.createBuffer(keyBytes.buffer));
|
|
38
|
+
cipher.start({
|
|
39
|
+
iv: node_forge_1.default.util.createBuffer(ivBytes.buffer),
|
|
40
|
+
tagLength: (params.tagLength || 128) / 8, // Convert bits to bytes
|
|
41
|
+
});
|
|
42
|
+
cipher.update(node_forge_1.default.util.createBuffer(dataBytes.buffer));
|
|
43
|
+
cipher.finish();
|
|
44
|
+
// Get ciphertext and tag
|
|
45
|
+
const encrypted = cipher.output;
|
|
46
|
+
const tag = cipher.mode.tag;
|
|
47
|
+
// Combine ciphertext and tag (Web Crypto API appends tag automatically)
|
|
48
|
+
// node-forge ByteBuffer has a toBytes() method that returns a string
|
|
49
|
+
const encryptedHex = encrypted.toHex();
|
|
50
|
+
const encryptedBytes = new Uint8Array(encryptedHex.length / 2);
|
|
51
|
+
for (let i = 0; i < encryptedBytes.length; i++) {
|
|
52
|
+
encryptedBytes[i] = parseInt(encryptedHex.substr(i * 2, 2), 16);
|
|
53
|
+
}
|
|
54
|
+
const tagHex = tag.toHex();
|
|
55
|
+
const tagBytes = new Uint8Array(tagHex.length / 2);
|
|
56
|
+
for (let i = 0; i < tagBytes.length; i++) {
|
|
57
|
+
tagBytes[i] = parseInt(tagHex.substr(i * 2, 2), 16);
|
|
58
|
+
}
|
|
59
|
+
// Combine: ciphertext + tag
|
|
60
|
+
const result = new Uint8Array(encryptedBytes.length + tagBytes.length);
|
|
61
|
+
result.set(encryptedBytes, 0);
|
|
62
|
+
result.set(tagBytes, encryptedBytes.length);
|
|
63
|
+
return result.buffer;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Decrypt data with AES-GCM
|
|
67
|
+
*/
|
|
68
|
+
async function aesGcmDecrypt(params, key, data) {
|
|
69
|
+
// Extract raw key material
|
|
70
|
+
const rawKey = key._rawKey || key;
|
|
71
|
+
const keyBytes = rawKey instanceof ArrayBuffer ? new Uint8Array(rawKey) : new Uint8Array(rawKey);
|
|
72
|
+
const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
73
|
+
let ivBytes;
|
|
74
|
+
if (params.iv instanceof Uint8Array) {
|
|
75
|
+
ivBytes = params.iv;
|
|
76
|
+
}
|
|
77
|
+
else if (params.iv instanceof ArrayBuffer) {
|
|
78
|
+
ivBytes = new Uint8Array(params.iv);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// ArrayBufferView
|
|
82
|
+
const view = params.iv;
|
|
83
|
+
ivBytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
|
|
84
|
+
}
|
|
85
|
+
// Extract tag (last 16 bytes for 128-bit tag)
|
|
86
|
+
const tagLength = (params.tagLength || 128) / 8; // Convert bits to bytes
|
|
87
|
+
if (dataBytes.length < tagLength) {
|
|
88
|
+
throw new Error("Encrypted data too short (missing tag)");
|
|
89
|
+
}
|
|
90
|
+
const ciphertext = dataBytes.slice(0, dataBytes.length - tagLength);
|
|
91
|
+
const tag = dataBytes.slice(dataBytes.length - tagLength);
|
|
92
|
+
// Create decipher - node-forge expects key as ByteBuffer
|
|
93
|
+
const decipher = node_forge_1.default.cipher.createDecipher("AES-GCM", node_forge_1.default.util.createBuffer(keyBytes.buffer));
|
|
94
|
+
decipher.start({
|
|
95
|
+
iv: node_forge_1.default.util.createBuffer(ivBytes.buffer),
|
|
96
|
+
tagLength: tagLength * 8, // Convert bytes to bits for node-forge
|
|
97
|
+
tag: node_forge_1.default.util.createBuffer(tag.buffer),
|
|
98
|
+
});
|
|
99
|
+
decipher.update(node_forge_1.default.util.createBuffer(ciphertext.buffer));
|
|
100
|
+
const success = decipher.finish();
|
|
101
|
+
if (!success) {
|
|
102
|
+
throw new Error("AES-GCM decryption failed: authentication tag mismatch");
|
|
103
|
+
}
|
|
104
|
+
const decrypted = decipher.output;
|
|
105
|
+
const decryptedHex = decrypted.toHex();
|
|
106
|
+
const decryptedBytes = new Uint8Array(decryptedHex.length / 2);
|
|
107
|
+
for (let i = 0; i < decryptedBytes.length; i++) {
|
|
108
|
+
decryptedBytes[i] = parseInt(decryptedHex.substr(i * 2, 2), 16);
|
|
109
|
+
}
|
|
110
|
+
return decryptedBytes.buffer;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=AESAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AESAdapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/AESAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ed25519 Adapter
|
|
3
|
+
* Implements Ed25519 key generation, signing, and verification using TweetNaCl
|
|
4
|
+
*
|
|
5
|
+
* TweetNaCl is CommonJS compatible and works directly with Jest without mocking.
|
|
6
|
+
* It provides real Ed25519 elliptic curve operations, audited by Cure53.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Generate Ed25519 key pair
|
|
10
|
+
*/
|
|
11
|
+
export declare function ed25519GenerateKey(): Promise<CryptoKeyPair>;
|
|
12
|
+
/**
|
|
13
|
+
* Import Ed25519 key from SPKI (public) or PKCS8 (private) format
|
|
14
|
+
*/
|
|
15
|
+
export declare function ed25519ImportKey(format: "spki" | "pkcs8", keyData: ArrayBuffer | ArrayBufferLike, algorithm: {
|
|
16
|
+
name: "Ed25519";
|
|
17
|
+
}, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
|
|
18
|
+
/**
|
|
19
|
+
* Export Ed25519 key to SPKI (public) or PKCS8 (private) format
|
|
20
|
+
*/
|
|
21
|
+
export declare function ed25519ExportKey(format: "spki" | "pkcs8", key: CryptoKey): Promise<ArrayBuffer>;
|
|
22
|
+
/**
|
|
23
|
+
* Sign data with Ed25519 private key
|
|
24
|
+
*/
|
|
25
|
+
export declare function ed25519Sign(algorithm: {
|
|
26
|
+
name: "Ed25519";
|
|
27
|
+
}, key: CryptoKey, data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
|
|
28
|
+
/**
|
|
29
|
+
* Verify Ed25519 signature
|
|
30
|
+
*/
|
|
31
|
+
export declare function ed25519Verify(algorithm: {
|
|
32
|
+
name: "Ed25519";
|
|
33
|
+
}, key: CryptoKey, signature: ArrayBuffer | Uint8Array, data: ArrayBuffer | Uint8Array): Promise<boolean>;
|
|
34
|
+
//# sourceMappingURL=Ed25519Adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519Adapter.d.ts","sourceRoot":"","sources":["../../../src/reactnative/crypto/Ed25519Adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,CAoBjE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,EAAE,WAAW,GAAG,eAAe,EACtC,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC,CA8CpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAAG,UAAU,GAC7B,OAAO,CAAC,WAAW,CAAC,CActB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EAC9B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,WAAW,GAAG,UAAU,EACnC,IAAI,EAAE,WAAW,GAAG,UAAU,GAC7B,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ed25519 Adapter
|
|
4
|
+
* Implements Ed25519 key generation, signing, and verification using TweetNaCl
|
|
5
|
+
*
|
|
6
|
+
* TweetNaCl is CommonJS compatible and works directly with Jest without mocking.
|
|
7
|
+
* It provides real Ed25519 elliptic curve operations, audited by Cure53.
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ed25519GenerateKey = ed25519GenerateKey;
|
|
14
|
+
exports.ed25519ImportKey = ed25519ImportKey;
|
|
15
|
+
exports.ed25519ExportKey = ed25519ExportKey;
|
|
16
|
+
exports.ed25519Sign = ed25519Sign;
|
|
17
|
+
exports.ed25519Verify = ed25519Verify;
|
|
18
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
19
|
+
// Ed25519 key sizes
|
|
20
|
+
const ED25519_SEED_SIZE = 32; // The 32-byte seed (what PKCS8 stores)
|
|
21
|
+
const ED25519_PUBLIC_KEY_SIZE = 32; // The 32-byte public key
|
|
22
|
+
const ED25519_SECRET_KEY_SIZE = 64; // TweetNaCl's format: seed + public key
|
|
23
|
+
const ED25519_SIGNATURE_SIZE = 64;
|
|
24
|
+
/**
|
|
25
|
+
* Generate Ed25519 key pair
|
|
26
|
+
*/
|
|
27
|
+
async function ed25519GenerateKey() {
|
|
28
|
+
const keyPair = tweetnacl_1.default.sign.keyPair();
|
|
29
|
+
return {
|
|
30
|
+
publicKey: {
|
|
31
|
+
type: "public",
|
|
32
|
+
extractable: true,
|
|
33
|
+
algorithm: { name: "Ed25519" },
|
|
34
|
+
usages: ["verify"],
|
|
35
|
+
_rawPublicKey: keyPair.publicKey,
|
|
36
|
+
},
|
|
37
|
+
privateKey: {
|
|
38
|
+
type: "private",
|
|
39
|
+
extractable: true,
|
|
40
|
+
algorithm: { name: "Ed25519" },
|
|
41
|
+
usages: ["sign"],
|
|
42
|
+
// Store the full 64-byte secret key (TweetNaCl format)
|
|
43
|
+
_rawPrivateKey: keyPair.secretKey,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Import Ed25519 key from SPKI (public) or PKCS8 (private) format
|
|
49
|
+
*/
|
|
50
|
+
async function ed25519ImportKey(format, keyData, algorithm, extractable, keyUsages) {
|
|
51
|
+
// Ensure we have an ArrayBuffer (not SharedArrayBuffer)
|
|
52
|
+
// Note: We don't explicitly check for SharedArrayBuffer here because:
|
|
53
|
+
// 1. SharedArrayBuffer may not exist in React Native/Expo Go environments
|
|
54
|
+
// 2. Using (keyData as any) and copying works for both SharedArrayBuffer and ArrayBufferView
|
|
55
|
+
// 3. This approach avoids ReferenceError when SharedArrayBuffer is undefined
|
|
56
|
+
let buffer;
|
|
57
|
+
if (keyData instanceof ArrayBuffer) {
|
|
58
|
+
buffer = keyData;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Copy from SharedArrayBuffer or ArrayBufferView
|
|
62
|
+
const view = new Uint8Array(keyData);
|
|
63
|
+
const copy = new Uint8Array(view.length);
|
|
64
|
+
copy.set(view);
|
|
65
|
+
buffer = copy.buffer;
|
|
66
|
+
}
|
|
67
|
+
const keyBytes = new Uint8Array(buffer);
|
|
68
|
+
if (format === "spki") {
|
|
69
|
+
// SPKI format for public keys
|
|
70
|
+
const publicKey = extractEd25519PublicKeyFromSPKI(keyBytes);
|
|
71
|
+
return {
|
|
72
|
+
type: "public",
|
|
73
|
+
extractable,
|
|
74
|
+
algorithm,
|
|
75
|
+
usages: keyUsages,
|
|
76
|
+
_rawPublicKey: publicKey,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// PKCS8 format for private keys
|
|
81
|
+
// Extract the 32-byte seed from PKCS8
|
|
82
|
+
const seed = extractEd25519PrivateKeyFromPKCS8(keyBytes);
|
|
83
|
+
// Derive the full 64-byte secret key from the seed using TweetNaCl
|
|
84
|
+
const keyPair = tweetnacl_1.default.sign.keyPair.fromSeed(seed);
|
|
85
|
+
return {
|
|
86
|
+
type: "private",
|
|
87
|
+
extractable,
|
|
88
|
+
algorithm,
|
|
89
|
+
usages: keyUsages,
|
|
90
|
+
// Store the full 64-byte secret key
|
|
91
|
+
_rawPrivateKey: keyPair.secretKey,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Export Ed25519 key to SPKI (public) or PKCS8 (private) format
|
|
97
|
+
*/
|
|
98
|
+
async function ed25519ExportKey(format, key) {
|
|
99
|
+
if (format === "spki") {
|
|
100
|
+
const publicKey = key._rawPublicKey;
|
|
101
|
+
if (!publicKey) {
|
|
102
|
+
throw new Error("Key does not contain public key material");
|
|
103
|
+
}
|
|
104
|
+
return encodeEd25519PublicKeyToSPKI(publicKey);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const secretKey = key._rawPrivateKey;
|
|
108
|
+
if (!secretKey) {
|
|
109
|
+
throw new Error("Key does not contain private key material");
|
|
110
|
+
}
|
|
111
|
+
// PKCS8 stores only the 32-byte seed (first half of TweetNaCl's 64-byte secret key)
|
|
112
|
+
const seed = secretKey.slice(0, ED25519_SEED_SIZE);
|
|
113
|
+
return encodeEd25519PrivateKeyToPKCS8(seed);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sign data with Ed25519 private key
|
|
118
|
+
*/
|
|
119
|
+
async function ed25519Sign(algorithm, key, data) {
|
|
120
|
+
const secretKey = key._rawPrivateKey;
|
|
121
|
+
if (!secretKey) {
|
|
122
|
+
throw new Error("Key does not contain private key material");
|
|
123
|
+
}
|
|
124
|
+
const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
125
|
+
// Use detached signature (just the signature, not message + signature)
|
|
126
|
+
const signature = tweetnacl_1.default.sign.detached(dataBytes, secretKey);
|
|
127
|
+
// Ensure we return an ArrayBuffer (not SharedArrayBuffer)
|
|
128
|
+
const copy = new Uint8Array(signature);
|
|
129
|
+
return copy.buffer;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Verify Ed25519 signature
|
|
133
|
+
*/
|
|
134
|
+
async function ed25519Verify(algorithm, key, signature, data) {
|
|
135
|
+
const publicKey = key._rawPublicKey;
|
|
136
|
+
if (!publicKey) {
|
|
137
|
+
throw new Error("Key does not contain public key material");
|
|
138
|
+
}
|
|
139
|
+
const sigBytes = signature instanceof Uint8Array ? signature : new Uint8Array(signature);
|
|
140
|
+
const dataBytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
141
|
+
return tweetnacl_1.default.sign.detached.verify(dataBytes, sigBytes, publicKey);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Extract Ed25519 public key from SPKI format
|
|
145
|
+
* SPKI format: SEQUENCE { AlgorithmIdentifier { OID 1.3.101.112 }, BIT STRING }
|
|
146
|
+
*/
|
|
147
|
+
function extractEd25519PublicKeyFromSPKI(spki) {
|
|
148
|
+
let pos = 0;
|
|
149
|
+
// Skip outer SEQUENCE tag (0x30)
|
|
150
|
+
if (spki[pos] !== 0x30) {
|
|
151
|
+
throw new Error("Invalid SPKI format: expected SEQUENCE");
|
|
152
|
+
}
|
|
153
|
+
pos++;
|
|
154
|
+
// Skip length (can be 1-4 bytes)
|
|
155
|
+
const seqLength = readASN1Length(spki, pos);
|
|
156
|
+
pos += seqLength.bytesRead;
|
|
157
|
+
// Skip AlgorithmIdentifier SEQUENCE
|
|
158
|
+
if (spki[pos] !== 0x30) {
|
|
159
|
+
throw new Error("Invalid SPKI format: expected AlgorithmIdentifier SEQUENCE");
|
|
160
|
+
}
|
|
161
|
+
pos++;
|
|
162
|
+
const algIdLength = readASN1Length(spki, pos);
|
|
163
|
+
pos += algIdLength.bytesRead + algIdLength.value;
|
|
164
|
+
// Now we should be at the BIT STRING (0x03)
|
|
165
|
+
if (spki[pos] !== 0x03) {
|
|
166
|
+
throw new Error("Invalid SPKI format: expected BIT STRING");
|
|
167
|
+
}
|
|
168
|
+
pos++;
|
|
169
|
+
// Read BIT STRING length
|
|
170
|
+
const bitStringLength = readASN1Length(spki, pos);
|
|
171
|
+
pos += bitStringLength.bytesRead;
|
|
172
|
+
// Skip the unused bits byte (usually 0x00)
|
|
173
|
+
pos++;
|
|
174
|
+
// Extract the 32-byte public key
|
|
175
|
+
if (bitStringLength.value - 1 !== ED25519_PUBLIC_KEY_SIZE) {
|
|
176
|
+
throw new Error(`Invalid Ed25519 public key size: expected ${ED25519_PUBLIC_KEY_SIZE}, got ${bitStringLength.value - 1}`);
|
|
177
|
+
}
|
|
178
|
+
return spki.slice(pos, pos + ED25519_PUBLIC_KEY_SIZE);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Extract Ed25519 private key (seed) from PKCS8 format
|
|
182
|
+
* PKCS8 format: SEQUENCE { version, AlgorithmIdentifier { OID 1.3.101.112 }, OCTET STRING { OCTET STRING { seed } } }
|
|
183
|
+
*
|
|
184
|
+
* Note: RFC 8410 specifies that Ed25519 private keys in PKCS8 are wrapped in an additional OCTET STRING
|
|
185
|
+
*/
|
|
186
|
+
function extractEd25519PrivateKeyFromPKCS8(pkcs8) {
|
|
187
|
+
let pos = 0;
|
|
188
|
+
// Skip outer SEQUENCE tag (0x30)
|
|
189
|
+
if (pkcs8[pos] !== 0x30) {
|
|
190
|
+
throw new Error("Invalid PKCS8 format: expected SEQUENCE");
|
|
191
|
+
}
|
|
192
|
+
pos++;
|
|
193
|
+
// Skip length
|
|
194
|
+
const seqLength = readASN1Length(pkcs8, pos);
|
|
195
|
+
pos += seqLength.bytesRead;
|
|
196
|
+
// Skip version INTEGER (0x02)
|
|
197
|
+
if (pkcs8[pos] !== 0x02) {
|
|
198
|
+
throw new Error("Invalid PKCS8 format: expected version INTEGER");
|
|
199
|
+
}
|
|
200
|
+
pos++;
|
|
201
|
+
const versionLength = readASN1Length(pkcs8, pos);
|
|
202
|
+
pos += versionLength.bytesRead + versionLength.value;
|
|
203
|
+
// Skip AlgorithmIdentifier SEQUENCE
|
|
204
|
+
if (pkcs8[pos] !== 0x30) {
|
|
205
|
+
throw new Error("Invalid PKCS8 format: expected AlgorithmIdentifier SEQUENCE");
|
|
206
|
+
}
|
|
207
|
+
pos++;
|
|
208
|
+
const algIdLength = readASN1Length(pkcs8, pos);
|
|
209
|
+
pos += algIdLength.bytesRead + algIdLength.value;
|
|
210
|
+
// Now we should be at the outer OCTET STRING (0x04)
|
|
211
|
+
if (pkcs8[pos] !== 0x04) {
|
|
212
|
+
throw new Error("Invalid PKCS8 format: expected OCTET STRING");
|
|
213
|
+
}
|
|
214
|
+
pos++;
|
|
215
|
+
// Read outer OCTET STRING length
|
|
216
|
+
const outerOctetLength = readASN1Length(pkcs8, pos);
|
|
217
|
+
pos += outerOctetLength.bytesRead;
|
|
218
|
+
// Check if there's an inner OCTET STRING (RFC 8410 format)
|
|
219
|
+
if (pkcs8[pos] === 0x04) {
|
|
220
|
+
// Inner OCTET STRING contains the actual seed
|
|
221
|
+
pos++;
|
|
222
|
+
const innerOctetLength = readASN1Length(pkcs8, pos);
|
|
223
|
+
pos += innerOctetLength.bytesRead;
|
|
224
|
+
if (innerOctetLength.value !== ED25519_SEED_SIZE) {
|
|
225
|
+
throw new Error(`Invalid Ed25519 private key size: expected ${ED25519_SEED_SIZE}, got ${innerOctetLength.value}`);
|
|
226
|
+
}
|
|
227
|
+
return pkcs8.slice(pos, pos + ED25519_SEED_SIZE);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Direct seed (older format)
|
|
231
|
+
if (outerOctetLength.value !== ED25519_SEED_SIZE) {
|
|
232
|
+
throw new Error(`Invalid Ed25519 private key size: expected ${ED25519_SEED_SIZE}, got ${outerOctetLength.value}`);
|
|
233
|
+
}
|
|
234
|
+
return pkcs8.slice(pos, pos + ED25519_SEED_SIZE);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Read ASN.1 length field
|
|
239
|
+
* Returns { value: number, bytesRead: number }
|
|
240
|
+
*/
|
|
241
|
+
function readASN1Length(data, pos) {
|
|
242
|
+
if (pos >= data.length) {
|
|
243
|
+
throw new Error("Invalid ASN.1: unexpected end of data");
|
|
244
|
+
}
|
|
245
|
+
const firstByte = data[pos];
|
|
246
|
+
// Short form (length < 128)
|
|
247
|
+
if ((firstByte & 0x80) === 0) {
|
|
248
|
+
return { value: firstByte, bytesRead: 1 };
|
|
249
|
+
}
|
|
250
|
+
// Long form (length >= 128)
|
|
251
|
+
const lengthBytes = firstByte & 0x7f;
|
|
252
|
+
if (lengthBytes === 0 || lengthBytes > 4) {
|
|
253
|
+
throw new Error("Invalid ASN.1: invalid length encoding");
|
|
254
|
+
}
|
|
255
|
+
if (pos + 1 + lengthBytes > data.length) {
|
|
256
|
+
throw new Error("Invalid ASN.1: unexpected end of data");
|
|
257
|
+
}
|
|
258
|
+
let length = 0;
|
|
259
|
+
for (let i = 0; i < lengthBytes; i++) {
|
|
260
|
+
length = (length << 8) | data[pos + 1 + i];
|
|
261
|
+
}
|
|
262
|
+
return { value: length, bytesRead: 1 + lengthBytes };
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Encode Ed25519 public key to SPKI format
|
|
266
|
+
*/
|
|
267
|
+
function encodeEd25519PublicKeyToSPKI(publicKey) {
|
|
268
|
+
if (publicKey.length !== ED25519_PUBLIC_KEY_SIZE) {
|
|
269
|
+
throw new Error(`Invalid Ed25519 public key size: expected ${ED25519_PUBLIC_KEY_SIZE}, got ${publicKey.length}`);
|
|
270
|
+
}
|
|
271
|
+
// Ed25519 SPKI structure:
|
|
272
|
+
// SEQUENCE {
|
|
273
|
+
// SEQUENCE {
|
|
274
|
+
// OID 1.3.101.112 (Ed25519) = [0x06, 0x03, 0x2b, 0x65, 0x70]
|
|
275
|
+
// }
|
|
276
|
+
// BIT STRING { 0x00 (unused bits), publicKey (32 bytes) }
|
|
277
|
+
// }
|
|
278
|
+
const oid = new Uint8Array([0x06, 0x03, 0x2b, 0x65, 0x70]); // OID 1.3.101.112
|
|
279
|
+
const algorithmId = encodeASN1Sequence([oid]);
|
|
280
|
+
const bitString = encodeASN1BitString(publicKey);
|
|
281
|
+
const outerSequence = encodeASN1Sequence([algorithmId, bitString]);
|
|
282
|
+
// Ensure we return an ArrayBuffer (not SharedArrayBuffer)
|
|
283
|
+
const copy = new Uint8Array(outerSequence);
|
|
284
|
+
return copy.buffer;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Encode Ed25519 private key (seed) to PKCS8 format
|
|
288
|
+
* Uses RFC 8410 format with wrapped OCTET STRING
|
|
289
|
+
*/
|
|
290
|
+
function encodeEd25519PrivateKeyToPKCS8(seed) {
|
|
291
|
+
if (seed.length !== ED25519_SEED_SIZE) {
|
|
292
|
+
throw new Error(`Invalid Ed25519 seed size: expected ${ED25519_SEED_SIZE}, got ${seed.length}`);
|
|
293
|
+
}
|
|
294
|
+
// Ed25519 PKCS8 structure (RFC 8410):
|
|
295
|
+
// SEQUENCE {
|
|
296
|
+
// INTEGER 0 (version)
|
|
297
|
+
// SEQUENCE {
|
|
298
|
+
// OID 1.3.101.112 (Ed25519) = [0x06, 0x03, 0x2b, 0x65, 0x70]
|
|
299
|
+
// }
|
|
300
|
+
// OCTET STRING { OCTET STRING { seed (32 bytes) } }
|
|
301
|
+
// }
|
|
302
|
+
const version = encodeASN1Integer(new Uint8Array([0x00])); // INTEGER 0
|
|
303
|
+
const oid = new Uint8Array([0x06, 0x03, 0x2b, 0x65, 0x70]); // OID 1.3.101.112
|
|
304
|
+
const algorithmId = encodeASN1Sequence([oid]);
|
|
305
|
+
// Inner OCTET STRING contains the seed
|
|
306
|
+
const innerOctetString = encodeASN1OctetString(seed);
|
|
307
|
+
// Outer OCTET STRING wraps the inner one
|
|
308
|
+
const outerOctetString = encodeASN1OctetString(innerOctetString);
|
|
309
|
+
const outerSequence = encodeASN1Sequence([version, algorithmId, outerOctetString]);
|
|
310
|
+
// Ensure we return an ArrayBuffer (not SharedArrayBuffer)
|
|
311
|
+
const copy = new Uint8Array(outerSequence);
|
|
312
|
+
return copy.buffer;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Encode ASN.1 SEQUENCE
|
|
316
|
+
*/
|
|
317
|
+
function encodeASN1Sequence(items) {
|
|
318
|
+
let totalLength = 0;
|
|
319
|
+
for (const item of items) {
|
|
320
|
+
totalLength += item.length;
|
|
321
|
+
}
|
|
322
|
+
const lengthBytes = encodeASN1Length(totalLength);
|
|
323
|
+
const result = new Uint8Array(1 + lengthBytes.length + totalLength);
|
|
324
|
+
result[0] = 0x30; // SEQUENCE tag
|
|
325
|
+
result.set(lengthBytes, 1);
|
|
326
|
+
let pos = 1 + lengthBytes.length;
|
|
327
|
+
for (const item of items) {
|
|
328
|
+
result.set(item, pos);
|
|
329
|
+
pos += item.length;
|
|
330
|
+
}
|
|
331
|
+
return result;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Encode ASN.1 BIT STRING
|
|
335
|
+
*/
|
|
336
|
+
function encodeASN1BitString(data) {
|
|
337
|
+
// BIT STRING: tag (0x03) + length + unused bits (0x00) + data
|
|
338
|
+
const length = 1 + data.length; // 1 byte for unused bits + data
|
|
339
|
+
const lengthBytes = encodeASN1Length(length);
|
|
340
|
+
const result = new Uint8Array(1 + lengthBytes.length + length);
|
|
341
|
+
result[0] = 0x03; // BIT STRING tag
|
|
342
|
+
result.set(lengthBytes, 1);
|
|
343
|
+
result[1 + lengthBytes.length] = 0x00; // unused bits
|
|
344
|
+
result.set(data, 1 + lengthBytes.length + 1);
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Encode ASN.1 OCTET STRING
|
|
349
|
+
*/
|
|
350
|
+
function encodeASN1OctetString(data) {
|
|
351
|
+
const lengthBytes = encodeASN1Length(data.length);
|
|
352
|
+
const result = new Uint8Array(1 + lengthBytes.length + data.length);
|
|
353
|
+
result[0] = 0x04; // OCTET STRING tag
|
|
354
|
+
result.set(lengthBytes, 1);
|
|
355
|
+
result.set(data, 1 + lengthBytes.length);
|
|
356
|
+
return result;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Encode ASN.1 INTEGER
|
|
360
|
+
*/
|
|
361
|
+
function encodeASN1Integer(data) {
|
|
362
|
+
const lengthBytes = encodeASN1Length(data.length);
|
|
363
|
+
const result = new Uint8Array(1 + lengthBytes.length + data.length);
|
|
364
|
+
result[0] = 0x02; // INTEGER tag
|
|
365
|
+
result.set(lengthBytes, 1);
|
|
366
|
+
result.set(data, 1 + lengthBytes.length);
|
|
367
|
+
return result;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Encode ASN.1 length field
|
|
371
|
+
*/
|
|
372
|
+
function encodeASN1Length(length) {
|
|
373
|
+
if (length < 128) {
|
|
374
|
+
// Short form
|
|
375
|
+
return new Uint8Array([length]);
|
|
376
|
+
}
|
|
377
|
+
// Long form
|
|
378
|
+
const bytes = [];
|
|
379
|
+
let value = length;
|
|
380
|
+
while (value > 0) {
|
|
381
|
+
bytes.unshift(value & 0xff);
|
|
382
|
+
value >>>= 8;
|
|
383
|
+
}
|
|
384
|
+
return new Uint8Array([0x80 | bytes.length, ...bytes]);
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=Ed25519Adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ed25519Adapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/Ed25519Adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expo Go Crypto Adapter
|
|
3
|
+
* JavaScript-only implementation of CryptoAdapter for Expo Go
|
|
4
|
+
* Uses pure JS crypto libraries since native modules don't work in Expo Go
|
|
5
|
+
*/
|
|
6
|
+
import type { CryptoAdapter } from "../../core/crypto/CryptoAdapter";
|
|
7
|
+
/**
|
|
8
|
+
* Expo Go Crypto Adapter
|
|
9
|
+
* Implements the CryptoAdapter interface using JavaScript-only crypto libraries
|
|
10
|
+
*/
|
|
11
|
+
export declare class ExpoGoCryptoAdapter implements CryptoAdapter {
|
|
12
|
+
private subtle;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Get the SubtleCrypto interface
|
|
16
|
+
*/
|
|
17
|
+
getSubtle(): SubtleCrypto;
|
|
18
|
+
/**
|
|
19
|
+
* Get random values using expo-standard-web-crypto or fallback
|
|
20
|
+
*/
|
|
21
|
+
getRandomValues(array: Uint8Array): Uint8Array;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ExpoGoCryptoAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpoGoCryptoAdapter.d.ts","sourceRoot":"","sources":["../../../src/reactnative/crypto/ExpoGoCryptoAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAerE;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,MAAM,CAAuB;;IAMrC;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAe/C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Expo Go Crypto Adapter
|
|
4
|
+
* JavaScript-only implementation of CryptoAdapter for Expo Go
|
|
5
|
+
* Uses pure JS crypto libraries since native modules don't work in Expo Go
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ExpoGoCryptoAdapter = void 0;
|
|
9
|
+
const SubtleCryptoPolyfill_1 = require("./SubtleCryptoPolyfill");
|
|
10
|
+
// Dynamic import of expo-standard-web-crypto to handle environments where it's not available
|
|
11
|
+
let getRandomValuesFn = null;
|
|
12
|
+
try {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
14
|
+
const expoStandardWebCrypto = require("expo-standard-web-crypto");
|
|
15
|
+
// Handle both default export and named export
|
|
16
|
+
getRandomValuesFn = expoStandardWebCrypto.getRandomValues || expoStandardWebCrypto.default?.getRandomValues;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// expo-standard-web-crypto not available, will use fallback
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Expo Go Crypto Adapter
|
|
23
|
+
* Implements the CryptoAdapter interface using JavaScript-only crypto libraries
|
|
24
|
+
*/
|
|
25
|
+
class ExpoGoCryptoAdapter {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.subtle = new SubtleCryptoPolyfill_1.SubtleCryptoPolyfill();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the SubtleCrypto interface
|
|
31
|
+
*/
|
|
32
|
+
getSubtle() {
|
|
33
|
+
return this.subtle;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get random values using expo-standard-web-crypto or fallback
|
|
37
|
+
*/
|
|
38
|
+
getRandomValues(array) {
|
|
39
|
+
if (getRandomValuesFn) {
|
|
40
|
+
return getRandomValuesFn(array);
|
|
41
|
+
}
|
|
42
|
+
// Fallback: use global crypto if available (e.g., in Node.js tests)
|
|
43
|
+
if (typeof crypto !== "undefined" && crypto.getRandomValues) {
|
|
44
|
+
return crypto.getRandomValues(array);
|
|
45
|
+
}
|
|
46
|
+
throw new Error("getRandomValues not available. " +
|
|
47
|
+
"Install expo-standard-web-crypto for React Native support.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.ExpoGoCryptoAdapter = ExpoGoCryptoAdapter;
|
|
51
|
+
//# sourceMappingURL=ExpoGoCryptoAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpoGoCryptoAdapter.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/ExpoGoCryptoAdapter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,iEAA8D;AAE9D,6FAA6F;AAC7F,IAAI,iBAAiB,GAA+C,IAAI,CAAC;AAEzE,IAAI,CAAC;IACH,8DAA8D;IAC9D,MAAM,qBAAqB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClE,8CAA8C;IAC9C,iBAAiB,GAAG,qBAAqB,CAAC,eAAe,IAAI,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC;AAC9G,CAAC;AAAC,MAAM,CAAC;IACP,4DAA4D;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAa,mBAAmB;IAG9B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,2CAAoB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAiC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAiB;QAC/B,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,iCAAiC;YACjC,4DAA4D,CAC7D,CAAC;IACJ,CAAC;CACF;AAhCD,kDAgCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMAC-SHA256 Adapter
|
|
3
|
+
* Implements HMAC-SHA256 signing and verification using node-forge
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Sign data with HMAC-SHA256
|
|
7
|
+
*/
|
|
8
|
+
export declare function hmacSign(key: ArrayBuffer, data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
|
|
9
|
+
/**
|
|
10
|
+
* Verify HMAC-SHA256 signature
|
|
11
|
+
*/
|
|
12
|
+
export declare function hmacVerify(key: ArrayBuffer, signature: ArrayBuffer | Uint8Array, data: ArrayBuffer | Uint8Array): Promise<boolean>;
|
|
13
|
+
//# sourceMappingURL=HMACAdapter.d.ts.map
|