chore: checkpoint before Python removal

This commit is contained in:
2026-03-26 22:33:59 +00:00
parent 683cec9307
commit e568ddf82a
29972 changed files with 11269302 additions and 2 deletions

View File

@@ -0,0 +1,24 @@
use security_framework::secure_transport::ClientBuilder;
use std::io::{Read, Write};
use std::net::TcpStream;
fn main() {
let stream = TcpStream::connect("google.com:443").unwrap();
let mut stream = ClientBuilder::new()
.handshake("google.com", stream)
.unwrap();
println!(
"negotiated chipher: {:?}",
stream.context().negotiated_cipher().unwrap()
);
println!(
"negotiated version: {:?}",
stream.context().negotiated_protocol_version().unwrap()
);
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").unwrap();
stream.flush().unwrap();
let mut buf = vec![];
stream.read_to_end(&mut buf).unwrap();
println!("{}", String::from_utf8_lossy(&buf));
}

View File

@@ -0,0 +1,35 @@
#[cfg(target_os = "macos")]
use security_framework::os::macos::keychain::SecKeychain;
#[cfg(target_os = "macos")]
use security_framework::os::macos::passwords::{SecAuthenticationType, SecProtocolType};
fn main() {
#[cfg(target_os = "macos")] {
let hostname = "example.com";
let username = "rusty";
let res = SecKeychain::default().unwrap().find_internet_password(
hostname,
None,
username,
"",
None,
SecProtocolType::Any,
SecAuthenticationType::Any,
);
match res {
Ok((password, _)) => {
println!(
"Password for {}@{} is {} bytes long",
username,
hostname,
password.len()
);
}
Err(err) if err.code() == -128 => {
eprintln!("Account was found in the Keychain, but user denied access");
}
Err(err) => {
eprintln!("Password not found. Open Keychain Access.app and add internet password for '{username}' at 'https://{hostname}': {err:?}");
}
}
}}

View File

@@ -0,0 +1,32 @@
#[cfg(target_os = "macos")]
use security_framework::os::macos::keychain::SecKeychain;
#[cfg(target_os = "macos")]
use security_framework::os::macos::passwords::{SecAuthenticationType, SecProtocolType};
fn main() {
#[cfg(target_os = "macos")] {
let hostname = "example.com";
let username = "rusty";
let password = b"oxidize";
let res = SecKeychain::default().unwrap().set_internet_password(
hostname,
None,
username,
"",
None,
SecProtocolType::HTTPS,
SecAuthenticationType::HTMLForm,
password,
);
match res {
Ok(()) => {
println!(
"Password set for {username}@{hostname}. You can read it using find_internet_password example"
);
}
Err(err) => {
eprintln!("Could not set password: {err:?}");
}
}
}}