mirror of
https://github.com/LordGrimmauld/yubi-oath-rs.git
synced 2025-03-03 21:34:40 +01:00
hasher cleanup
This commit is contained in:
parent
01485a3168
commit
565e924baf
1 changed files with 16 additions and 17 deletions
|
@ -3,12 +3,12 @@ extern crate byteorder;
|
|||
extern crate pcsc;
|
||||
use base32::Alphabet;
|
||||
use iso7816_tlv::simple::{Tag as TlvTag, Tlv};
|
||||
use once_cell::unsync::OnceCell;
|
||||
use openssl::hash::MessageDigest;
|
||||
use sha1::Sha1;
|
||||
|
||||
use ouroboros::self_referencing;
|
||||
use regex::Regex;
|
||||
use std::collections::HashMap;
|
||||
use std::default;
|
||||
use std::iter::zip;
|
||||
use std::str::{self};
|
||||
|
||||
|
@ -18,15 +18,12 @@ use base64::{engine::general_purpose, Engine as _};
|
|||
use hmac::{Hmac, Mac};
|
||||
use openssl::pkcs5::pbkdf2_hmac;
|
||||
use pcsc::{Card, Transaction};
|
||||
use sha1::Sha1;
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
use std::cmp::Ordering;
|
||||
use std::hash::{Hash, Hasher};
|
||||
|
||||
use byteorder::{BigEndian, ByteOrder, ReadBytesExt, WriteBytesExt};
|
||||
use byteorder::{BigEndian, ByteOrder, WriteBytesExt};
|
||||
use std::ffi::CString;
|
||||
use std::io::{Cursor, Read};
|
||||
use std::time::SystemTime;
|
||||
|
||||
pub const INS_SELECT: u8 = 0xa4;
|
||||
|
@ -98,6 +95,16 @@ pub enum HashAlgo {
|
|||
Sha512 = 0x03,
|
||||
}
|
||||
|
||||
impl HashAlgo {
|
||||
pub fn getMessageDigest(&self) -> openssl::hash::MessageDigest {
|
||||
match self {
|
||||
HashAlgo::Sha1 => MessageDigest::sha1(),
|
||||
HashAlgo::Sha256 => MessageDigest::sha256(),
|
||||
HashAlgo::Sha512 => MessageDigest::sha512(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Copy, Clone, Eq)]
|
||||
#[repr(u8)]
|
||||
pub enum OathType {
|
||||
|
@ -280,9 +287,9 @@ fn _parse_cred_id(cred_id: &[u8], oath_type: OathType) -> (Option<String>, Strin
|
|||
|
||||
fn _get_device_id(salt: Vec<u8>) -> String {
|
||||
// Create SHA-256 hash of the salt
|
||||
let mut hasher = Sha256::new();
|
||||
hasher.update(salt);
|
||||
let result = hasher.finalize();
|
||||
let mut hasher = openssl::hash::Hasher::new(MessageDigest::sha256()).unwrap();
|
||||
hasher.update(salt.leak()).unwrap();
|
||||
let result = hasher.finish().unwrap();
|
||||
|
||||
// Get the first 16 bytes of the hash
|
||||
let hash_16_bytes = &result[..16];
|
||||
|
@ -309,14 +316,6 @@ fn _derive_key(salt: &[u8], passphrase: &str) -> Vec<u8> {
|
|||
key
|
||||
}
|
||||
|
||||
fn get_message_digest(algo: HashAlgo) -> MessageDigest {
|
||||
match algo {
|
||||
HashAlgo::Sha1 => MessageDigest::sha1(),
|
||||
HashAlgo::Sha256 => MessageDigest::sha256(),
|
||||
HashAlgo::Sha512 => MessageDigest::sha512(),
|
||||
}
|
||||
}
|
||||
|
||||
fn _hmac_shorten_key(key: &[u8], algo: MessageDigest) -> Vec<u8> {
|
||||
if key.len() > algo.block_size() {
|
||||
let mut hasher = openssl::hash::Hasher::new(algo).unwrap();
|
||||
|
|
Loading…
Add table
Reference in a new issue