penumbra_sdk_custody/
null_kms.rs

1//! A basic software key management system that stores keys in memory but
2//! presents as an asynchronous signer.
3
4use penumbra_sdk_proto::custody::v1::{self as pb};
5use tonic::{async_trait, Request, Response, Status};
6
7/// A "null KMS" that has no keys and errors on any requests.
8///
9/// Useful when operating in "view-only" mode.
10#[derive(Debug, Default)]
11pub struct NullKms {}
12
13#[async_trait]
14impl pb::custody_service_server::CustodyService for NullKms {
15    async fn authorize(
16        &self,
17        _request: Request<pb::AuthorizeRequest>,
18    ) -> Result<Response<pb::AuthorizeResponse>, Status> {
19        Err(tonic::Status::failed_precondition(
20            "Got authorization request in view-only mode to null KMS.",
21        ))
22    }
23
24    async fn authorize_validator_definition(
25        &self,
26        _request: Request<pb::AuthorizeValidatorDefinitionRequest>,
27    ) -> Result<Response<pb::AuthorizeValidatorDefinitionResponse>, Status> {
28        Err(tonic::Status::failed_precondition(
29            "Got authorization request in view-only mode to null KMS.",
30        ))
31    }
32
33    async fn authorize_validator_vote(
34        &self,
35        _request: Request<pb::AuthorizeValidatorVoteRequest>,
36    ) -> Result<Response<pb::AuthorizeValidatorVoteResponse>, Status> {
37        Err(tonic::Status::failed_precondition(
38            "Got authorization request in view-only mode to null KMS.",
39        ))
40    }
41
42    async fn export_full_viewing_key(
43        &self,
44        _request: Request<pb::ExportFullViewingKeyRequest>,
45    ) -> Result<Response<pb::ExportFullViewingKeyResponse>, Status> {
46        Err(tonic::Status::failed_precondition(
47            "Got authorization request in view-only mode to null KMS.",
48        ))
49    }
50
51    async fn confirm_address(
52        &self,
53        _request: Request<pb::ConfirmAddressRequest>,
54    ) -> Result<Response<pb::ConfirmAddressResponse>, Status> {
55        Err(tonic::Status::failed_precondition(
56            "Got authorization request in view-only mode to null KMS.",
57        ))
58    }
59}