Skip to content

Commit

Permalink
Make it possible to customize the KDF info for records
Browse files Browse the repository at this point in the history
  • Loading branch information
Limeth committed Aug 3, 2024
1 parent 72b0223 commit f2dfeeb
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 9 deletions.
32 changes: 29 additions & 3 deletions cddl/kdf_usage.cddl
Original file line number Diff line number Diff line change
@@ -1,19 +1,45 @@
RRR_KdfUsage = {
; RRR_KdfUsage_Fragment
RRR_KdfUsage_SuccessionNonce // RRR_KdfUsage_Fragment
RRR_KdfUsage_Custom
// RRR_KdfUsage_SuccessionNonce
// RRR_KdfUsage_Fragment
}

RRR_KdfUsage_Custom = (
custom: bstr, ; An arbitrary byte string
)

RRR_KdfUsage_SuccessionNonce = (
succession_nonce: {},
)

RRR_KdfUsage_Fragment = (
fragment: {
usage: "encryption_key" / "file_name" / "file_tag",
usage: {
RRR_KdfUsage_Fragment_Usage_Custom
// RRR_KdfUsage_Fragment_Usage_EncryptionKey
// RRR_KdfUsage_Fragment_Usage_FileName
// RRR_KdfUsage_Fragment_Usage_FileTag
},
parameters: {
record_nonce: uint,
segment_index: uint,
record_version: uint,
},
},
)

RRR_KdfUsage_Fragment_Usage_Custom = (
custom: bstr, ; An arbitrary byte string
)

RRR_KdfUsage_Fragment_Usage_EncryptionKey = (
encryption_key: {},
)

RRR_KdfUsage_Fragment_Usage_FileName = (
file_name: {},
)

RRR_KdfUsage_Fragment_Usage_FileTag = (
file_tag: {},
)
6 changes: 3 additions & 3 deletions src/record/key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ impl HashedRecordKey {
let mut okm =
vec![0_u8; kdf_params.get_file_name_length_in_bytes() as usize].into_boxed_slice();
let usage = KdfUsage::Fragment {
usage: KdfUsageFragmentUsage::FileName,
usage: KdfUsageFragmentUsage::FileName {},
parameters: fragment_parameters.clone(),
};

Expand All @@ -137,7 +137,7 @@ impl HashedRecordKey {
let mut okm =
vec![0_u8; kdf_params.get_file_tag_length_in_bytes() as usize].into_boxed_slice();
let usage = KdfUsage::Fragment {
usage: KdfUsageFragmentUsage::FileTag,
usage: KdfUsageFragmentUsage::FileTag {},
parameters: fragment_parameters.clone(),
};

Expand All @@ -154,7 +154,7 @@ impl HashedRecordKey {
) -> Result<FragmentEncryptionKeyBytes> {
let mut okm = vec![0_u8; encryption_alg.key_length_in_bytes()].into_boxed_slice();
let usage = KdfUsage::Fragment {
usage: KdfUsageFragmentUsage::EncryptionKey,
usage: KdfUsageFragmentUsage::EncryptionKey {},
parameters: fragment_parameters.clone(),
};

Expand Down
8 changes: 5 additions & 3 deletions src/record/segment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ impl FragmentKey {
#[derive(Clone, Debug, Serialize, PartialEq, Arbitrary)]
#[serde(rename_all = "snake_case")]
pub enum KdfUsage {
Custom(BytesOrHexString<Vec<u8>>),
SuccessionNonce {},
Fragment {
usage: KdfUsageFragmentUsage,
Expand All @@ -114,9 +115,10 @@ pub enum KdfUsage {
#[derive(Clone, Debug, Serialize, PartialEq, Arbitrary)]
#[serde(rename_all = "snake_case")]
pub enum KdfUsageFragmentUsage {
EncryptionKey,
FileName,
FileTag,
Custom(BytesOrHexString<Vec<u8>>),
EncryptionKey {},
FileName {},
FileTag {},
}

#[derive(Clone, Debug, Serialize, PartialEq, Eq, Zeroize, ZeroizeOnDrop, Arbitrary)]
Expand Down

0 comments on commit f2dfeeb

Please sign in to comment.