Skip to content

Commit a1274b4

Browse files
author
Bennett Hardwick
committed
Update vendored deps
1 parent 607d837 commit a1274b4

File tree

6 files changed

+164
-42
lines changed

6 files changed

+164
-42
lines changed

Cargo.lock

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"files":{"Cargo.toml":"e8c1ad7a9f8b5254630f6c8582d3babd60abef770134704f32d9da34b4658c09","LICENSE":"b1da10b43ce976d6fdb4b15c1ef4a19b7a9975ba48a431b27612087ace3129e9","README.md":"1ebb934850b992b8ace91258cc40f881cd676952a60d5036468254a4fcaf0740","examples/encrypt-data.rs":"ba3b4ff7081126c166398fa994a552967c20995f401b67da15c5271368366483","src/config/console_config.rs":"4ff650a56679f3b8973d54d0fbe75d73e3f962cd3ffbc9b526fb499825f64013","src/config/defaults.rs":"9829c97e2b2d41051f337bed0b52ea38a29f01ab2a7b882a67fb0c01bf481cea","src/config/errors.rs":"8f1dfb3dc969c3403f15347c5de9f4b22b6ee7191979104dd905824331df748a","src/config/idp_config.rs":"af55791a018eea96aefe665c04890e22b4df60a086cf2ec373b4b8121705155c","src/config/mod.rs":"c3cb5b9b82e1f43c3361dc82152aabd6877e07358cc3f9a12505159d8ee158a6","src/config/paths.rs":"b1b5782eb0e0a5b98c5e2e1d8e264cbdf10f303792551b04df9c873a0eb6ac3a","src/config/vars.rs":"4f09689b0e4b0490189f11c399ffbb55bb066a47dbbe838f99e44b3b7c8dcc74","src/config/vitur_config.rs":"8de6ac59a66147e59ca230a0a9278092d0c3f3f551fcb916325702af97f594d6","src/config/workspace.rs":"2ef25fef911a562d384f4a80bcccbb21c39698432c178119eb1da2470321a9e4","src/console/mod.rs":"5cc6e50b3b8fd1f69dce6aa83bbe259fb70cec3f9ae7dabbc6d570d60ac415d8","src/credentials/auto_refresh.rs":"b10b2388dc0409d1c63a7c04be0032b3fb1280f80ae23b856ad6a64b0274efb1","src/credentials/console_credentials.rs":"00ffaad70ba324431dffb76e1af2f83cdb9a43a9ecb379c0d5a1ffc78587dbf2","src/credentials/mod.rs":"c2369f0140b5ce56b8112e41547b38969b72be7f4943e7e50a79054b38c6c9f8","src/credentials/token_store.rs":"7fb370367a2e76f3b8f841bfe8972ca24ff57a04acab936abc6815f7d541410a","src/credentials/vitur_credentials/mod.rs":"40569eb3963fad59da84ac759217af517bcbca26c2ed2008431fb448ca120d19","src/credentials/vitur_credentials/vitur_access_key_credentials.rs":"9e3de00f39afba34abc7a2a82a670abf41472d9b5d332b9b0d7704178e3d553a","src/credentials/vitur_credentials/vitur_console_auth_credentials.rs":"25e6e91d9de2aa10da8c82bac5378afac0b7e8258d7a8768f534809140ea7574","src/credentials/vitur_credentials/vitur_token.rs":"58f4d4d505ffd0806fa5b9fb1ad6b142e38cf9c80139fee66ef5d97a2a846d41","src/encryption/compound_indexer/accumulator.rs":"ae8404a8fb7170641a924222c708bc87866c75da1ea2b1bb58dff6617677b571","src/encryption/compound_indexer/cons.rs":"7249b8e3d34cb50d2e6488959926dda8df5fc00fe25d7145f9ceb02712112b26","src/encryption/compound_indexer/mod.rs":"8cb5423af471db534aa2ed2d59bf8762b701f2e41c1d9e8a9558dffa36987d82","src/encryption/compound_indexer/prefix_indexer.rs":"c7901f13ecf79c996cac63ab6e8c67b33e6caa972f5c58bd98364bfad5076b93","src/encryption/errors.rs":"07161a77493b76d4fa949674cffad820c3b4fe516936a7b44ab691473377996b","src/encryption/match_indexer/mod.rs":"a39f5533457327e879a20888978caa7b11251d12814d655b5d3b5f3368169b73","src/encryption/mod.rs":"6c45e996fe067240f23307983aacf0626748d3fd4eff8e00c4c14f5d56de8420","src/encryption/ore_indexer/conversion.rs":"373049d811fbe025c66097a3646c468c31bf44940af045277cc3cc3701a76ac0","src/encryption/ore_indexer/mod.rs":"30b262407aae0f1a95ee21d2dda9ac60cfd1e166eb2ad0128e28a51afc92e552","src/encryption/plaintext/from_conversion.rs":"0fc7c17c72efad7fe2732b29876ef67acef36dac91541e402394b7e900dbae4c","src/encryption/plaintext/mod.rs":"f4decad316c7bda8e13a3ad1bcd3163192c2fbbd5cb4df6d6062868f7e0f17fb","src/encryption/plaintext/to_conversion.rs":"75f0ea89fae675e16b76ddd8b5b8fb0c39bca5fa74ea3d8df22c782f9b79d0d9","src/encryption/text.rs":"17b720ae8afe87342cb6c0ef8e32d131ae419b88ccbaaeff8c6de125fe2278ec","src/encryption/unique_indexer/mod.rs":"0247abc0456e4e669ae4f0e49d65693e9f47295fec6dc0116897c8a936425e64","src/idp_client.rs":"8a3fa119569aaba659f14fb1c015f7daf79b66bca03b6c0ad4fbdaaf65394948","src/lib.rs":"84782398a6055cc20aea0716e29170ddfaca477986dfe71612a052459180576c","src/reqwest_client.rs":"cadce726f0eca20558b61680b4d4a35c4098bb024246810d609d1e94cbeca709","src/schema.rs":"e5651df4c1cff4a3dc2184c2997012be3793dcf84fff6db70adefb33b9c59239","src/vitur/errors.rs":"62c2ca3b60bdde35c1b194561ce712f81a249b42bd7996df372906a58a334a83","src/vitur/local_log.rs":"e9c151842d4f55bdfab95aa7b2574acdc2692272ce5e2d4ee972666b5c76a228","src/vitur/mod.rs":"f9633e141dcb696682972f8242706d73569b63ff01c23d67deafc702217b7e26","string_comparison_test_cases.json":"b1b2b84147092ab9a20b3f1c864d66cf505f6a7929d91f3c238add3c35302c7a"},"package":null}
1+
{"files":{"Cargo.toml":"e8c1ad7a9f8b5254630f6c8582d3babd60abef770134704f32d9da34b4658c09","LICENSE":"b1da10b43ce976d6fdb4b15c1ef4a19b7a9975ba48a431b27612087ace3129e9","README.md":"1ebb934850b992b8ace91258cc40f881cd676952a60d5036468254a4fcaf0740","examples/encrypt-data.rs":"ba3b4ff7081126c166398fa994a552967c20995f401b67da15c5271368366483","src/config/console_config.rs":"4ff650a56679f3b8973d54d0fbe75d73e3f962cd3ffbc9b526fb499825f64013","src/config/defaults.rs":"9829c97e2b2d41051f337bed0b52ea38a29f01ab2a7b882a67fb0c01bf481cea","src/config/errors.rs":"8f1dfb3dc969c3403f15347c5de9f4b22b6ee7191979104dd905824331df748a","src/config/idp_config.rs":"af55791a018eea96aefe665c04890e22b4df60a086cf2ec373b4b8121705155c","src/config/mod.rs":"c3cb5b9b82e1f43c3361dc82152aabd6877e07358cc3f9a12505159d8ee158a6","src/config/paths.rs":"b1b5782eb0e0a5b98c5e2e1d8e264cbdf10f303792551b04df9c873a0eb6ac3a","src/config/vars.rs":"4f09689b0e4b0490189f11c399ffbb55bb066a47dbbe838f99e44b3b7c8dcc74","src/config/vitur_config.rs":"8de6ac59a66147e59ca230a0a9278092d0c3f3f551fcb916325702af97f594d6","src/config/workspace.rs":"2ef25fef911a562d384f4a80bcccbb21c39698432c178119eb1da2470321a9e4","src/console/mod.rs":"5cc6e50b3b8fd1f69dce6aa83bbe259fb70cec3f9ae7dabbc6d570d60ac415d8","src/credentials/auto_refresh.rs":"b10b2388dc0409d1c63a7c04be0032b3fb1280f80ae23b856ad6a64b0274efb1","src/credentials/console_credentials.rs":"00ffaad70ba324431dffb76e1af2f83cdb9a43a9ecb379c0d5a1ffc78587dbf2","src/credentials/mod.rs":"c2369f0140b5ce56b8112e41547b38969b72be7f4943e7e50a79054b38c6c9f8","src/credentials/token_store.rs":"7fb370367a2e76f3b8f841bfe8972ca24ff57a04acab936abc6815f7d541410a","src/credentials/vitur_credentials/mod.rs":"40569eb3963fad59da84ac759217af517bcbca26c2ed2008431fb448ca120d19","src/credentials/vitur_credentials/vitur_access_key_credentials.rs":"9e3de00f39afba34abc7a2a82a670abf41472d9b5d332b9b0d7704178e3d553a","src/credentials/vitur_credentials/vitur_console_auth_credentials.rs":"25e6e91d9de2aa10da8c82bac5378afac0b7e8258d7a8768f534809140ea7574","src/credentials/vitur_credentials/vitur_token.rs":"58f4d4d505ffd0806fa5b9fb1ad6b142e38cf9c80139fee66ef5d97a2a846d41","src/encryption/compound_indexer/accumulator.rs":"ae8404a8fb7170641a924222c708bc87866c75da1ea2b1bb58dff6617677b571","src/encryption/compound_indexer/cons.rs":"7249b8e3d34cb50d2e6488959926dda8df5fc00fe25d7145f9ceb02712112b26","src/encryption/compound_indexer/mod.rs":"8cb5423af471db534aa2ed2d59bf8762b701f2e41c1d9e8a9558dffa36987d82","src/encryption/compound_indexer/prefix_indexer.rs":"c7901f13ecf79c996cac63ab6e8c67b33e6caa972f5c58bd98364bfad5076b93","src/encryption/errors.rs":"07161a77493b76d4fa949674cffad820c3b4fe516936a7b44ab691473377996b","src/encryption/match_indexer/mod.rs":"a39f5533457327e879a20888978caa7b11251d12814d655b5d3b5f3368169b73","src/encryption/mod.rs":"9b33fcdf6cc8d695fe2cb45c8d7e3a58072f84fbd148c3a47c29226a3a6629a3","src/encryption/ore_indexer/conversion.rs":"373049d811fbe025c66097a3646c468c31bf44940af045277cc3cc3701a76ac0","src/encryption/ore_indexer/mod.rs":"30b262407aae0f1a95ee21d2dda9ac60cfd1e166eb2ad0128e28a51afc92e552","src/encryption/plaintext/from_conversion.rs":"2294eb23b30308b7ebf538eda562a1d5224b5626afec19cab4fa098e97ca762c","src/encryption/plaintext/mod.rs":"cd053d157fb97d2f23af2c03ae37469c39445aba37ea4fae16154140b6e74efe","src/encryption/plaintext/to_conversion.rs":"04c16094a8addca1bcf9871df3475a4be47b00c4185babf73ddbdccf154ff3e6","src/encryption/text.rs":"17b720ae8afe87342cb6c0ef8e32d131ae419b88ccbaaeff8c6de125fe2278ec","src/encryption/unique_indexer/mod.rs":"0247abc0456e4e669ae4f0e49d65693e9f47295fec6dc0116897c8a936425e64","src/idp_client.rs":"8a3fa119569aaba659f14fb1c015f7daf79b66bca03b6c0ad4fbdaaf65394948","src/lib.rs":"84782398a6055cc20aea0716e29170ddfaca477986dfe71612a052459180576c","src/reqwest_client.rs":"cadce726f0eca20558b61680b4d4a35c4098bb024246810d609d1e94cbeca709","src/schema.rs":"e5651df4c1cff4a3dc2184c2997012be3793dcf84fff6db70adefb33b9c59239","src/vitur/errors.rs":"62c2ca3b60bdde35c1b194561ce712f81a249b42bd7996df372906a58a334a83","src/vitur/local_log.rs":"e9c151842d4f55bdfab95aa7b2574acdc2692272ce5e2d4ee972666b5c76a228","src/vitur/mod.rs":"f9633e141dcb696682972f8242706d73569b63ff01c23d67deafc702217b7e26","string_comparison_test_cases.json":"b1b2b84147092ab9a20b3f1c864d66cf505f6a7929d91f3c238add3c35302c7a"},"package":null}

vendor/cipherstash-client/src/encryption/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use vitur_client::{EncryptPayload, EncryptedRecord};
2727
// Re-exports
2828
pub use self::{
2929
errors::{EncryptionError, TypeParseError},
30-
plaintext::Plaintext,
30+
plaintext::{Plaintext, PlaintextNullVariant, TryFromPlaintext},
3131
};
3232

3333
pub struct Encryption<C: Credentials<Token = ViturToken> = ViturCredentials> {
Lines changed: 86 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,26 @@
1-
use std::num::TryFromIntError;
2-
31
use chrono::{DateTime, NaiveDate, Utc};
42
use rust_decimal::Decimal;
53

6-
use super::Plaintext;
4+
use super::{Plaintext, PlaintextNullVariant};
75
use crate::encryption::errors::TypeParseError;
86

7+
/// Trait for converting `Plaintext` to `Self`
8+
pub trait TryFromPlaintext: Sized {
9+
/// Try to convert `value` to `Self`
10+
fn try_from_plaintext(value: &Plaintext) -> Result<Self, TypeParseError>;
11+
}
12+
913
macro_rules! impl_try_from_plaintext {
1014
($($ty:ty => $variant:ident),*) => {
1115
$(
12-
impl TryFrom<Plaintext> for $ty {
13-
type Error = TypeParseError;
14-
15-
fn try_from(value: Plaintext) -> Result<Self, Self::Error> {
16+
impl TryFromPlaintext for $ty {
17+
fn try_from_plaintext(value: &Plaintext) -> Result<Self, TypeParseError> {
1618
match value {
1719
Plaintext::$variant(Some(ref v)) => Ok(v.to_owned().into()),
1820
_ => Err(TypeParseError(concat!("Cannot convert type to ", stringify!($ty)).to_string())),
1921
}
2022
}
2123
}
22-
23-
impl TryFrom<Plaintext> for Option<$ty> {
24-
type Error = TypeParseError;
25-
26-
fn try_from(value: Plaintext) -> Result<Self, Self::Error> {
27-
match value {
28-
Plaintext::$variant(ref x) => Ok(x.clone().into()),
29-
_ => Err(TypeParseError(concat!("Cannot convert type to ", stringify!($ty)).to_string())),
30-
}
31-
}
32-
}
3324
)*
3425
};
3526
}
@@ -49,46 +40,113 @@ impl_try_from_plaintext! {
4940
String => Utf8Str
5041
}
5142

43+
/// Blanket implementation of `Option<T>` for all `T` that implements `TryFromPlaintext`.
44+
impl<T> TryFromPlaintext for Option<T>
45+
where
46+
T: TryFromPlaintext + PlaintextNullVariant,
47+
{
48+
/// Returns an error if the `Plaintext` variant of `value` and `<T as PlaintextNullVariant>::null()` doesn't match
49+
/// or if `TryFromPlaintext::try_from_plaintext` returns an error.
50+
/// Returns `None` if the inner `Option` in `value` is `None`
51+
/// Returns `Ok(Some(Self))` if `Plaintext` value was successfully be converted
52+
fn try_from_plaintext(value: &Plaintext) -> Result<Self, TypeParseError> {
53+
match (value, T::null()) {
54+
// Return OK(None) if the inner value is None
55+
(Plaintext::BigInt(None), Plaintext::BigInt(_))
56+
| (Plaintext::BigUInt(None), Plaintext::BigUInt(_))
57+
| (Plaintext::Boolean(None), Plaintext::Boolean(_))
58+
| (Plaintext::Decimal(None), Plaintext::Decimal(_))
59+
| (Plaintext::Float(None), Plaintext::Float(_))
60+
| (Plaintext::Int(None), Plaintext::Int(_))
61+
| (Plaintext::NaiveDate(None), Plaintext::NaiveDate(_))
62+
| (Plaintext::SmallInt(None), Plaintext::SmallInt(_))
63+
| (Plaintext::Timestamp(None), Plaintext::Timestamp(_))
64+
| (Plaintext::Utf8Str(None), Plaintext::Utf8Str(_)) => Ok(None),
65+
66+
// Return Result<Some(T))> if the inner value is Some
67+
(Plaintext::BigInt(Some(_)), Plaintext::BigInt(_))
68+
| (Plaintext::BigUInt(Some(_)), Plaintext::BigUInt(_))
69+
| (Plaintext::Boolean(Some(_)), Plaintext::Boolean(_))
70+
| (Plaintext::Decimal(Some(_)), Plaintext::Decimal(_))
71+
| (Plaintext::Float(Some(_)), Plaintext::Float(_))
72+
| (Plaintext::Int(Some(_)), Plaintext::Int(_))
73+
| (Plaintext::NaiveDate(Some(_)), Plaintext::NaiveDate(_))
74+
| (Plaintext::SmallInt(Some(_)), Plaintext::SmallInt(_))
75+
| (Plaintext::Timestamp(Some(_)), Plaintext::Timestamp(_))
76+
| (Plaintext::Utf8Str(Some(_)), Plaintext::Utf8Str(_)) => {
77+
T::try_from_plaintext(value).map(Some)
78+
}
79+
// Return type error if the expected variant for T and value doesn't match
80+
_ => Err(TypeParseError(format!(
81+
"Cannot convert type to {}",
82+
std::any::type_name::<Self>()
83+
))),
84+
}
85+
}
86+
}
87+
5288
#[cfg(test)]
5389
mod tests {
5490
use super::*;
5591

5692
#[test]
5793
fn test_conversion() {
5894
assert_eq!(
59-
String::try_from(Plaintext::Utf8Str(Some("Hello".to_string()))).unwrap(),
95+
String::try_from_plaintext(&Plaintext::Utf8Str(Some("Hello".to_string()))).unwrap(),
6096
"Hello".to_string(),
6197
);
6298

63-
assert!(!bool::try_from(Plaintext::Boolean(Some(false))).unwrap());
99+
assert!(!bool::try_from_plaintext(&Plaintext::Boolean(Some(false))).unwrap());
64100

65-
assert!(bool::try_from(Plaintext::Boolean(Some(true))).unwrap());
101+
assert!(bool::try_from_plaintext(&Plaintext::Boolean(Some(true))).unwrap());
66102

67-
assert_eq!(i64::try_from(Plaintext::BigInt(Some(10))).unwrap(), 10);
68-
assert_eq!(i32::try_from(Plaintext::Int(Some(10))).unwrap(), 10);
69-
assert_eq!(i16::try_from(Plaintext::SmallInt(Some(10))).unwrap(), 10);
103+
assert_eq!(
104+
i64::try_from_plaintext(&Plaintext::BigInt(Some(10))).unwrap(),
105+
10
106+
);
107+
assert_eq!(
108+
i32::try_from_plaintext(&Plaintext::Int(Some(10))).unwrap(),
109+
10
110+
);
111+
assert_eq!(
112+
i16::try_from_plaintext(&Plaintext::SmallInt(Some(10))).unwrap(),
113+
10
114+
);
70115

71-
assert_eq!(f64::try_from(Plaintext::from(10_f64)).unwrap(), 10.);
116+
assert_eq!(
117+
f64::try_from_plaintext(&Plaintext::from(10_f64)).unwrap(),
118+
10.
119+
);
72120

73121
assert_eq!(
74-
Decimal::try_from(Plaintext::Decimal(Some(Decimal::new(10, 0)))).unwrap(),
122+
Decimal::try_from_plaintext(&Plaintext::Decimal(Some(Decimal::new(10, 0)))).unwrap(),
75123
Decimal::new(10, 0),
76124
);
77125

78126
assert_eq!(
79-
NaiveDate::try_from(Plaintext::NaiveDate(Some(
127+
NaiveDate::try_from_plaintext(&Plaintext::NaiveDate(Some(
80128
NaiveDate::from_ymd_opt(2020, 1, 1).expect("Expected date to create")
81129
)))
82130
.unwrap(),
83131
NaiveDate::from_ymd_opt(2020, 1, 1).expect("Expected date to create")
84132
);
85133

86134
assert_eq!(
87-
DateTime::<Utc>::try_from(Plaintext::Timestamp(Some(
135+
DateTime::<Utc>::try_from_plaintext(&Plaintext::Timestamp(Some(
88136
DateTime::<Utc>::from_timestamp(1000, 0).expect("Expected timestamp to create")
89137
)))
90138
.unwrap(),
91139
(DateTime::from_timestamp(1000, 0).expect("Expected timestamp to create")),
92140
);
141+
142+
assert_eq!(
143+
Option::<i64>::try_from_plaintext(&Plaintext::BigInt(Some(42))).unwrap(),
144+
Some(42)
145+
);
146+
147+
assert_eq!(
148+
Option::<i64>::try_from_plaintext(&Plaintext::BigInt(None)).unwrap(),
149+
None,
150+
);
93151
}
94152
}

vendor/cipherstash-client/src/encryption/plaintext/mod.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use zeroize::Zeroize;
66

77
mod from_conversion;
88
mod to_conversion;
9+
pub use from_conversion::TryFromPlaintext;
910

1011
const VERSION: u8 = 1;
1112

@@ -283,6 +284,54 @@ impl Plaintext {
283284
}
284285
}
285286

287+
/// Trait that defines the `None` or `Null` `Plaintext` variant of the implementing type.
288+
pub trait PlaintextNullVariant {
289+
/// Returns Self's corresponding `Plaintext` variant with None
290+
fn null() -> Plaintext;
291+
}
292+
293+
macro_rules! impl_null_variant {
294+
($($ty:ty => $variant:ident),*) => {
295+
$(
296+
impl PlaintextNullVariant for $ty {
297+
fn null() -> Plaintext {
298+
Plaintext::$variant(None)
299+
}
300+
}
301+
)*
302+
};
303+
}
304+
305+
impl_null_variant! {
306+
String => Utf8Str,
307+
bool => Boolean,
308+
i64 => BigInt,
309+
i32 => Int,
310+
i16 => SmallInt,
311+
f64 => Float,
312+
Decimal => Decimal,
313+
NaiveDate => NaiveDate,
314+
DateTime<Utc> => Timestamp,
315+
u64 => BigUInt
316+
}
317+
318+
impl PlaintextNullVariant for &str {
319+
fn null() -> Plaintext {
320+
Plaintext::Utf8Str(None)
321+
}
322+
}
323+
324+
/// Blanket implementation for `Option<T>` where
325+
/// `T` implements `PlaintextNullVariant`.
326+
impl<T> PlaintextNullVariant for Option<T>
327+
where
328+
T: PlaintextNullVariant,
329+
{
330+
fn null() -> Plaintext {
331+
T::null()
332+
}
333+
}
334+
286335
#[cfg(test)]
287336
mod tests {
288337
use super::*;

0 commit comments

Comments
 (0)