pub struct HiddenServiceCredential {
pub service_id: String,
pub private_key: String,
pub key_type: String,
pub client_name: Option<String>,
pub flags: Vec<String>,
}Expand description
Client authentication credential for a v3 hidden service.
Contains the cryptographic key and metadata needed to authenticate to a hidden service that requires client authentication.
§Example
use stem_rs::response::{ControlMessage, OnionClientAuthViewResponse};
let msg = ControlMessage::from_str(
"250-ONION_CLIENT_AUTH_VIEW\r\n\
250-CLIENT myservice x25519:secretkey ClientName=alice Flags=Permanent\r\n\
250 OK\r\n",
None,
false
).unwrap();
let response = OnionClientAuthViewResponse::from_message(&msg).unwrap();
let cred = response.credentials.get("myservice").unwrap();
assert_eq!(cred.key_type, "x25519");
assert_eq!(cred.client_name, Some("alice".to_string()));
assert!(cred.flags.contains(&"Permanent".to_string()));§Security
The private_key field contains sensitive cryptographic material.
Handle it securely and avoid logging or displaying it.
Fields§
§service_id: StringThe hidden service address (without .onion suffix).
For v3 services, this is a 56-character base32 string.
private_key: StringThe base64-encoded private key for authentication.
This is the client’s private key used to prove identity to the hidden service. Keep this value secure.
key_type: StringThe cryptographic algorithm used for the key.
Currently, v3 hidden services use x25519 for client authentication.
client_name: Option<String>Optional human-readable name for this credential.
Useful for identifying which credential is which when multiple credentials are stored.
flags: Vec<String>Flags associated with this credential.
Common flags:
Permanent: Credential persists across Tor restartsGenerated: Credential was generated by Tor (not imported)
Trait Implementations§
Source§impl Clone for HiddenServiceCredential
impl Clone for HiddenServiceCredential
Source§fn clone(&self) -> HiddenServiceCredential
fn clone(&self) -> HiddenServiceCredential
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more