crypto: Move the base64 helpers into a common module.
parent
fd705b7d5e
commit
b5c61af472
|
@ -33,7 +33,7 @@ use aes_ctr::{
|
||||||
use base64::DecodeError;
|
use base64::DecodeError;
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
|
|
||||||
use super::{decode, decode_url_safe, encode, encode_url_safe};
|
use crate::utilities::{decode, decode_url_safe, encode, encode_url_safe};
|
||||||
|
|
||||||
const IV_SIZE: usize = 16;
|
const IV_SIZE: usize = 16;
|
||||||
const KEY_SIZE: usize = 32;
|
const KEY_SIZE: usize = 32;
|
||||||
|
|
|
@ -27,8 +27,10 @@ use hmac::{Hmac, Mac, NewMac};
|
||||||
use pbkdf2::pbkdf2;
|
use pbkdf2::pbkdf2;
|
||||||
use sha2::{Sha256, Sha512};
|
use sha2::{Sha256, Sha512};
|
||||||
|
|
||||||
use super::{decode, encode, DecodeError};
|
use crate::{
|
||||||
use crate::olm::ExportedRoomKey;
|
olm::ExportedRoomKey,
|
||||||
|
utilities::{decode, encode, DecodeError},
|
||||||
|
};
|
||||||
|
|
||||||
const SALT_SIZE: usize = 16;
|
const SALT_SIZE: usize = 16;
|
||||||
const IV_SIZE: usize = 16;
|
const IV_SIZE: usize = 16;
|
||||||
|
|
|
@ -3,21 +3,3 @@ mod key_export;
|
||||||
|
|
||||||
pub use attachments::{AttachmentDecryptor, AttachmentEncryptor, DecryptorError};
|
pub use attachments::{AttachmentDecryptor, AttachmentEncryptor, DecryptorError};
|
||||||
pub use key_export::{decrypt_key_export, encrypt_key_export};
|
pub use key_export::{decrypt_key_export, encrypt_key_export};
|
||||||
|
|
||||||
use base64::{decode_config, encode_config, DecodeError, STANDARD_NO_PAD, URL_SAFE_NO_PAD};
|
|
||||||
|
|
||||||
fn decode(input: impl AsRef<[u8]>) -> Result<Vec<u8>, DecodeError> {
|
|
||||||
decode_config(input, STANDARD_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn decode_url_safe(input: impl AsRef<[u8]>) -> Result<Vec<u8>, DecodeError> {
|
|
||||||
decode_config(input, URL_SAFE_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn encode(input: impl AsRef<[u8]>) -> String {
|
|
||||||
encode_config(input, STANDARD_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn encode_url_safe(input: impl AsRef<[u8]>) -> String {
|
|
||||||
encode_config(input, URL_SAFE_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ pub mod olm;
|
||||||
mod requests;
|
mod requests;
|
||||||
mod session_manager;
|
mod session_manager;
|
||||||
pub mod store;
|
pub mod store;
|
||||||
|
mod utilities;
|
||||||
mod verification;
|
mod verification;
|
||||||
|
|
||||||
pub use error::{MegolmError, OlmError};
|
pub use error::{MegolmError, OlmError};
|
||||||
|
|
|
@ -54,10 +54,10 @@ use olm_rs::{
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
error::{EventError, OlmResult, SessionCreationError},
|
error::{EventError, OlmResult, SessionCreationError},
|
||||||
file_encryption::encode,
|
|
||||||
identities::ReadOnlyDevice,
|
identities::ReadOnlyDevice,
|
||||||
requests::UploadSigningKeysRequest,
|
requests::UploadSigningKeysRequest,
|
||||||
store::{Changes, Store},
|
store::{Changes, Store},
|
||||||
|
utilities::encode,
|
||||||
OlmError,
|
OlmError,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ use aes_gcm::{
|
||||||
aead::{generic_array::GenericArray, Aead, NewAead},
|
aead::{generic_array::GenericArray, Aead, NewAead},
|
||||||
Aes256Gcm,
|
Aes256Gcm,
|
||||||
};
|
};
|
||||||
use base64::{decode_config, encode_config, DecodeError, URL_SAFE_NO_PAD};
|
|
||||||
use getrandom::getrandom;
|
use getrandom::getrandom;
|
||||||
use matrix_sdk_common::{
|
use matrix_sdk_common::{
|
||||||
encryption::DeviceKeys,
|
encryption::DeviceKeys,
|
||||||
|
@ -42,19 +41,12 @@ use matrix_sdk_common::{
|
||||||
use crate::{
|
use crate::{
|
||||||
error::SignatureError,
|
error::SignatureError,
|
||||||
identities::{MasterPubkey, SelfSigningPubkey, UserSigningPubkey},
|
identities::{MasterPubkey, SelfSigningPubkey, UserSigningPubkey},
|
||||||
|
utilities::{decode_url_safe as decode, encode_url_safe as encode, DecodeError},
|
||||||
UserIdentity,
|
UserIdentity,
|
||||||
};
|
};
|
||||||
|
|
||||||
const NONCE_SIZE: usize = 12;
|
const NONCE_SIZE: usize = 12;
|
||||||
|
|
||||||
fn encode<T: AsRef<[u8]>>(input: T) -> String {
|
|
||||||
encode_config(input, URL_SAFE_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn decode<T: AsRef<[u8]>>(input: T) -> Result<Vec<u8>, DecodeError> {
|
|
||||||
decode_config(input, URL_SAFE_NO_PAD)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Error type reporting failures in the Signign operations.
|
/// Error type reporting failures in the Signign operations.
|
||||||
#[derive(Debug, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum SigningError {
|
pub enum SigningError {
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
pub use base64::DecodeError;
|
||||||
|
use base64::{decode_config, encode_config, STANDARD_NO_PAD, URL_SAFE_NO_PAD};
|
||||||
|
|
||||||
|
/// Decode the input as base64 with no padding.
|
||||||
|
pub fn decode(input: impl AsRef<[u8]>) -> Result<Vec<u8>, DecodeError> {
|
||||||
|
decode_config(input, STANDARD_NO_PAD)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Decode the input as URL safe base64 with no padding.
|
||||||
|
pub fn decode_url_safe(input: impl AsRef<[u8]>) -> Result<Vec<u8>, DecodeError> {
|
||||||
|
decode_config(input, URL_SAFE_NO_PAD)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Encode the input as base64 with no padding.
|
||||||
|
pub fn encode(input: impl AsRef<[u8]>) -> String {
|
||||||
|
encode_config(input, STANDARD_NO_PAD)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Encode the input as URL safe base64 with no padding.
|
||||||
|
pub fn encode_url_safe(input: impl AsRef<[u8]>) -> String {
|
||||||
|
encode_config(input, URL_SAFE_NO_PAD)
|
||||||
|
}
|
Loading…
Reference in New Issue