feat: notworking
This commit is contained in:
@@ -8,9 +8,12 @@ use structopt::StructOpt;
|
||||
|
||||
mod app;
|
||||
mod service;
|
||||
mod main2;
|
||||
|
||||
pub fn main() {
|
||||
init_logger();
|
||||
main2::test_main();
|
||||
panic!("END");
|
||||
|
||||
let opt = Some(Opt::from_args());
|
||||
let mut my_server = Server::new(opt).unwrap();
|
||||
|
||||
64
src/main2.rs
Normal file
64
src/main2.rs
Normal file
@@ -0,0 +1,64 @@
|
||||
use std::fs;
|
||||
|
||||
use rcgen::{BasicConstraints, Certificate, CertificateParams, DnType, DnValue::PrintableString, ExtendedKeyUsagePurpose, IsCa, KeyPair, KeyUsagePurpose};
|
||||
use time::{Duration, OffsetDateTime};
|
||||
|
||||
/// Example demonstrating signing end-endity certificate with ca
|
||||
pub fn test_main() {
|
||||
let ca_pem = fs::read_to_string("__ignore_intermediate_cert.pem").unwrap();
|
||||
let key_pem = fs::read_to_string("__ignore_intermediate_pri_key.pem").unwrap();
|
||||
let k = KeyPair::from_pem(&key_pem).unwrap();
|
||||
|
||||
// let k = KeyPair::from_pem_and_sign_algo(&key_pem, &PKCS_ECDSA_P384_SHA384).unwrap();
|
||||
|
||||
let certificate_params = CertificateParams::from_ca_cert_pem(&ca_pem, k).unwrap();
|
||||
let ca = Certificate::from_params(certificate_params).unwrap();
|
||||
|
||||
// let ca = new_ca();
|
||||
let end_entity = new_end_entity();
|
||||
|
||||
let end_entity_pem = end_entity.serialize_pem_with_signer(&ca).unwrap();
|
||||
println!("directly signed end-entity certificate: {end_entity_pem}");
|
||||
let end_entity_key_pem = end_entity.serialize_private_key_pem();
|
||||
println!("directly signed end-entity key: {end_entity_key_pem}");
|
||||
|
||||
let ca_cert_pem = ca.serialize_pem().unwrap();
|
||||
println!("ca certificate: {ca_cert_pem}", );
|
||||
}
|
||||
|
||||
fn new_ca() -> Certificate {
|
||||
let mut params = CertificateParams::new(Vec::default());
|
||||
let (start, end) = validity_period();
|
||||
params.is_ca = IsCa::Ca(BasicConstraints::Unconstrained);
|
||||
params.distinguished_name.get(&DnType::CommonName);
|
||||
params.distinguished_name.push(DnType::CommonName, "Hatter Test CA");
|
||||
params.distinguished_name.push(DnType::CountryName, PrintableString("CN".into()));
|
||||
params.distinguished_name.push(DnType::OrganizationName, "Hatter Ink");
|
||||
params.key_usages.push(KeyUsagePurpose::DigitalSignature);
|
||||
params.key_usages.push(KeyUsagePurpose::KeyCertSign);
|
||||
params.key_usages.push(KeyUsagePurpose::CrlSign);
|
||||
params.not_before = start;
|
||||
params.not_after = end;
|
||||
Certificate::from_params(params).unwrap()
|
||||
}
|
||||
|
||||
fn new_end_entity() -> Certificate {
|
||||
let name = "demo.example.com";
|
||||
let mut params = CertificateParams::new(vec![name.into()]);
|
||||
let (start, end) = validity_period();
|
||||
params.distinguished_name.push(DnType::CommonName, name);
|
||||
params.use_authority_key_identifier_extension = true;
|
||||
params.key_usages.push(KeyUsagePurpose::DigitalSignature);
|
||||
params.is_ca = IsCa::NoCa;
|
||||
params.extended_key_usages.push(ExtendedKeyUsagePurpose::ServerAuth);
|
||||
params.extended_key_usages.push(ExtendedKeyUsagePurpose::ClientAuth);
|
||||
params.not_before = start;
|
||||
params.not_after = end;
|
||||
Certificate::from_params(params).unwrap()
|
||||
}
|
||||
|
||||
fn validity_period() -> (OffsetDateTime, OffsetDateTime) {
|
||||
let start = OffsetDateTime::now_utc().checked_sub(Duration::hours(1)).unwrap();
|
||||
let end = OffsetDateTime::now_utc().checked_add(Duration::days(90)).unwrap();
|
||||
(start, end)
|
||||
}
|
||||
Reference in New Issue
Block a user