Skip to content

Commit bcd61f9

Browse files
authored
Merge pull request #110 from ebisawa/refactor/consolidate-kv-and-known-key-traits
refactor: consolidate KV value and known-key conversion traits
2 parents 90d356f + 6277e7a commit bcd61f9

4 files changed

Lines changed: 13 additions & 68 deletions

File tree

‎crates/secretenv-core/src/feature/kv/encrypt.rs‎

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,6 @@ use uuid::Uuid;
2121

2222
use super::entry_codec::encode_kv_entries_to_tokens;
2323

24-
pub trait KvValueRef {
25-
fn as_kv_value(&self) -> &str;
26-
}
27-
28-
impl<T> KvValueRef for T
29-
where
30-
T: AsRef<str>,
31-
{
32-
fn as_kv_value(&self) -> &str {
33-
self.as_ref()
34-
}
35-
}
36-
3724
/// Build KV encryption context: generate master key, create HEAD/WRAP structures
3825
pub(crate) fn build_kv_encryption(
3926
members: &[VerifiedRecipientKey],
@@ -74,15 +61,15 @@ pub(crate) fn encrypt_kv_entries<V>(
7461
disclosed: bool,
7562
) -> Result<Vec<(String, KvEntryValue)>>
7663
where
77-
V: KvValueRef,
64+
V: AsRef<str>,
7865
{
7966
let key_schedule = KvKeySchedule::extract(master_key, sid)?;
8067
let mut entries: Vec<_> = kv_map
8168
.iter()
8269
.map(|(key, value)| {
8370
encrypt_entry(
8471
key,
85-
value.as_kv_value(),
72+
value.as_ref(),
8673
&key_schedule,
8774
sid,
8875
debug,
@@ -117,7 +104,7 @@ pub fn encrypt_kv_document<V>(
117104
token_codec: TokenCodec,
118105
) -> Result<String>
119106
where
120-
V: KvValueRef,
107+
V: AsRef<str>,
121108
{
122109
encrypt_kv_document_with_disclosed(kv_map, members, signing, token_codec, false)
123110
}
@@ -131,7 +118,7 @@ pub(crate) fn encrypt_kv_document_with_disclosed<V>(
131118
disclosed: bool,
132119
) -> Result<String>
133120
where
134-
V: KvValueRef,
121+
V: AsRef<str>,
135122
{
136123
encrypt_kv_map_with_wrap_mutation(kv_map, members, signing, token_codec, disclosed, |_| Ok(()))
137124
}
@@ -145,7 +132,7 @@ pub fn encrypt_kv_map_with_wrap_mutation<V, F>(
145132
mutate_wrap: F,
146133
) -> Result<String>
147134
where
148-
V: KvValueRef,
135+
V: AsRef<str>,
149136
F: FnOnce(&mut KvWrap) -> Result<()>,
150137
{
151138
let timestamp = crate::support::time::generate_current_timestamp()?;

‎crates/secretenv-core/src/feature/kv/rewrite_session/encrypt.rs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
use crate::feature::context::crypto::build_signing_context;
55
use crate::feature::context::crypto::CryptoContext;
6-
use crate::feature::kv::encrypt::KvValueRef;
76
use crate::format::token::TokenCodec;
87
use crate::model::public_key::VerifiedRecipientKey;
98
use crate::Result;
@@ -19,7 +18,7 @@ pub(crate) fn encrypt_kv_map_with_key_context<V, F>(
1918
debug: bool,
2019
) -> Result<String>
2120
where
22-
V: KvValueRef,
21+
V: AsRef<str>,
2322
F: FnOnce(&mut crate::model::kv_enc::header::KvWrap) -> Result<()>,
2423
{
2524
let signing = build_signing_context(key_ctx, debug)?;

‎crates/secretenv-core/src/feature/trust/judgment.rs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ mod signer;
1313
pub use active_member::{build_active_members_by_kid, ActiveMemberSnapshot};
1414
pub use identity::TrustIdentity;
1515
pub use known_key::{AdditionalKnownKeyCache, KnownKeyCache};
16+
17+
pub(crate) use identity::{IntoKid, IntoMemberHandle};
1618
pub use recipient::judge_recipients_trust;
1719
pub use self_trust::SelfTrustSet;
1820
pub use signer::{judge_signer_trust, TrustJudgment};

‎crates/secretenv-core/src/feature/trust/known_keys.rs‎

Lines changed: 5 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
//! Known keys CRUD operations and integrity checks.
55
6+
use crate::feature::trust::judgment::{IntoKid, IntoMemberHandle};
67
use crate::model::identity::{Kid, MemberHandle};
78
use crate::model::trust_store::KnownKey;
89
use crate::support::kid::resolve_unique_kid;
@@ -25,16 +26,16 @@ pub struct KnownKeyIdentity {
2526
impl KnownKeyIdentity {
2627
pub fn new<M, K>(member_handle: M, kid: K) -> Self
2728
where
28-
M: IntoKnownMemberHandle,
29-
K: IntoKnownKid,
29+
M: IntoMemberHandle,
30+
K: IntoKid,
3031
{
3132
Self::try_new(member_handle, kid).expect("known key identity inputs must be valid")
3233
}
3334

3435
pub fn try_new<M, K>(member_handle: M, kid: K) -> Result<Self>
3536
where
36-
M: IntoKnownMemberHandle,
37-
K: IntoKnownKid,
37+
M: IntoMemberHandle,
38+
K: IntoKid,
3839
{
3940
Ok(Self {
4041
member_handle: member_handle.into_member_handle()?,
@@ -59,50 +60,6 @@ impl KnownKeyIdentity {
5960
}
6061
}
6162

62-
pub trait IntoKnownMemberHandle {
63-
fn into_member_handle(self) -> Result<MemberHandle>;
64-
}
65-
66-
impl IntoKnownMemberHandle for MemberHandle {
67-
fn into_member_handle(self) -> Result<MemberHandle> {
68-
Ok(self)
69-
}
70-
}
71-
72-
impl IntoKnownMemberHandle for String {
73-
fn into_member_handle(self) -> Result<MemberHandle> {
74-
MemberHandle::try_from(self)
75-
}
76-
}
77-
78-
impl IntoKnownMemberHandle for &str {
79-
fn into_member_handle(self) -> Result<MemberHandle> {
80-
MemberHandle::try_from(self)
81-
}
82-
}
83-
84-
pub trait IntoKnownKid {
85-
fn into_kid(self) -> Result<Kid>;
86-
}
87-
88-
impl IntoKnownKid for Kid {
89-
fn into_kid(self) -> Result<Kid> {
90-
Ok(self)
91-
}
92-
}
93-
94-
impl IntoKnownKid for String {
95-
fn into_kid(self) -> Result<Kid> {
96-
Kid::try_from(self)
97-
}
98-
}
99-
100-
impl IntoKnownKid for &str {
101-
fn into_kid(self) -> Result<Kid> {
102-
Kid::try_from(self)
103-
}
104-
}
105-
10663
/// Add a known key entry.
10764
///
10865
/// - Different subject_handle with same kid -> integrity anomaly error

0 commit comments

Comments
 (0)