feat: updates
This commit is contained in:
49
src/spec.rs
49
src/spec.rs
@@ -1,11 +1,13 @@
|
||||
use std::fs::Metadata;
|
||||
|
||||
use rust_util::util_time;
|
||||
use rust_util::util_time::get_millis;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
// pub const TINY_ENCRYPT_VERSION: &'static str = "1.0";
|
||||
use crate::util::{encode_base64, get_user_agent};
|
||||
|
||||
// pub const ENVELOP_TYPE_KMS: &'static str = "kms";
|
||||
// pub const ENVELOP_TYPE_PGP: &'static str = "pgp";
|
||||
// pub const ENVELOP_TYPE_AGE: &'static str = "age";
|
||||
// pub const ENVELOP_TYPE_ECDH: &'static str = "ecdh";
|
||||
// pub const TINY_ENCRYPT_VERSION_10: &'static str = "1.0";
|
||||
pub const TINY_ENCRYPT_VERSION_11: &'static str = "1.1";
|
||||
|
||||
/// Specification: [Tiny Encrypt Spec V1.1](https://git.hatter.ink/hatter/tiny-encrypt-java/src/branch/master/TinyEncryptSpecV1.1.md)
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
@@ -43,6 +45,7 @@ pub struct TinyEncryptEnvelop {
|
||||
pub encrypted_key: String,
|
||||
}
|
||||
|
||||
/// NOTICE: Kms and Age is not being supported in the future
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
|
||||
pub enum TinyEncryptEnvelopType {
|
||||
#[serde(rename = "pgp")]
|
||||
@@ -69,7 +72,41 @@ impl TinyEncryptEnvelopType {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct EncMetadata {
|
||||
pub comment: Option<String>,
|
||||
pub encrypted_comment: Option<String>,
|
||||
pub encrypted_meta: Option<String>,
|
||||
pub compress: bool,
|
||||
}
|
||||
|
||||
impl TinyEncryptMeta {
|
||||
pub fn new(metadata: &Metadata, enc_metadata: &EncMetadata, nonce: &[u8], envelops: Vec<TinyEncryptEnvelop>) -> Self {
|
||||
TinyEncryptMeta {
|
||||
version: TINY_ENCRYPT_VERSION_11.to_string(),
|
||||
created: util_time::get_current_millis() as u64,
|
||||
user_agent: get_user_agent(),
|
||||
comment: enc_metadata.comment.to_owned(),
|
||||
encrypted_comment: enc_metadata.encrypted_comment.to_owned(),
|
||||
encrypted_meta: enc_metadata.encrypted_meta.to_owned(),
|
||||
pgp_envelop: None,
|
||||
pgp_fingerprint: None,
|
||||
age_envelop: None,
|
||||
age_recipient: None,
|
||||
ecdh_envelop: None,
|
||||
ecdh_point: None,
|
||||
envelop: None,
|
||||
envelops: Some(envelops),
|
||||
encryption_algorithm: None,
|
||||
nonce: encode_base64(nonce),
|
||||
file_length: metadata.len(),
|
||||
file_last_modified: match metadata.modified() {
|
||||
Ok(modified) => get_millis(&modified) as u64,
|
||||
Err(_) => 0,
|
||||
},
|
||||
compress: enc_metadata.compress,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn normalize(&mut self) {
|
||||
if self.envelops.is_none() {
|
||||
self.envelops = Some(vec![]);
|
||||
@@ -84,7 +121,7 @@ impl TinyEncryptMeta {
|
||||
if let (Some(envelop), Some(envelops)) = (&self.envelop, &mut self.envelops) {
|
||||
envelops.push(TinyEncryptEnvelop {
|
||||
r#type: TinyEncryptEnvelopType::Kms,
|
||||
kid: "".into(),
|
||||
kid: "".to_string(),
|
||||
desc: None,
|
||||
encrypted_key: envelop.into(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user