1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//! This module defines the [`PlainPassword`] structure for secure handling
//! of plaintext passwords with automatic memory clearing.
//!
//! # Overview
//!
//! The [`PlainPassword`] type is a temporary container for plaintext passwords.
//! It ensures that sensitive data is securely zeroed from memory when dropped,
//! using the [`Zeroize`] and [`ZeroizeOnDrop`] traits. This is useful for minimizing
//! the risk of leaking sensitive password data in memory.
//!
//! ## Example
//!
//! ```rust
//! use authen::core::credentials::plain_password::PlainPassword;
//!
//! let password = PlainPassword::new("mysecret".to_string());
//! assert_eq!(password.as_str(), "mysecret");
//! // password will be zeroed from memory when dropped
//! ```
//!
//! # Security
//!
//! Always use this type for handling plaintext passwords in memory, and avoid
//! storing passwords as plain `String` or `&str` types.
use ;
/// A temporary container for plaintext passwords.
///
/// This structure wraps a `String` containing a plaintext password and ensures
/// that the password is securely zeroed from memory when dropped.
///
/// # Security
///
/// Use this type to minimize the risk of leaking sensitive password data in memory.
///
/// Implements [`Zeroize`] and [`ZeroizeOnDrop`] for automatic memory clearing.
;