ci: docker_tag=dev-test
**Motivations :** - Ajout de vérifications de blocage pour s'assurer que les clés du wallet sont disponibles - Empêcher toute opération qui nécessite les clés avant que WebAuthn soit terminé - Blocage des traitements jusqu'à ce que le wallet soit déchiffré **Modifications :** - Ajout de ensureWalletKeysAvailable() pour vérifier les clés avant toute opération - Ajout de vérifications dans getAmount(), getDeviceAddress(), createProcess() - Messages d'erreur explicites quand les clés ne sont pas disponibles **Pages affectées :** - src/services/service.ts
This commit is contained in:
parent
4a3b23c9d7
commit
f795296d53
@ -925,6 +925,9 @@ export default class Services {
|
|||||||
publicData: Record<string, any>,
|
publicData: Record<string, any>,
|
||||||
roles: Record<string, RoleDefinition>
|
roles: Record<string, RoleDefinition>
|
||||||
): Promise<ApiReturn> {
|
): Promise<ApiReturn> {
|
||||||
|
// Vérifier que les clés sont disponibles avant toute opération
|
||||||
|
this.ensureWalletKeysAvailable();
|
||||||
|
|
||||||
// Attendre que le relai soit prêt avec son spAddress
|
// Attendre que le relai soit prêt avec son spAddress
|
||||||
console.log('⏳ Waiting for relays to be ready...');
|
console.log('⏳ Waiting for relays to be ready...');
|
||||||
// Update UI status
|
// Update UI status
|
||||||
@ -1677,10 +1680,35 @@ export default class Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie que les clés du wallet sont disponibles avant toute opération
|
||||||
|
*/
|
||||||
|
private ensureWalletKeysAvailable(): void {
|
||||||
|
try {
|
||||||
|
const device = this.dumpDeviceFromMemory();
|
||||||
|
if (!device || !device.sp_wallet) {
|
||||||
|
throw new Error('❌ Wallet not initialized - WebAuthn decryption required');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!device.sp_wallet.spend_key || !device.sp_wallet.scan_key) {
|
||||||
|
throw new Error('❌ Wallet keys not available - WebAuthn decryption required');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('✅ Wallet keys available for operation');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('❌ Wallet keys not available:', error);
|
||||||
|
throw new Error('❌ Wallet keys not available - WebAuthn decryption required');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public getAmount(): BigInt {
|
public getAmount(): BigInt {
|
||||||
if (!this.sdkClient) {
|
if (!this.sdkClient) {
|
||||||
throw new Error('SDK not initialized - cannot get amount');
|
throw new Error('SDK not initialized - cannot get amount');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifier que les clés sont disponibles avant toute opération
|
||||||
|
this.ensureWalletKeysAvailable();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const amount = this.sdkClient.get_available_amount();
|
const amount = this.sdkClient.get_available_amount();
|
||||||
console.log(`💰 SDK get_available_amount() returned: ${amount}`);
|
console.log(`💰 SDK get_available_amount() returned: ${amount}`);
|
||||||
@ -1713,6 +1741,10 @@ export default class Services {
|
|||||||
if (!this.sdkClient) {
|
if (!this.sdkClient) {
|
||||||
throw new Error('WebAssembly SDK not initialized - memory too high');
|
throw new Error('WebAssembly SDK not initialized - memory too high');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifier que les clés sont disponibles avant toute opération
|
||||||
|
this.ensureWalletKeysAvailable();
|
||||||
|
|
||||||
return this.sdkClient.get_address();
|
return this.sdkClient.get_address();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error(`Failed to get device address: ${e}`);
|
throw new Error(`Failed to get device address: ${e}`);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user