Improve QoC

Signed-off-by: DecDuck <declanahofmeyr@gmail.com>
This commit is contained in:
alessiodam
2024-10-31 13:54:21 +01:00
committed by DecDuck
parent 83ce8356a3
commit 119f42e2ba
5 changed files with 27 additions and 28 deletions

3
.gitignore vendored
View File

@ -201,3 +201,6 @@ index.js
index.d.ts index.d.ts
test.mjs test.mjs
manifest.json manifest.json
# JetBrains
.idea

View File

@ -1,8 +1,8 @@
use std::{fs::{self, metadata}, path::{Path, PathBuf}}; use std::{fs::{self, metadata}, path::{Path, PathBuf}};
fn _list_files(vec: &mut Vec<PathBuf>, path: &Path) { fn _list_files(vec: &mut Vec<PathBuf>, path: &Path) {
if metadata(&path).unwrap().is_dir() { if metadata(path).unwrap().is_dir() {
let paths = fs::read_dir(&path).unwrap(); let paths = fs::read_dir(path).unwrap();
for path_result in paths { for path_result in paths {
let full_path = path_result.unwrap().path(); let full_path = path_result.unwrap().path();
if metadata(&full_path).unwrap().is_dir() { if metadata(&full_path).unwrap().is_dir() {
@ -16,6 +16,6 @@ fn _list_files(vec: &mut Vec<PathBuf>, path: &Path) {
pub fn list_files(path: &Path) -> Vec<PathBuf> { pub fn list_files(path: &Path) -> Vec<PathBuf> {
let mut vec = Vec::new(); let mut vec = Vec::new();
_list_files(&mut vec, &path); _list_files(&mut vec, path);
return vec; vec
} }

View File

@ -6,4 +6,3 @@ pub mod ssl;
#[macro_use] #[macro_use]
extern crate napi_derive; extern crate napi_derive;

View File

@ -1,11 +1,10 @@
use std::{ use std::{
collections::HashMap, fs::File, hash::Hasher, io::{BufRead, BufReader}, path::Path, thread collections::HashMap, fs::File, io::{BufRead, BufReader}, path::Path, thread
}; };
#[cfg(unix)] #[cfg(unix)]
use std::os::unix::fs::PermissionsExt; use std::os::unix::fs::PermissionsExt;
use gxhash::{gxhash128, GxHasher};
use napi::{ use napi::{
threadsafe_function::{ErrorStrategy, ThreadsafeFunction, ThreadsafeFunctionCallMode}, threadsafe_function::{ErrorStrategy, ThreadsafeFunction, ThreadsafeFunctionCallMode},
Error, JsFunction, Error, JsFunction,
@ -85,7 +84,7 @@ pub fn generate_manifest(
let mut reader = BufReader::with_capacity(CHUNK_SIZE, file); let mut reader = BufReader::with_capacity(CHUNK_SIZE, file);
let mut chunk_data = ChunkData { let mut chunk_data = ChunkData {
permissions: permissions, permissions,
ids: Vec::new(), ids: Vec::new(),
checksums: Vec::new(), checksums: Vec::new(),
lengths: Vec::new(), lengths: Vec::new(),
@ -133,5 +132,5 @@ pub fn generate_manifest(
); );
}); });
return Ok(()); Ok(())
} }

View File

@ -7,7 +7,6 @@ use openssl::{
nid::Nid, nid::Nid,
pkey::PKey, pkey::PKey,
sign::{Signer, Verifier}, sign::{Signer, Verifier},
ssl::{SslConnector, SslContext, SslMethod},
stack::Stack, stack::Stack,
x509::{ x509::{
extension::{AuthorityKeyIdentifier, BasicConstraints, KeyUsage, SubjectKeyIdentifier}, extension::{AuthorityKeyIdentifier, BasicConstraints, KeyUsage, SubjectKeyIdentifier},
@ -15,6 +14,13 @@ use openssl::{
X509Builder, X509NameBuilder, X509ReqBuilder, X509StoreContext, X509, X509Builder, X509NameBuilder, X509ReqBuilder, X509StoreContext, X509,
}, },
}; };
use openssl::asn1::Asn1Integer;
fn create_serial_number() -> Asn1Integer {
let mut serial = BigNum::new().unwrap();
serial.rand(159, MsbOption::MAYBE_ZERO, false).unwrap();
serial.to_asn1_integer().unwrap()
}
#[napi] #[napi]
pub fn generate_root_ca() -> Result<Vec<String>, Error> { pub fn generate_root_ca() -> Result<Vec<String>, Error> {
@ -25,11 +31,7 @@ pub fn generate_root_ca() -> Result<Vec<String>, Error> {
let mut x509_builder = X509Builder::new().unwrap(); let mut x509_builder = X509Builder::new().unwrap();
x509_builder.set_version(2).unwrap(); x509_builder.set_version(2).unwrap();
let serial_number = { let serial_number = create_serial_number();
let mut serial = BigNum::new().unwrap();
serial.rand(159, MsbOption::MAYBE_ZERO, false).unwrap();
serial.to_asn1_integer().unwrap()
};
x509_builder.set_serial_number(&serial_number).unwrap(); x509_builder.set_serial_number(&serial_number).unwrap();
let mut x509_name = X509NameBuilder::new().unwrap(); let mut x509_name = X509NameBuilder::new().unwrap();
@ -72,10 +74,10 @@ pub fn generate_root_ca() -> Result<Vec<String>, Error> {
let x509 = x509_builder.build(); let x509 = x509_builder.build();
return Ok(vec![ Ok(vec![
String::from_utf8(x509.to_pem().unwrap()).unwrap(), String::from_utf8(x509.to_pem().unwrap()).unwrap(),
String::from_utf8(key_pair.private_key_to_pem_pkcs8().unwrap()).unwrap(), String::from_utf8(key_pair.private_key_to_pem_pkcs8().unwrap()).unwrap(),
]); ])
} }
#[napi] #[napi]
@ -121,11 +123,7 @@ pub fn generate_client_certificate(
x509_builder.set_version(2).unwrap(); x509_builder.set_version(2).unwrap();
x509_builder.set_pubkey(&key_pair).unwrap(); x509_builder.set_pubkey(&key_pair).unwrap();
let serial_number = { let serial_number = create_serial_number();
let mut serial = BigNum::new().unwrap();
serial.rand(159, MsbOption::MAYBE_ZERO, false).unwrap();
serial.to_asn1_integer().unwrap()
};
x509_builder.set_serial_number(&serial_number).unwrap(); x509_builder.set_serial_number(&serial_number).unwrap();
x509_builder.set_subject_name(req.subject_name()).unwrap(); x509_builder.set_subject_name(req.subject_name()).unwrap();
@ -173,10 +171,10 @@ pub fn generate_client_certificate(
let x509 = x509_builder.build(); let x509 = x509_builder.build();
return Ok(vec![ Ok(vec![
String::from_utf8(x509.to_pem().unwrap()).unwrap(), String::from_utf8(x509.to_pem().unwrap()).unwrap(),
String::from_utf8(key_pair.private_key_to_pem_pkcs8().unwrap()).unwrap(), String::from_utf8(key_pair.private_key_to_pem_pkcs8().unwrap()).unwrap(),
]); ])
} }
#[napi] #[napi]
@ -196,7 +194,7 @@ pub fn verify_client_certificate(client_cert: String, root_ca: String) -> Result
.init(&store, &client_cert, &chain, |c| c.verify_cert()) .init(&store, &client_cert, &chain, |c| c.verify_cert())
.unwrap(); .unwrap();
return Ok(result); Ok(result)
} }
#[napi] #[napi]
@ -210,7 +208,7 @@ pub fn sign_nonce(private_key: String, nonce: String) -> Result<String, Error> {
let hex_signature = hex::encode(signature); let hex_signature = hex::encode(signature);
return Ok(hex_signature); Ok(hex_signature)
} }
#[napi] #[napi]
@ -229,5 +227,5 @@ pub fn verify_nonce(public_cert: String, nonce: String, signature: String) -> Re
let result = verifier.verify(&signature).unwrap(); let result = verifier.verify(&signature).unwrap();
return Ok(result); Ok(result)
} }