UNPKG

expo-aes-vetkeys

Version:

Hooks and components for using AES & vetkeys in Expo Web/Native applications

84 lines (76 loc) 3 kB
import { CryptoModule } from 'expo-crypto-universal'; import { Identity } from '@dfinity/agent'; import { JSX as JSX_2 } from 'react/jsx-runtime'; import { Storage as Storage_2 } from 'expo-storage-universal'; import { Uint8ArrayValueStorageWrapper } from 'expo-storage-universal'; /** * Interface defining the backend operations required for AES key management */ export declare interface AesBackend { /** * Retrieves asymmetric keys for encryption/decryption * @param transportPublicKey - The public key used for transport * @returns Promise resolving to the asymmetric keys result */ asymmetricKeys: (transportPublicKey: Uint8Array) => Promise<AsymmetricKeysResult>; /** * Saves an encrypted AES key to the backend * @param encryptedAesKey - The encrypted AES key to save * @returns Promise that resolves when the key is saved */ asymmetricSaveEncryptedAesKey: (encryptedAesKey: Uint8Array) => Promise<void>; } export declare const AesProcessingView: () => JSX_2.Element; /** * AesRawKeyStorage is a specialized storage wrapper for AES raw keys. * It extends the Uint8ArrayValueStorageWrapper to provide specific functionality * for storing AES raw keys. */ export declare class AesRawKeyStorage extends Uint8ArrayValueStorageWrapper { /** * Creates an instance of AesRawKeyStorage. * * @param {Storage} storage - The storage instance to be used for storing the AES raw key. */ constructor(storage: Storage_2); } /** * Result type for asymmetric key operations */ export declare type AsymmetricKeysResult = { /** The public key used for encryption */ publicKey: Uint8Array; /** The encrypted AES key if it exists */ encryptedAesKey: Uint8Array | undefined; /** The encrypted key if it exists */ encryptedKey: Uint8Array | undefined; }; /** * Hook for managing AES key generation, encryption, and storage * * This hook handles the lifecycle of AES keys: * 1. Generates new AES keys when no identity is present * 2. Retrieves and decrypts existing AES keys when an identity is present * 3. Encrypts and saves new AES keys when needed * * @param args - The arguments required for AES key management * @returns Object containing processing state and any errors */ export declare const useAesKey: ({ cryptoModule, aesRawKeyStorage, identity, backend, }: UseAesKeyArgs) => { isProcessingAes: boolean; aesError: unknown; }; /** * Arguments required for the useAesKey hook */ declare type UseAesKeyArgs = { /** The crypto module for cryptographic operations */ cryptoModule: CryptoModule; /** Storage wrapper for AES key persistence */ aesRawKeyStorage: Uint8ArrayValueStorageWrapper; /** The user's identity, if authenticated */ identity: Identity | undefined; /** The backend service for key operations */ backend: AesBackend; }; export { }