mirror of
https://github.com/dani-garcia/vaultwarden.git
synced 2024-11-29 09:29:15 +03:00
Rework file ID generation
This commit is contained in:
parent
5fef7983f4
commit
c2ef331df9
3 changed files with 15 additions and 5 deletions
|
@ -808,7 +808,7 @@ fn post_attachment_v2(
|
||||||
err!("Cipher is not write accessible")
|
err!("Cipher is not write accessible")
|
||||||
}
|
}
|
||||||
|
|
||||||
let attachment_id = crypto::generate_file_id();
|
let attachment_id = crypto::generate_attachment_id();
|
||||||
let data: AttachmentRequestData = data.into_inner().data;
|
let data: AttachmentRequestData = data.into_inner().data;
|
||||||
let attachment =
|
let attachment =
|
||||||
Attachment::new(attachment_id.clone(), cipher.uuid.clone(), data.FileName, data.FileSize, Some(data.Key));
|
Attachment::new(attachment_id.clone(), cipher.uuid.clone(), data.FileName, data.FileSize, Some(data.Key));
|
||||||
|
@ -912,7 +912,7 @@ fn save_attachment(
|
||||||
// In the v2 API, we use the value from post_attachment_v2().
|
// In the v2 API, we use the value from post_attachment_v2().
|
||||||
let file_id = match &attachment {
|
let file_id = match &attachment {
|
||||||
Some(attachment) => attachment.id.clone(), // v2 API
|
Some(attachment) => attachment.id.clone(), // v2 API
|
||||||
None => crypto::generate_file_id(), // Legacy API
|
None => crypto::generate_attachment_id(), // Legacy API
|
||||||
};
|
};
|
||||||
path = base_path.join(&file_id);
|
path = base_path.join(&file_id);
|
||||||
|
|
||||||
|
|
|
@ -173,7 +173,7 @@ fn post_send_file(data: Data, content_type: &ContentType, headers: Headers, conn
|
||||||
|
|
||||||
// Create the Send
|
// Create the Send
|
||||||
let mut send = create_send(data.data, headers.user.uuid.clone())?;
|
let mut send = create_send(data.data, headers.user.uuid.clone())?;
|
||||||
let file_id = crate::crypto::generate_file_id();
|
let file_id = crate::crypto::generate_send_id();
|
||||||
|
|
||||||
if send.atype != SendType::File as i32 {
|
if send.atype != SendType::File as i32 {
|
||||||
err!("Send content is not a file");
|
err!("Send content is not a file");
|
||||||
|
|
|
@ -51,8 +51,18 @@ pub fn get_random(mut array: Vec<u8>) -> Vec<u8> {
|
||||||
array
|
array
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_file_id() -> String {
|
pub fn generate_id(num_bytes: usize) -> String {
|
||||||
HEXLOWER.encode(&get_random(vec![0; 16])) // 128 bits
|
HEXLOWER.encode(&get_random(vec![0; num_bytes]))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn generate_send_id() -> String {
|
||||||
|
// Send IDs are globally scoped, so make them longer to avoid collisions.
|
||||||
|
generate_id(32) // 256 bits
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn generate_attachment_id() -> String {
|
||||||
|
// Attachment IDs are scoped to a cipher, so they can be smaller.
|
||||||
|
generate_id(10) // 80 bits
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_token(token_size: u32) -> Result<String, Error> {
|
pub fn generate_token(token_size: u32) -> Result<String, Error> {
|
||||||
|
|
Loading…
Reference in a new issue