expo-aes-vetkeys
Version:
Hooks and components for using AES & vetkeys in Expo Web/Native applications
84 lines (76 loc) • 3 kB
TypeScript
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 { }