diff --git a/bindings/core/src/method/secret_manager.rs b/bindings/core/src/method/secret_manager.rs index 263e600594..a4298f2b1e 100644 --- a/bindings/core/src/method/secret_manager.rs +++ b/bindings/core/src/method/secret_manager.rs @@ -95,6 +95,11 @@ pub enum SecretManagerMethod { #[derivative(Debug(format_with = "OmittedDebug::omitted_fmt"))] password: String, }, + /// Clear the stronghold password. + /// Expected response: [`Ok`](crate::Response::Ok) + #[cfg(feature = "stronghold")] + #[cfg_attr(docsrs, doc(cfg(feature = "stronghold")))] + ClearStrongholdPassword } #[cfg(test)] diff --git a/bindings/core/src/method_handler/secret_manager.rs b/bindings/core/src/method_handler/secret_manager.rs index 98d826f8aa..19f4806d31 100644 --- a/bindings/core/src/method_handler/secret_manager.rs +++ b/bindings/core/src/method_handler/secret_manager.rs @@ -159,6 +159,18 @@ where stronghold.change_password(password).await?; Response::Ok } + #[cfg(feature = "stronghold")] + SecretManagerMethod::ClearStrongholdPassword => { + let stronghold = if let Some(secret_manager) = secret_manager.downcast::() { + secret_manager + } else if let Some(SecretManager::Stronghold(secret_manager)) = secret_manager.downcast::() { + secret_manager + } else { + return Err(iota_sdk::client::Error::SecretManagerMismatch.into()); + }; + stronghold.clear_key().await; + Response::Ok + } }; Ok(response) } diff --git a/bindings/nodejs/lib/secret_manager/secret-manager.ts b/bindings/nodejs/lib/secret_manager/secret-manager.ts index 6b804e76ef..82196bd6c5 100644 --- a/bindings/nodejs/lib/secret_manager/secret-manager.ts +++ b/bindings/nodejs/lib/secret_manager/secret-manager.ts @@ -236,4 +236,13 @@ export class SecretManager { data: { password }, }); } + + /** + * Clear the Stronghold password. + */ + async clearStrongholdPassword(): Promise { + await this.methodHandler.callMethod({ + name: 'clearStrongholdPassword', + }); + } } diff --git a/bindings/nodejs/lib/types/secret_manager/bridge/index.ts b/bindings/nodejs/lib/types/secret_manager/bridge/index.ts index 8f8670938d..c7027781ae 100644 --- a/bindings/nodejs/lib/types/secret_manager/bridge/index.ts +++ b/bindings/nodejs/lib/types/secret_manager/bridge/index.ts @@ -10,6 +10,7 @@ import type { __SignSecp256k1EcdsaMethod__, __SetStrongholdPasswordMethod__, __ChangeStrongholdPasswordMethod__, + __ClearStrongholdPasswordMethod__, } from './secret-manager'; export type __SecretManagerMethods__ = @@ -23,4 +24,5 @@ export type __SecretManagerMethods__ = | __SignEd25519Method__ | __SignSecp256k1EcdsaMethod__ | __SetStrongholdPasswordMethod__ - | __ChangeStrongholdPasswordMethod__; + | __ChangeStrongholdPasswordMethod__ + | __ClearStrongholdPasswordMethod__; diff --git a/bindings/nodejs/lib/types/secret_manager/bridge/secret-manager.ts b/bindings/nodejs/lib/types/secret_manager/bridge/secret-manager.ts index bcc427bd86..2e1390d34b 100644 --- a/bindings/nodejs/lib/types/secret_manager/bridge/secret-manager.ts +++ b/bindings/nodejs/lib/types/secret_manager/bridge/secret-manager.ts @@ -80,3 +80,7 @@ export interface __ChangeStrongholdPasswordMethod__ { name: 'changeStrongholdPassword'; data: { password: string }; } + +export interface __ClearStrongholdPasswordMethod__ { + name: 'clearStrongholdPassword'; +}