зеркало из https://github.com/mozilla/rust-ece.git
f Cleanup
* address r's * address clippy suggestions
This commit is contained in:
Родитель
8b6243e9f8
Коммит
6da80cbced
|
@ -9,15 +9,17 @@ use error::*;
|
||||||
|
|
||||||
const ECE_AES128GCM_MIN_RS: u32 = 18;
|
const ECE_AES128GCM_MIN_RS: u32 = 18;
|
||||||
const ECE_AES128GCM_HEADER_LENGTH: usize = 21;
|
const ECE_AES128GCM_HEADER_LENGTH: usize = 21;
|
||||||
//const ECE_AES128GCM_MAX_KEY_ID_LENGTH: usize = 255;
|
// The max AES128GCM Key ID Length is 255 octets. We use far less of that because we use
|
||||||
|
// the "key_id" to store the exchanged public key since we don't cache the key_ids.
|
||||||
|
// Code fails if the key_id is not a public key length field.
|
||||||
const ECE_AES128GCM_PAD_SIZE: usize = 1;
|
const ECE_AES128GCM_PAD_SIZE: usize = 1;
|
||||||
|
|
||||||
const ECE_WEBPUSH_AES128GCM_IKM_INFO_PREFIX: &'static str = "WebPush: info\0";
|
const ECE_WEBPUSH_AES128GCM_IKM_INFO_PREFIX: &str = "WebPush: info\0";
|
||||||
const ECE_WEBPUSH_AES128GCM_IKM_INFO_LENGTH: usize = 144; // 14 (prefix len) + 65 (pub key len) * 2;
|
const ECE_WEBPUSH_AES128GCM_IKM_INFO_LENGTH: usize = 144; // 14 (prefix len) + 65 (pub key len) * 2;
|
||||||
|
|
||||||
const ECE_WEBPUSH_IKM_LENGTH: usize = 32;
|
const ECE_WEBPUSH_IKM_LENGTH: usize = 32;
|
||||||
const ECE_AES128GCM_KEY_INFO: &'static str = "Content-Encoding: aes128gcm\0";
|
const ECE_AES128GCM_KEY_INFO: &str = "Content-Encoding: aes128gcm\0";
|
||||||
const ECE_AES128GCM_NONCE_INFO: &'static str = "Content-Encoding: nonce\0";
|
const ECE_AES128GCM_NONCE_INFO: &str = "Content-Encoding: nonce\0";
|
||||||
|
|
||||||
// TODO: When done, remove the aes128gcm prefixes and the EC_ ones.
|
// TODO: When done, remove the aes128gcm prefixes and the EC_ ones.
|
||||||
// As for now it makes it easier to Ctrl + F into ecec :)
|
// As for now it makes it easier to Ctrl + F into ecec :)
|
||||||
|
|
|
@ -21,10 +21,9 @@ use error::{ErrorKind, Result};
|
||||||
|
|
||||||
const ECE_AESGCM_PAD_SIZE: usize = 2;
|
const ECE_AESGCM_PAD_SIZE: usize = 2;
|
||||||
|
|
||||||
const ECE_WEBPUSH_AESGCM_KEYPAIR_LENGTH: usize = 134; // (2 + 65) * 2
|
const ECE_WEBPUSH_AESGCM_KEYPAIR_LENGTH: usize = 134; // (2 + Raw Key Length) * 2
|
||||||
const ECE_WEBPUSH_AESGCM_AUTHINFO: &'static str = "Content-Encoding: auth\0";
|
const ECE_WEBPUSH_AESGCM_AUTHINFO: &str = "Content-Encoding: auth\0";
|
||||||
|
|
||||||
// const ECE_WEBPUSH_DEFAULT_RS: u32 = 4096;
|
|
||||||
// a DER prefixed key is "\04" + ECE_WEBPUSH_RAW_KEY_LENGTH
|
// a DER prefixed key is "\04" + ECE_WEBPUSH_RAW_KEY_LENGTH
|
||||||
const ECE_WEBPUSH_RAW_KEY_LENGTH: usize = 65;
|
const ECE_WEBPUSH_RAW_KEY_LENGTH: usize = 65;
|
||||||
const ECE_WEBPUSH_IKM_LENGTH: usize = 32;
|
const ECE_WEBPUSH_IKM_LENGTH: usize = 32;
|
||||||
|
@ -52,8 +51,8 @@ impl AesGcmEncryptedBlock {
|
||||||
ciphertext: Vec<u8>,
|
ciphertext: Vec<u8>,
|
||||||
) -> Result<AesGcmEncryptedBlock> {
|
) -> Result<AesGcmEncryptedBlock> {
|
||||||
Ok(AesGcmEncryptedBlock {
|
Ok(AesGcmEncryptedBlock {
|
||||||
dh: dh.clone(),
|
dh: dh.to_owned(),
|
||||||
salt: salt.clone(),
|
salt: salt.to_owned(),
|
||||||
rs: Self::aesgcm_rs(rs),
|
rs: Self::aesgcm_rs(rs),
|
||||||
ciphertext,
|
ciphertext,
|
||||||
})
|
})
|
||||||
|
@ -147,7 +146,7 @@ where
|
||||||
plaintext,
|
plaintext,
|
||||||
)?;
|
)?;
|
||||||
Ok(AesGcmEncryptedBlock {
|
Ok(AesGcmEncryptedBlock {
|
||||||
salt: salt,
|
salt,
|
||||||
dh: raw_local_pub_key,
|
dh: raw_local_pub_key,
|
||||||
rs: params.rs,
|
rs: params.rs,
|
||||||
ciphertext,
|
ciphertext,
|
||||||
|
|
|
@ -74,7 +74,7 @@ pub trait EceWebPush {
|
||||||
if salt.len() != ECE_SALT_LENGTH {
|
if salt.len() != ECE_SALT_LENGTH {
|
||||||
return Err(ErrorKind::InvalidSalt.into());
|
return Err(ErrorKind::InvalidSalt.into());
|
||||||
}
|
}
|
||||||
if plaintext.len() == 0 {
|
if plaintext.is_empty() {
|
||||||
return Err(ErrorKind::ZeroPlaintext.into());
|
return Err(ErrorKind::ZeroPlaintext.into());
|
||||||
}
|
}
|
||||||
let (key, nonce) = Self::derive_key_and_nonce(
|
let (key, nonce) = Self::derive_key_and_nonce(
|
||||||
|
@ -169,7 +169,7 @@ pub trait EceWebPush {
|
||||||
if salt.len() != ECE_SALT_LENGTH {
|
if salt.len() != ECE_SALT_LENGTH {
|
||||||
return Err(ErrorKind::InvalidSalt.into());
|
return Err(ErrorKind::InvalidSalt.into());
|
||||||
}
|
}
|
||||||
if ciphertext.len() == 0 {
|
if ciphertext.is_empty() {
|
||||||
return Err(ErrorKind::ZeroCiphertext.into());
|
return Err(ErrorKind::ZeroCiphertext.into());
|
||||||
}
|
}
|
||||||
if Self::needs_trailer(rs, ciphertext.len()) {
|
if Self::needs_trailer(rs, ciphertext.len()) {
|
||||||
|
@ -235,11 +235,11 @@ pub fn ece_min_block_pad_length(pad_len: usize, max_block_len: usize) -> usize {
|
||||||
// the padding first.
|
// the padding first.
|
||||||
block_pad_len += 1;
|
block_pad_len += 1;
|
||||||
}
|
}
|
||||||
return if block_pad_len > pad_len {
|
if block_pad_len > pad_len {
|
||||||
pad_len
|
pad_len
|
||||||
} else {
|
} else {
|
||||||
block_pad_len
|
block_pad_len
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generates a 96-bit IV, 48 bits of which are populated.
|
/// Generates a 96-bit IV, 48 bits of which are populated.
|
||||||
|
|
|
@ -6,7 +6,6 @@ extern crate base64;
|
||||||
extern crate byteorder;
|
extern crate byteorder;
|
||||||
extern crate ece_crypto;
|
extern crate ece_crypto;
|
||||||
extern crate failure;
|
extern crate failure;
|
||||||
// #[macro_use]
|
|
||||||
extern crate failure_derive;
|
extern crate failure_derive;
|
||||||
|
|
||||||
mod aes128gcm;
|
mod aes128gcm;
|
||||||
|
@ -30,6 +29,7 @@ pub type Aes128GcmEceWebPush = aes128gcm::Aes128GcmEceWebPush<
|
||||||
ece_crypto_openssl::OpenSSLCrypto,
|
ece_crypto_openssl::OpenSSLCrypto,
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
#[cfg(feature = "openssl")]
|
||||||
pub type AesGcmEceWebPush = aesgcm::AesGcmEceWebPush<
|
pub type AesGcmEceWebPush = aesgcm::AesGcmEceWebPush<
|
||||||
OpenSSLLocalKeyPair,
|
OpenSSLLocalKeyPair,
|
||||||
OpenSSLRemotePublicKey,
|
OpenSSLRemotePublicKey,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче