[kwm] fix: init QMCv2 with ekey

This commit is contained in:
鲁树人 2024-09-15 16:20:39 +01:00
parent dad2d9c841
commit 785b2f6f0d

View File

@ -112,7 +112,7 @@ impl Header {
let cipher = match self.version { let cipher = match self.version {
1 => Cipher::V1(CipherV1::new(self.resource_id)), 1 => Cipher::V1(CipherV1::new(self.resource_id)),
2 => match ekey { 2 => match ekey {
Some(ekey) => Cipher::V2(CipherV2::new(ekey)?), Some(ekey) => Cipher::V2(CipherV2::new_from_ekey(ekey)?),
None => Err(KuwoCryptoError::V2EKeyRequired)?, None => Err(KuwoCryptoError::V2EKeyRequired)?,
}, },
version => Err(KuwoCryptoError::UnsupportedVersion(version as usize))?, version => Err(KuwoCryptoError::UnsupportedVersion(version as usize))?,
@ -134,9 +134,9 @@ impl Header {
pub struct CipherBoDian(QMCv2Cipher); pub struct CipherBoDian(QMCv2Cipher);
impl CipherBoDian { impl CipherBoDian {
pub fn new(ekey: &str) -> Result<Self> { pub fn new<T: AsRef<[u8]>>(ekey: T) -> Result<Self> {
let ekey = des::decode_ekey(&ekey, &SECRET_KEY)?; let ekey = des::decode_ekey(&ekey, &SECRET_KEY)?;
let cipher = CipherV2::new(ekey)?; let cipher = CipherV2::new_from_ekey(ekey.as_str())?;
Ok(Self(cipher)) Ok(Self(cipher))
} }