Crates.io | crypt3-sys |
lib.rs | crypt3-sys |
version | 0.1.0 |
source | src |
created_at | 2023-02-13 01:04:28.897657 |
updated_at | 2023-02-13 01:04:28.897657 |
description | musl crypt3 |
homepage | https://crates.io/crates/crypt3-sys |
repository | https://github.com/pldubouilh/crypt3-sys |
max_upload_size | |
id | 783604 |
size | 106,291 |
statically linkable bindings against locally pulled crypt(3) from musl.
use std::ffi::{CString, CStr};
fn main() {
let password = "mypassword";
let sha256_setting = "$5$";
let salt = "rDxsrps6AeTwJLRK";
let settings = format!("{sha256_setting}{salt}");
let mut output = vec![0_i8; 256];
let ret_str = unsafe {
let csetting = CString::new(settings).unwrap();
let cpassword = CString::new(password).unwrap();
let _ret = crypt3_sys::crypt_r(cpassword.as_ptr(), csetting.as_ptr(), output.as_mut_ptr());
let ret_cstr = CStr::from_ptr(output.as_ptr());
ret_cstr.to_str().unwrap()
};
// mkpasswd -m sha256crypt "mypassword"
// $5$rDxsrps6AeTwJLRK$CHafsXkpg6bi5Z.kdTYhlWzmhqe9Q.RRPm0LWi/bckC
let ret_assumed = format!(
"{}{}${}",
sha256_setting, salt, "CHafsXkpg6bi5Z.kdTYhlWzmhqe9Q.RRPm0LWi/bckC"
);
assert!(ret_str == ret_assumed);
println!("ret_str {ret_str:?}");
}