mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-29 00:49:42 +08:00 
			
		
		
		
	 6750be5aee
			
		
	
	6750be5aee
	
	
	
		
			
			Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com> Co-authored-by: kiran.kummari <kiran.kummari@juspay.in>
Masking
Personal Identifiable Information protection.
Wrapper types and traits for secret management which help ensure they aren't
accidentally copied, logged, or otherwise exposed (as much as possible), and
also ensure secrets are securely wiped from memory when dropped.
Secret-keeping library inspired by secrecy.
This solution has such advantages over alternatives:
- alternatives have not implemented several traits from the box which are needed
- alternatives do not have WeakSecret and Secret differentiation
- alternatives do not support masking strategies
- alternatives had several minor problems
How to use
To convert non-secret variable into secret use new(). Sample:
expiry_year: ccard.map(|x| Secret::new(x.card_exp_year.to_string())),
// output: "expiry_year: *** alloc::string::String ***"
To get value from secret use expose(). Sample:
last4_digits: Some(card_number.expose())
Most fields are under Option. To simplify dealing with Option, use expose_option(). Sample:
    card_info.push_str(
        &card_detail
            .card_holder_name
            .expose_option()
            .unwrap_or_default(),
    );