aws_db_esdk/deps/aws_cryptography_materialProviders/
validation.rs

1// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0
3// Do not modify this file. This file is machine generated, and any changes to it will be overwritten.
4pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials(
5    input: &crate::deps::aws_cryptography_keyStore::types::BeaconKeyMaterials,
6) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
7    validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DbeaconKeyIdentifier(
8        &input.r#beacon_key_identifier,
9    )?;
10    validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DencryptionContext(
11        &input.r#encryption_context,
12    )?;
13    validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DbeaconKey(&input.r#beacon_key)?;
14    validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DhmacKeys(&input.r#hmac_keys)?;
15    Ok(())
16}
17pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DbeaconKey(
18    input: &::std::option::Option<::aws_smithy_types::Blob>,
19) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
20    if input.is_none() {
21        return ::std::result::Result::Ok(());
22    }
23    let input = input.as_ref().unwrap();
24
25    Ok(())
26}
27pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DbeaconKeyIdentifier(
28    input: &::std::option::Option<::std::string::String>,
29) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
30    if input.is_none() {
31        return ::std::result::Result::Err(
32            ::aws_smithy_types::error::operation::BuildError::missing_field(
33                "beacon_key_identifier",
34                "beacon_key_identifier is required but was not specified",
35            ),
36        );
37    }
38    if input.is_none() {
39        return ::std::result::Result::Ok(());
40    }
41    let input = input.as_ref().unwrap();
42
43    Ok(())
44}
45pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DencryptionContext(
46    input: &::std::option::Option<
47        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
48    >,
49) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
50    if input.is_none() {
51        return ::std::result::Result::Err(
52            ::aws_smithy_types::error::operation::BuildError::missing_field(
53                "encryption_context",
54                "encryption_context is required but was not specified",
55            ),
56        );
57    }
58    if input.is_none() {
59        return ::std::result::Result::Ok(());
60    }
61    let input = input.as_ref().unwrap();
62
63    validate_aws_Pcryptography_PkeyStore_HEncryptionContext(input)?;
64    Ok(())
65}
66pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials_DhmacKeys(
67    input: &::std::option::Option<
68        ::std::collections::HashMap<::std::string::String, ::aws_smithy_types::Blob>,
69    >,
70) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
71    if input.is_none() {
72        return ::std::result::Result::Ok(());
73    }
74    let input = input.as_ref().unwrap();
75
76    validate_aws_Pcryptography_PkeyStore_HHmacKeyMap(input)?;
77    Ok(())
78}
79pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials(
80    input: &crate::deps::aws_cryptography_keyStore::types::BranchKeyMaterials,
81) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
82    validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKeyIdentifier(
83        &input.r#branch_key_identifier,
84    )?;
85    validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKeyVersion(
86        &input.r#branch_key_version,
87    )?;
88    validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DencryptionContext(
89        &input.r#encryption_context,
90    )?;
91    validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKey(&input.r#branch_key)?;
92    Ok(())
93}
94pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKey(
95    input: &::std::option::Option<::aws_smithy_types::Blob>,
96) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
97    if input.is_none() {
98        return ::std::result::Result::Err(
99            ::aws_smithy_types::error::operation::BuildError::missing_field(
100                "branch_key",
101                "branch_key is required but was not specified",
102            ),
103        );
104    }
105    if input.is_none() {
106        return ::std::result::Result::Ok(());
107    }
108    let input = input.as_ref().unwrap();
109
110    Ok(())
111}
112pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKeyIdentifier(
113    input: &::std::option::Option<::std::string::String>,
114) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
115    if input.is_none() {
116        return ::std::result::Result::Err(
117            ::aws_smithy_types::error::operation::BuildError::missing_field(
118                "branch_key_identifier",
119                "branch_key_identifier is required but was not specified",
120            ),
121        );
122    }
123    if input.is_none() {
124        return ::std::result::Result::Ok(());
125    }
126    let input = input.as_ref().unwrap();
127
128    Ok(())
129}
130pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DbranchKeyVersion(
131    input: &::std::option::Option<::std::string::String>,
132) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
133    if input.is_none() {
134        return ::std::result::Result::Err(
135            ::aws_smithy_types::error::operation::BuildError::missing_field(
136                "branch_key_version",
137                "branch_key_version is required but was not specified",
138            ),
139        );
140    }
141    if input.is_none() {
142        return ::std::result::Result::Ok(());
143    }
144    let input = input.as_ref().unwrap();
145
146    Ok(())
147}
148pub(crate) fn validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials_DencryptionContext(
149    input: &::std::option::Option<
150        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
151    >,
152) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
153    if input.is_none() {
154        return ::std::result::Result::Err(
155            ::aws_smithy_types::error::operation::BuildError::missing_field(
156                "encryption_context",
157                "encryption_context is required but was not specified",
158            ),
159        );
160    }
161    if input.is_none() {
162        return ::std::result::Result::Ok(());
163    }
164    let input = input.as_ref().unwrap();
165
166    validate_aws_Pcryptography_PkeyStore_HEncryptionContext(input)?;
167    Ok(())
168}
169pub(crate) fn validate_aws_Pcryptography_PkeyStore_HEncryptionContext(
170    input: &::std::collections::HashMap<::std::string::String, ::std::string::String>,
171) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
172    for (inner_key, inner_val) in input.iter() {
173        validate_aws_Pcryptography_PkeyStore_HEncryptionContext_Dkey(inner_key)?;
174        validate_aws_Pcryptography_PkeyStore_HEncryptionContext_Dvalue(inner_val)?;
175    }
176    Ok(())
177}
178pub(crate) fn validate_aws_Pcryptography_PkeyStore_HEncryptionContext_Dkey(
179    input: &::std::string::String,
180) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
181    Ok(())
182}
183pub(crate) fn validate_aws_Pcryptography_PkeyStore_HEncryptionContext_Dvalue(
184    input: &::std::string::String,
185) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
186    Ok(())
187}
188pub(crate) fn validate_aws_Pcryptography_PkeyStore_HHmacKeyMap(
189    input: &::std::collections::HashMap<::std::string::String, ::aws_smithy_types::Blob>,
190) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
191    for (inner_key, inner_val) in input.iter() {
192        validate_aws_Pcryptography_PkeyStore_HHmacKeyMap_Dkey(inner_key)?;
193        validate_aws_Pcryptography_PkeyStore_HHmacKeyMap_Dvalue(inner_val)?;
194    }
195    Ok(())
196}
197pub(crate) fn validate_aws_Pcryptography_PkeyStore_HHmacKeyMap_Dkey(
198    input: &::std::string::String,
199) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
200    Ok(())
201}
202pub(crate) fn validate_aws_Pcryptography_PkeyStore_HHmacKeyMap_Dvalue(
203    input: &::aws_smithy_types::Blob,
204) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
205    Ok(())
206}
207pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAccountIdList(
208    input: &::std::vec::Vec<::std::string::String>,
209) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
210    for inner in input.iter() {
211        validate_aws_Pcryptography_PmaterialProviders_HAccountIdList_Dmember(inner)?;
212    }
213    Ok(())
214}
215pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAccountIdList_Dmember(
216    input: &::std::string::String,
217) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
218    Ok(())
219}
220pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(
221    input: &crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
222) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
223    if let crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId::Esdk(
224        ref inner,
225    ) = &input
226    {
227        validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId_DESDK(inner)?;
228    }
229    if let crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId::Dbe(
230        ref inner,
231    ) = &input
232    {
233        validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId_DDBE(inner)?;
234    }
235    Ok(())
236}
237pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId_DDBE(
238    input: &crate::deps::aws_cryptography_materialProviders::types::DbeAlgorithmSuiteId,
239) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
240    Ok(())
241}
242pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId_DESDK(
243    input: &crate::deps::aws_cryptography_materialProviders::types::EsdkAlgorithmSuiteId,
244) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
245    Ok(())
246}
247pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo(
248    input: &crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteInfo,
249) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
250    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Did(&input.r#id)?;
251    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DbinaryId(
252        &input.r#binary_id,
253    )?;
254    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DmessageVersion(
255        &input.r#message_version,
256    )?;
257    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dencrypt(&input.r#encrypt)?;
258    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dkdf(&input.r#kdf)?;
259    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dcommitment(
260        &input.r#commitment,
261    )?;
262    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dsignature(
263        &input.r#signature,
264    )?;
265    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DsymmetricSignature(
266        &input.r#symmetric_signature,
267    )?;
268    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DedkWrapping(
269        &input.r#edk_wrapping,
270    )?;
271    Ok(())
272}
273pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_for_AwsCryptographicMaterialProviders_ValidAlgorithmSuiteInfo(
274    input: &crate::deps::aws_cryptography_materialProviders::operation::valid_algorithm_suite_info::AlgorithmSuiteInfo,
275) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
276    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Did(&input.r#id)?;
277    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DbinaryId(
278        &input.r#binary_id,
279    )?;
280    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DmessageVersion(
281        &input.r#message_version,
282    )?;
283    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dencrypt(&input.r#encrypt)?;
284    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dkdf(&input.r#kdf)?;
285    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dcommitment(
286        &input.r#commitment,
287    )?;
288    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dsignature(
289        &input.r#signature,
290    )?;
291    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DsymmetricSignature(
292        &input.r#symmetric_signature,
293    )?;
294    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DedkWrapping(
295        &input.r#edk_wrapping,
296    )?;
297    Ok(())
298}
299pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DbinaryId(
300    input: &::std::option::Option<::aws_smithy_types::Blob>,
301) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
302    if input.is_none() {
303        return ::std::result::Result::Err(
304            ::aws_smithy_types::error::operation::BuildError::missing_field(
305                "binary_id",
306                "binary_id is required but was not specified",
307            ),
308        );
309    }
310    if input.is_none() {
311        return ::std::result::Result::Ok(());
312    }
313    let input = input.as_ref().unwrap();
314
315    Ok(())
316}
317pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dcommitment(
318    input: &::std::option::Option<
319        crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm,
320    >,
321) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
322    if input.is_none() {
323        return ::std::result::Result::Err(
324            ::aws_smithy_types::error::operation::BuildError::missing_field(
325                "commitment",
326                "commitment is required but was not specified",
327            ),
328        );
329    }
330    if input.is_none() {
331        return ::std::result::Result::Ok(());
332    }
333    let input = input.as_ref().unwrap();
334
335    validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm(input)?;
336    Ok(())
337}
338pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DedkWrapping(
339    input: &::std::option::Option<
340        crate::deps::aws_cryptography_materialProviders::types::EdkWrappingAlgorithm,
341    >,
342) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
343    if input.is_none() {
344        return ::std::result::Result::Err(
345            ::aws_smithy_types::error::operation::BuildError::missing_field(
346                "edk_wrapping",
347                "edk_wrapping is required but was not specified",
348            ),
349        );
350    }
351    if input.is_none() {
352        return ::std::result::Result::Ok(());
353    }
354    let input = input.as_ref().unwrap();
355
356    validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm(input)?;
357    Ok(())
358}
359pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dencrypt(
360    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::Encrypt>,
361) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
362    if input.is_none() {
363        return ::std::result::Result::Err(
364            ::aws_smithy_types::error::operation::BuildError::missing_field(
365                "encrypt",
366                "encrypt is required but was not specified",
367            ),
368        );
369    }
370    if input.is_none() {
371        return ::std::result::Result::Ok(());
372    }
373    let input = input.as_ref().unwrap();
374
375    validate_aws_Pcryptography_PmaterialProviders_HEncrypt(input)?;
376    Ok(())
377}
378pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Did(
379    input: &::std::option::Option<
380        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
381    >,
382) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
383    if input.is_none() {
384        return ::std::result::Result::Err(
385            ::aws_smithy_types::error::operation::BuildError::missing_field(
386                "id",
387                "id is required but was not specified",
388            ),
389        );
390    }
391    if input.is_none() {
392        return ::std::result::Result::Ok(());
393    }
394    let input = input.as_ref().unwrap();
395
396    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
397    Ok(())
398}
399pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dkdf(
400    input: &::std::option::Option<
401        crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm,
402    >,
403) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
404    if input.is_none() {
405        return ::std::result::Result::Err(
406            ::aws_smithy_types::error::operation::BuildError::missing_field(
407                "kdf",
408                "kdf is required but was not specified",
409            ),
410        );
411    }
412    if input.is_none() {
413        return ::std::result::Result::Ok(());
414    }
415    let input = input.as_ref().unwrap();
416
417    validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm(input)?;
418    Ok(())
419}
420pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DmessageVersion(
421    input: &::std::option::Option<::std::primitive::i32>,
422) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
423    if input.is_none() {
424        return ::std::result::Result::Err(
425            ::aws_smithy_types::error::operation::BuildError::missing_field(
426                "message_version",
427                "message_version is required but was not specified",
428            ),
429        );
430    }
431    if input.is_none() {
432        return ::std::result::Result::Ok(());
433    }
434    let input = input.as_ref().unwrap();
435
436    Ok(())
437}
438pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_Dsignature(
439    input: &::std::option::Option<
440        crate::deps::aws_cryptography_materialProviders::types::SignatureAlgorithm,
441    >,
442) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
443    if input.is_none() {
444        return ::std::result::Result::Err(
445            ::aws_smithy_types::error::operation::BuildError::missing_field(
446                "signature",
447                "signature is required but was not specified",
448            ),
449        );
450    }
451    if input.is_none() {
452        return ::std::result::Result::Ok(());
453    }
454    let input = input.as_ref().unwrap();
455
456    validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm(input)?;
457    Ok(())
458}
459pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo_DsymmetricSignature(
460    input: &::std::option::Option<
461        crate::deps::aws_cryptography_materialProviders::types::SymmetricSignatureAlgorithm,
462    >,
463) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
464    if input.is_none() {
465        return ::std::result::Result::Err(
466            ::aws_smithy_types::error::operation::BuildError::missing_field(
467                "symmetric_signature",
468                "symmetric_signature is required but was not specified",
469            ),
470        );
471    }
472    if input.is_none() {
473        return ::std::result::Result::Ok(());
474    }
475    let input = input.as_ref().unwrap();
476
477    validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm(input)?;
478    Ok(())
479}
480pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HBranchKeyIdSupplierReference(
481    input: &crate::deps::aws_cryptography_materialProviders::types::branch_key_id_supplier::BranchKeyIdSupplierRef,
482) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
483    Ok(())
484}
485pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType(
486    input: &crate::deps::aws_cryptography_materialProviders::types::CacheType,
487) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
488    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::Default(ref inner) =
489        &input
490    {
491        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DDefault(inner)?;
492    }
493    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::No(ref inner) = &input
494    {
495        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DNo(inner)?;
496    }
497    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::SingleThreaded(
498        ref inner,
499    ) = &input
500    {
501        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DSingleThreaded(inner)?;
502    }
503    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::MultiThreaded(
504        ref inner,
505    ) = &input
506    {
507        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DMultiThreaded(inner)?;
508    }
509    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::StormTracking(
510        ref inner,
511    ) = &input
512    {
513        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DStormTracking(inner)?;
514    }
515    if let crate::deps::aws_cryptography_materialProviders::types::CacheType::Shared(ref inner) =
516        &input
517    {
518        validate_aws_Pcryptography_PmaterialProviders_HCacheType_DShared(inner)?;
519    }
520    Ok(())
521}
522pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DDefault(
523    input: &crate::deps::aws_cryptography_materialProviders::types::DefaultCache,
524) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
525    validate_aws_Pcryptography_PmaterialProviders_HDefaultCache(input)?;
526    Ok(())
527}
528pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DMultiThreaded(
529    input: &crate::deps::aws_cryptography_materialProviders::types::MultiThreadedCache,
530) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
531    validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache(input)?;
532    Ok(())
533}
534pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DNo(
535    input: &crate::deps::aws_cryptography_materialProviders::types::NoCache,
536) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
537    validate_aws_Pcryptography_PmaterialProviders_HNoCache(input)?;
538    Ok(())
539}
540pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DShared(
541    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_cache::CryptographicMaterialsCacheRef,
542) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
543    validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsCacheReference(input)?;
544    Ok(())
545}
546pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DSingleThreaded(
547    input: &crate::deps::aws_cryptography_materialProviders::types::SingleThreadedCache,
548) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
549    validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache(input)?;
550    Ok(())
551}
552pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCacheType_DStormTracking(
553    input: &crate::deps::aws_cryptography_materialProviders::types::StormTrackingCache,
554) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
555    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache(input)?;
556    Ok(())
557}
558pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(
559    input: &crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
560) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
561    Ok(())
562}
563pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy(
564    input: &crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy,
565) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
566    if let crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy::Esdk(
567        ref inner,
568    ) = &input
569    {
570        validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy_DESDK(inner)?;
571    }
572    if let crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy::Dbe(
573        ref inner,
574    ) = &input
575    {
576        validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy_DDBE(inner)?;
577    }
578    Ok(())
579}
580pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy_DDBE(
581    input: &crate::deps::aws_cryptography_materialProviders::types::DbeCommitmentPolicy,
582) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
583    Ok(())
584}
585pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy_DESDK(
586    input: &crate::deps::aws_cryptography_materialProviders::types::EsdkCommitmentPolicy,
587) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
588    Ok(())
589}
590pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput(
591    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsDiscoveryKeyringInput,
592) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
593    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DkmsClient(
594        &input.r#kms_client,
595    )?;
596    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
597    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DgrantTokens(
598        &input.r#grant_tokens,
599    )?;
600    Ok(())
601}
602pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryKeyring(
603    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_discovery_keyring::CreateAwsKmsDiscoveryKeyringInput,
604) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
605    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DkmsClient(
606        &input.r#kms_client,
607    )?;
608    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
609    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DgrantTokens(
610        &input.r#grant_tokens,
611    )?;
612    Ok(())
613}
614pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DdiscoveryFilter(
615    input: &::std::option::Option<
616        crate::deps::aws_cryptography_materialProviders::types::DiscoveryFilter,
617    >,
618) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
619    if input.is_none() {
620        return ::std::result::Result::Ok(());
621    }
622    let input = input.as_ref().unwrap();
623
624    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter(input)?;
625    Ok(())
626}
627pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DgrantTokens(
628    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
629) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
630    if input.is_none() {
631        return ::std::result::Result::Ok(());
632    }
633    let input = input.as_ref().unwrap();
634
635    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
636    Ok(())
637}
638pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryKeyringInput_DkmsClient(
639    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
640) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
641    if input.is_none() {
642        return ::std::result::Result::Err(
643            ::aws_smithy_types::error::operation::BuildError::missing_field(
644                "kms_client",
645                "kms_client is required but was not specified",
646            ),
647        );
648    }
649    if input.is_none() {
650        return ::std::result::Result::Ok(());
651    }
652    let input = input.as_ref().unwrap();
653
654    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
655    Ok(())
656}
657pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput(
658    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsDiscoveryMultiKeyringInput,
659) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
660    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_Dregions(
661        &input.r#regions,
662    )?;
663    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
664    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
665    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
666    Ok(())
667}
668pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryMultiKeyring(
669    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_discovery_multi_keyring::CreateAwsKmsDiscoveryMultiKeyringInput,
670) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
671    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_Dregions(
672        &input.r#regions,
673    )?;
674    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
675    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
676    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
677    Ok(())
678}
679pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DclientSupplier(
680    input: &::std::option::Option<
681        crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
682    >,
683) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
684    if input.is_none() {
685        return ::std::result::Result::Ok(());
686    }
687    let input = input.as_ref().unwrap();
688
689    validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(input)?;
690    Ok(())
691}
692pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DdiscoveryFilter(
693    input: &::std::option::Option<
694        crate::deps::aws_cryptography_materialProviders::types::DiscoveryFilter,
695    >,
696) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
697    if input.is_none() {
698        return ::std::result::Result::Ok(());
699    }
700    let input = input.as_ref().unwrap();
701
702    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter(input)?;
703    Ok(())
704}
705pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_DgrantTokens(
706    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
707) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
708    if input.is_none() {
709        return ::std::result::Result::Ok(());
710    }
711    let input = input.as_ref().unwrap();
712
713    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
714    Ok(())
715}
716pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsDiscoveryMultiKeyringInput_Dregions(
717    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
718) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
719    if input.is_none() {
720        return ::std::result::Result::Err(
721            ::aws_smithy_types::error::operation::BuildError::missing_field(
722                "regions",
723                "regions is required but was not specified",
724            ),
725        );
726    }
727    if input.is_none() {
728        return ::std::result::Result::Ok(());
729    }
730    let input = input.as_ref().unwrap();
731
732    validate_aws_Pcryptography_PmaterialProviders_HRegionList(input)?;
733    Ok(())
734}
735pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput(
736    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsEcdhKeyringInput,
737) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
738    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DKeyAgreementScheme(&input.r#key_agreement_scheme)?;
739    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DcurveSpec(
740        &input.r#curve_spec,
741    )?;
742    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DkmsClient(
743        &input.r#kms_client,
744    )?;
745    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DgrantTokens(
746        &input.r#grant_tokens,
747    )?;
748    Ok(())
749}
750pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsEcdhKeyring(
751    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_ecdh_keyring::CreateAwsKmsEcdhKeyringInput,
752) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
753    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DKeyAgreementScheme(&input.r#key_agreement_scheme)?;
754    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DcurveSpec(
755        &input.r#curve_spec,
756    )?;
757    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DkmsClient(
758        &input.r#kms_client,
759    )?;
760    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DgrantTokens(
761        &input.r#grant_tokens,
762    )?;
763    Ok(())
764}
765pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DcurveSpec(
766    input: &::std::option::Option<crate::deps::aws_cryptography_primitives::types::EcdhCurveSpec>,
767) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
768    if input.is_none() {
769        return ::std::result::Result::Err(
770            ::aws_smithy_types::error::operation::BuildError::missing_field(
771                "curve_spec",
772                "curve_spec is required but was not specified",
773            ),
774        );
775    }
776    if input.is_none() {
777        return ::std::result::Result::Ok(());
778    }
779    let input = input.as_ref().unwrap();
780
781    Ok(())
782}
783pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DgrantTokens(
784    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
785) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
786    if input.is_none() {
787        return ::std::result::Result::Ok(());
788    }
789    let input = input.as_ref().unwrap();
790
791    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
792    Ok(())
793}
794pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DKeyAgreementScheme(
795    input: &::std::option::Option<
796        crate::deps::aws_cryptography_materialProviders::types::KmsEcdhStaticConfigurations,
797    >,
798) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
799    if input.is_none() {
800        return ::std::result::Result::Err(
801            ::aws_smithy_types::error::operation::BuildError::missing_field(
802                "key_agreement_scheme",
803                "key_agreement_scheme is required but was not specified",
804            ),
805        );
806    }
807    if input.is_none() {
808        return ::std::result::Result::Ok(());
809    }
810    let input = input.as_ref().unwrap();
811
812    validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations(input)?;
813    Ok(())
814}
815pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsEcdhKeyringInput_DkmsClient(
816    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
817) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
818    if input.is_none() {
819        return ::std::result::Result::Err(
820            ::aws_smithy_types::error::operation::BuildError::missing_field(
821                "kms_client",
822                "kms_client is required but was not specified",
823            ),
824        );
825    }
826    if input.is_none() {
827        return ::std::result::Result::Ok(());
828    }
829    let input = input.as_ref().unwrap();
830
831    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
832    Ok(())
833}
834pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput(
835    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsHierarchicalKeyringInput,
836) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
837    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyId(&input.r#branch_key_id)?;
838    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyIdSupplier(&input.r#branch_key_id_supplier)?;
839    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DkeyStore(
840        &input.r#key_store,
841    )?;
842    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DttlSeconds(&input.r#ttl_seconds)?;
843    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_Dcache(
844        &input.r#cache,
845    )?;
846    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DpartitionId(&input.r#partition_id)?;
847    Ok(())
848}
849pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsHierarchicalKeyring(
850    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_hierarchical_keyring::CreateAwsKmsHierarchicalKeyringInput,
851) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
852    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyId(&input.r#branch_key_id)?;
853    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyIdSupplier(&input.r#branch_key_id_supplier)?;
854    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DkeyStore(
855        &input.r#key_store,
856    )?;
857    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DttlSeconds(&input.r#ttl_seconds)?;
858    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_Dcache(
859        &input.r#cache,
860    )?;
861    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DpartitionId(&input.r#partition_id)?;
862    Ok(())
863}
864pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyId(
865    input: &::std::option::Option<::std::string::String>,
866) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
867    if input.is_none() {
868        return ::std::result::Result::Ok(());
869    }
870    let input = input.as_ref().unwrap();
871
872    Ok(())
873}
874pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DbranchKeyIdSupplier(
875    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::branch_key_id_supplier::BranchKeyIdSupplierRef>,
876) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
877    if input.is_none() {
878        return ::std::result::Result::Ok(());
879    }
880    let input = input.as_ref().unwrap();
881
882    validate_aws_Pcryptography_PmaterialProviders_HBranchKeyIdSupplierReference(input)?;
883    Ok(())
884}
885pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_Dcache(
886    input: &::std::option::Option<
887        crate::deps::aws_cryptography_materialProviders::types::CacheType,
888    >,
889) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
890    if input.is_none() {
891        return ::std::result::Result::Ok(());
892    }
893    let input = input.as_ref().unwrap();
894
895    validate_aws_Pcryptography_PmaterialProviders_HCacheType(input)?;
896    Ok(())
897}
898pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DkeyStore(
899    input: &::std::option::Option<crate::deps::aws_cryptography_keyStore::client::Client>,
900) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
901    if input.is_none() {
902        return ::std::result::Result::Err(
903            ::aws_smithy_types::error::operation::BuildError::missing_field(
904                "key_store",
905                "key_store is required but was not specified",
906            ),
907        );
908    }
909    if input.is_none() {
910        return ::std::result::Result::Ok(());
911    }
912    let input = input.as_ref().unwrap();
913
914    validate_aws_Pcryptography_PmaterialProviders_HKeyStoreReference(input)?;
915    Ok(())
916}
917pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DpartitionId(
918    input: &::std::option::Option<::std::string::String>,
919) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
920    if input.is_none() {
921        return ::std::result::Result::Ok(());
922    }
923    let input = input.as_ref().unwrap();
924
925    Ok(())
926}
927pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsHierarchicalKeyringInput_DttlSeconds(
928    input: &::std::option::Option<::std::primitive::i64>,
929) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
930    if input.is_none() {
931        return ::std::result::Result::Err(
932            ::aws_smithy_types::error::operation::BuildError::missing_field(
933                "ttl_seconds",
934                "ttl_seconds is required but was not specified",
935            ),
936        );
937    }
938    if input.is_none() {
939        return ::std::result::Result::Ok(());
940    }
941    let input = input.as_ref().unwrap();
942
943    if !(0..).contains(input) {
944        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
945        "ttl_seconds",
946        "ttl_seconds failed to satisfy constraint: Member must be greater than or equal to 0",
947    ));
948    }
949    Ok(())
950}
951pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput(
952    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsKeyringInput,
953) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
954    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsKeyId(
955        &input.r#kms_key_id,
956    )?;
957    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsClient(
958        &input.r#kms_client,
959    )?;
960    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DgrantTokens(
961        &input.r#grant_tokens,
962    )?;
963    Ok(())
964}
965pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsKeyring(
966    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_keyring::CreateAwsKmsKeyringInput,
967) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
968    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsKeyId(
969        &input.r#kms_key_id,
970    )?;
971    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsClient(
972        &input.r#kms_client,
973    )?;
974    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DgrantTokens(
975        &input.r#grant_tokens,
976    )?;
977    Ok(())
978}
979pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DgrantTokens(
980    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
981) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
982    if input.is_none() {
983        return ::std::result::Result::Ok(());
984    }
985    let input = input.as_ref().unwrap();
986
987    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
988    Ok(())
989}
990pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsClient(
991    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
992) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
993    if input.is_none() {
994        return ::std::result::Result::Err(
995            ::aws_smithy_types::error::operation::BuildError::missing_field(
996                "kms_client",
997                "kms_client is required but was not specified",
998            ),
999        );
1000    }
1001    if input.is_none() {
1002        return ::std::result::Result::Ok(());
1003    }
1004    let input = input.as_ref().unwrap();
1005
1006    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
1007    Ok(())
1008}
1009pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsKeyringInput_DkmsKeyId(
1010    input: &::std::option::Option<::std::string::String>,
1011) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1012    if input.is_none() {
1013        return ::std::result::Result::Err(
1014            ::aws_smithy_types::error::operation::BuildError::missing_field(
1015                "kms_key_id",
1016                "kms_key_id is required but was not specified",
1017            ),
1018        );
1019    }
1020    if input.is_none() {
1021        return ::std::result::Result::Ok(());
1022    }
1023    let input = input.as_ref().unwrap();
1024
1025    Ok(())
1026}
1027pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput(
1028    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsMrkDiscoveryKeyringInput,
1029) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1030    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DkmsClient(
1031        &input.r#kms_client,
1032    )?;
1033    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
1034    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
1035    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_Dregion(
1036        &input.r#region,
1037    )?;
1038    Ok(())
1039}
1040pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryKeyring(
1041    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_mrk_discovery_keyring::CreateAwsKmsMrkDiscoveryKeyringInput,
1042) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1043    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DkmsClient(
1044        &input.r#kms_client,
1045    )?;
1046    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
1047    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
1048    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_Dregion(
1049        &input.r#region,
1050    )?;
1051    Ok(())
1052}
1053pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DdiscoveryFilter(
1054    input: &::std::option::Option<
1055        crate::deps::aws_cryptography_materialProviders::types::DiscoveryFilter,
1056    >,
1057) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1058    if input.is_none() {
1059        return ::std::result::Result::Ok(());
1060    }
1061    let input = input.as_ref().unwrap();
1062
1063    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter(input)?;
1064    Ok(())
1065}
1066pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DgrantTokens(
1067    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1068) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1069    if input.is_none() {
1070        return ::std::result::Result::Ok(());
1071    }
1072    let input = input.as_ref().unwrap();
1073
1074    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1075    Ok(())
1076}
1077pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_DkmsClient(
1078    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
1079) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1080    if input.is_none() {
1081        return ::std::result::Result::Err(
1082            ::aws_smithy_types::error::operation::BuildError::missing_field(
1083                "kms_client",
1084                "kms_client is required but was not specified",
1085            ),
1086        );
1087    }
1088    if input.is_none() {
1089        return ::std::result::Result::Ok(());
1090    }
1091    let input = input.as_ref().unwrap();
1092
1093    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
1094    Ok(())
1095}
1096pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryKeyringInput_Dregion(
1097    input: &::std::option::Option<::std::string::String>,
1098) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1099    if input.is_none() {
1100        return ::std::result::Result::Err(
1101            ::aws_smithy_types::error::operation::BuildError::missing_field(
1102                "region",
1103                "region is required but was not specified",
1104            ),
1105        );
1106    }
1107    if input.is_none() {
1108        return ::std::result::Result::Ok(());
1109    }
1110    let input = input.as_ref().unwrap();
1111
1112    Ok(())
1113}
1114pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput(
1115    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsMrkDiscoveryMultiKeyringInput,
1116) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1117    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_Dregions(&input.r#regions)?;
1118    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
1119    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
1120    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
1121    Ok(())
1122}
1123pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryMultiKeyring(
1124    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_mrk_discovery_multi_keyring::CreateAwsKmsMrkDiscoveryMultiKeyringInput,
1125) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1126    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_Dregions(&input.r#regions)?;
1127    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DdiscoveryFilter(&input.r#discovery_filter)?;
1128    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
1129    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DgrantTokens(&input.r#grant_tokens)?;
1130    Ok(())
1131}
1132pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DclientSupplier(
1133    input: &::std::option::Option<
1134        crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1135    >,
1136) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1137    if input.is_none() {
1138        return ::std::result::Result::Ok(());
1139    }
1140    let input = input.as_ref().unwrap();
1141
1142    validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(input)?;
1143    Ok(())
1144}
1145pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DdiscoveryFilter(
1146    input: &::std::option::Option<
1147        crate::deps::aws_cryptography_materialProviders::types::DiscoveryFilter,
1148    >,
1149) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1150    if input.is_none() {
1151        return ::std::result::Result::Ok(());
1152    }
1153    let input = input.as_ref().unwrap();
1154
1155    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter(input)?;
1156    Ok(())
1157}
1158pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_DgrantTokens(
1159    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1160) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1161    if input.is_none() {
1162        return ::std::result::Result::Ok(());
1163    }
1164    let input = input.as_ref().unwrap();
1165
1166    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1167    Ok(())
1168}
1169pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkDiscoveryMultiKeyringInput_Dregions(
1170    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1171) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1172    if input.is_none() {
1173        return ::std::result::Result::Err(
1174            ::aws_smithy_types::error::operation::BuildError::missing_field(
1175                "regions",
1176                "regions is required but was not specified",
1177            ),
1178        );
1179    }
1180    if input.is_none() {
1181        return ::std::result::Result::Ok(());
1182    }
1183    let input = input.as_ref().unwrap();
1184
1185    validate_aws_Pcryptography_PmaterialProviders_HRegionList(input)?;
1186    Ok(())
1187}
1188pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput(
1189    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsMrkKeyringInput,
1190) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1191    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsKeyId(
1192        &input.r#kms_key_id,
1193    )?;
1194    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsClient(
1195        &input.r#kms_client,
1196    )?;
1197    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DgrantTokens(
1198        &input.r#grant_tokens,
1199    )?;
1200    Ok(())
1201}
1202pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkKeyring(
1203    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_mrk_keyring::CreateAwsKmsMrkKeyringInput,
1204) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1205    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsKeyId(
1206        &input.r#kms_key_id,
1207    )?;
1208    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsClient(
1209        &input.r#kms_client,
1210    )?;
1211    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DgrantTokens(
1212        &input.r#grant_tokens,
1213    )?;
1214    Ok(())
1215}
1216pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DgrantTokens(
1217    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1218) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1219    if input.is_none() {
1220        return ::std::result::Result::Ok(());
1221    }
1222    let input = input.as_ref().unwrap();
1223
1224    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1225    Ok(())
1226}
1227pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsClient(
1228    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
1229) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1230    if input.is_none() {
1231        return ::std::result::Result::Err(
1232            ::aws_smithy_types::error::operation::BuildError::missing_field(
1233                "kms_client",
1234                "kms_client is required but was not specified",
1235            ),
1236        );
1237    }
1238    if input.is_none() {
1239        return ::std::result::Result::Ok(());
1240    }
1241    let input = input.as_ref().unwrap();
1242
1243    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
1244    Ok(())
1245}
1246pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkKeyringInput_DkmsKeyId(
1247    input: &::std::option::Option<::std::string::String>,
1248) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1249    if input.is_none() {
1250        return ::std::result::Result::Err(
1251            ::aws_smithy_types::error::operation::BuildError::missing_field(
1252                "kms_key_id",
1253                "kms_key_id is required but was not specified",
1254            ),
1255        );
1256    }
1257    if input.is_none() {
1258        return ::std::result::Result::Ok(());
1259    }
1260    let input = input.as_ref().unwrap();
1261
1262    Ok(())
1263}
1264pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput(
1265    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsMrkMultiKeyringInput,
1266) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1267    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_Dgenerator(
1268        &input.r#generator,
1269    )?;
1270    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DkmsKeyIds(
1271        &input.r#kms_key_ids,
1272    )?;
1273    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
1274    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DgrantTokens(
1275        &input.r#grant_tokens,
1276    )?;
1277    Ok(())
1278}
1279pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkMultiKeyring(
1280    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_mrk_multi_keyring::CreateAwsKmsMrkMultiKeyringInput,
1281) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1282    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_Dgenerator(
1283        &input.r#generator,
1284    )?;
1285    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DkmsKeyIds(
1286        &input.r#kms_key_ids,
1287    )?;
1288    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DclientSupplier(&input.r#client_supplier)?;
1289    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DgrantTokens(
1290        &input.r#grant_tokens,
1291    )?;
1292    Ok(())
1293}
1294pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DclientSupplier(
1295    input: &::std::option::Option<
1296        crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1297    >,
1298) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1299    if input.is_none() {
1300        return ::std::result::Result::Ok(());
1301    }
1302    let input = input.as_ref().unwrap();
1303
1304    validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(input)?;
1305    Ok(())
1306}
1307pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_Dgenerator(
1308    input: &::std::option::Option<::std::string::String>,
1309) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1310    if input.is_none() {
1311        return ::std::result::Result::Ok(());
1312    }
1313    let input = input.as_ref().unwrap();
1314
1315    Ok(())
1316}
1317pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DgrantTokens(
1318    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1319) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1320    if input.is_none() {
1321        return ::std::result::Result::Ok(());
1322    }
1323    let input = input.as_ref().unwrap();
1324
1325    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1326    Ok(())
1327}
1328pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMrkMultiKeyringInput_DkmsKeyIds(
1329    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1330) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1331    if input.is_none() {
1332        return ::std::result::Result::Ok(());
1333    }
1334    let input = input.as_ref().unwrap();
1335
1336    validate_aws_Pcryptography_PmaterialProviders_HKmsKeyIdList(input)?;
1337    Ok(())
1338}
1339pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput(
1340    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsMultiKeyringInput,
1341) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1342    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_Dgenerator(
1343        &input.r#generator,
1344    )?;
1345    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DkmsKeyIds(
1346        &input.r#kms_key_ids,
1347    )?;
1348    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DclientSupplier(
1349        &input.r#client_supplier,
1350    )?;
1351    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DgrantTokens(
1352        &input.r#grant_tokens,
1353    )?;
1354    Ok(())
1355}
1356pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMultiKeyring(
1357    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_multi_keyring::CreateAwsKmsMultiKeyringInput,
1358) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1359    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_Dgenerator(
1360        &input.r#generator,
1361    )?;
1362    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DkmsKeyIds(
1363        &input.r#kms_key_ids,
1364    )?;
1365    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DclientSupplier(
1366        &input.r#client_supplier,
1367    )?;
1368    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DgrantTokens(
1369        &input.r#grant_tokens,
1370    )?;
1371    Ok(())
1372}
1373pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DclientSupplier(
1374    input: &::std::option::Option<
1375        crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1376    >,
1377) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1378    if input.is_none() {
1379        return ::std::result::Result::Ok(());
1380    }
1381    let input = input.as_ref().unwrap();
1382
1383    validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(input)?;
1384    Ok(())
1385}
1386pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_Dgenerator(
1387    input: &::std::option::Option<::std::string::String>,
1388) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1389    if input.is_none() {
1390        return ::std::result::Result::Ok(());
1391    }
1392    let input = input.as_ref().unwrap();
1393
1394    Ok(())
1395}
1396pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DgrantTokens(
1397    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1398) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1399    if input.is_none() {
1400        return ::std::result::Result::Ok(());
1401    }
1402    let input = input.as_ref().unwrap();
1403
1404    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1405    Ok(())
1406}
1407pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsMultiKeyringInput_DkmsKeyIds(
1408    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1409) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1410    if input.is_none() {
1411        return ::std::result::Result::Ok(());
1412    }
1413    let input = input.as_ref().unwrap();
1414
1415    validate_aws_Pcryptography_PmaterialProviders_HKmsKeyIdList(input)?;
1416    Ok(())
1417}
1418pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput(
1419    input: &crate::deps::aws_cryptography_materialProviders::types::CreateAwsKmsRsaKeyringInput,
1420) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1421    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DpublicKey(
1422        &input.r#public_key,
1423    )?;
1424    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsKeyId(
1425        &input.r#kms_key_id,
1426    )?;
1427    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DencryptionAlgorithm(&input.r#encryption_algorithm)?;
1428    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsClient(
1429        &input.r#kms_client,
1430    )?;
1431    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DgrantTokens(
1432        &input.r#grant_tokens,
1433    )?;
1434    Ok(())
1435}
1436pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_for_AwsCryptographicMaterialProviders_CreateAwsKmsRsaKeyring(
1437    input: &crate::deps::aws_cryptography_materialProviders::operation::create_aws_kms_rsa_keyring::CreateAwsKmsRsaKeyringInput,
1438) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1439    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DpublicKey(
1440        &input.r#public_key,
1441    )?;
1442    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsKeyId(
1443        &input.r#kms_key_id,
1444    )?;
1445    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DencryptionAlgorithm(&input.r#encryption_algorithm)?;
1446    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsClient(
1447        &input.r#kms_client,
1448    )?;
1449    validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DgrantTokens(
1450        &input.r#grant_tokens,
1451    )?;
1452    Ok(())
1453}
1454pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DencryptionAlgorithm(
1455    input: &::std::option::Option<aws_sdk_kms::types::EncryptionAlgorithmSpec>,
1456) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1457    if input.is_none() {
1458        return ::std::result::Result::Err(
1459            ::aws_smithy_types::error::operation::BuildError::missing_field(
1460                "encryption_algorithm",
1461                "encryption_algorithm is required but was not specified",
1462            ),
1463        );
1464    }
1465    if input.is_none() {
1466        return ::std::result::Result::Ok(());
1467    }
1468    let input = input.as_ref().unwrap();
1469
1470    Ok(())
1471}
1472pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DgrantTokens(
1473    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
1474) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1475    if input.is_none() {
1476        return ::std::result::Result::Ok(());
1477    }
1478    let input = input.as_ref().unwrap();
1479
1480    validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(input)?;
1481    Ok(())
1482}
1483pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsClient(
1484    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
1485) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1486    if input.is_none() {
1487        return ::std::result::Result::Ok(());
1488    }
1489    let input = input.as_ref().unwrap();
1490
1491    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
1492    Ok(())
1493}
1494pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DkmsKeyId(
1495    input: &::std::option::Option<::std::string::String>,
1496) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1497    if input.is_none() {
1498        return ::std::result::Result::Err(
1499            ::aws_smithy_types::error::operation::BuildError::missing_field(
1500                "kms_key_id",
1501                "kms_key_id is required but was not specified",
1502            ),
1503        );
1504    }
1505    if input.is_none() {
1506        return ::std::result::Result::Ok(());
1507    }
1508    let input = input.as_ref().unwrap();
1509
1510    Ok(())
1511}
1512pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateAwsKmsRsaKeyringInput_DpublicKey(
1513    input: &::std::option::Option<::aws_smithy_types::Blob>,
1514) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1515    if input.is_none() {
1516        return ::std::result::Result::Ok(());
1517    }
1518    let input = input.as_ref().unwrap();
1519
1520    Ok(())
1521}
1522pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheInput(
1523    input: &crate::deps::aws_cryptography_materialProviders::types::CreateCryptographicMaterialsCacheInput,
1524) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1525    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheInput_Dcache(
1526        &input.r#cache,
1527    )?;
1528    Ok(())
1529}
1530pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheInput_for_AwsCryptographicMaterialProviders_CreateCryptographicMaterialsCache(
1531    input: &crate::deps::aws_cryptography_materialProviders::operation::create_cryptographic_materials_cache::CreateCryptographicMaterialsCacheInput,
1532) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1533    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheInput_Dcache(
1534        &input.r#cache,
1535    )?;
1536    Ok(())
1537}
1538pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheInput_Dcache(
1539    input: &::std::option::Option<
1540        crate::deps::aws_cryptography_materialProviders::types::CacheType,
1541    >,
1542) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1543    if input.is_none() {
1544        return ::std::result::Result::Err(
1545            ::aws_smithy_types::error::operation::BuildError::missing_field(
1546                "cache",
1547                "cache is required but was not specified",
1548            ),
1549        );
1550    }
1551    if input.is_none() {
1552        return ::std::result::Result::Ok(());
1553    }
1554    let input = input.as_ref().unwrap();
1555
1556    validate_aws_Pcryptography_PmaterialProviders_HCacheType(input)?;
1557    Ok(())
1558}
1559pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheOutput(
1560    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_cache::CryptographicMaterialsCacheRef,
1561) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1562    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheOutput_DmaterialsCache(&Some(input.clone()))?;
1563    Ok(())
1564}
1565pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheOutput_for_AwsCryptographicMaterialProviders_CreateCryptographicMaterialsCache(
1566    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_cache::CryptographicMaterialsCacheRef,
1567) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1568    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheOutput_DmaterialsCache(&Some(input.clone()))?;
1569    Ok(())
1570}
1571pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsCacheOutput_DmaterialsCache(
1572    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_cache::CryptographicMaterialsCacheRef>,
1573) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1574    if input.is_none() {
1575        return ::std::result::Result::Err(
1576            ::aws_smithy_types::error::operation::BuildError::missing_field(
1577                "materials_cache",
1578                "materials_cache is required but was not specified",
1579            ),
1580        );
1581    }
1582    if input.is_none() {
1583        return ::std::result::Result::Ok(());
1584    }
1585    let input = input.as_ref().unwrap();
1586
1587    validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsCacheReference(input)?;
1588    Ok(())
1589}
1590pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsManagerOutput(
1591    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef,
1592) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1593    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsManagerOutput_DmaterialsManager(&Some(input.clone()))?;
1594    Ok(())
1595}
1596pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsManagerOutput_for_AwsCryptographicMaterialProviders_CreateDefaultCryptographicMaterialsManager(
1597    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef,
1598) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1599    validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsManagerOutput_DmaterialsManager(&Some(input.clone()))?;
1600    Ok(())
1601}
1602pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateCryptographicMaterialsManagerOutput_DmaterialsManager(
1603    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef>,
1604) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1605    if input.is_none() {
1606        return ::std::result::Result::Err(
1607            ::aws_smithy_types::error::operation::BuildError::missing_field(
1608                "materials_manager",
1609                "materials_manager is required but was not specified",
1610            ),
1611        );
1612    }
1613    if input.is_none() {
1614        return ::std::result::Result::Ok(());
1615    }
1616    let input = input.as_ref().unwrap();
1617
1618    validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsManagerReference(input)?;
1619    Ok(())
1620}
1621pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierInput(
1622    input: &crate::deps::aws_cryptography_materialProviders::types::CreateDefaultClientSupplierInput,
1623) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1624    Ok(())
1625}
1626pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierInput_for_AwsCryptographicMaterialProviders_CreateDefaultClientSupplier(
1627    input: &crate::deps::aws_cryptography_materialProviders::operation::create_default_client_supplier::CreateDefaultClientSupplierInput,
1628) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1629    Ok(())
1630}
1631pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierOutput(
1632    input: &crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1633) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1634    validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierOutput_Dclient(
1635        &Some(input.clone()),
1636    )?;
1637    Ok(())
1638}
1639pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierOutput_for_AwsCryptographicMaterialProviders_CreateDefaultClientSupplier(
1640    input: &crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1641) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1642    validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierOutput_Dclient(
1643        &Some(input.clone()),
1644    )?;
1645    Ok(())
1646}
1647pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultClientSupplierOutput_Dclient(
1648    input: &::std::option::Option<
1649        crate::deps::aws_cryptography_materialProviders::types::client_supplier::ClientSupplierRef,
1650    >,
1651) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1652    if input.is_none() {
1653        return ::std::result::Result::Err(
1654            ::aws_smithy_types::error::operation::BuildError::missing_field(
1655                "client",
1656                "client is required but was not specified",
1657            ),
1658        );
1659    }
1660    if input.is_none() {
1661        return ::std::result::Result::Ok(());
1662    }
1663    let input = input.as_ref().unwrap();
1664
1665    validate_aws_Pcryptography_PmaterialProviders_HClientSupplierReference(input)?;
1666    Ok(())
1667}
1668pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultCryptographicMaterialsManagerInput(
1669    input: &crate::deps::aws_cryptography_materialProviders::types::CreateDefaultCryptographicMaterialsManagerInput,
1670) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1671    validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultCryptographicMaterialsManagerInput_Dkeyring(&input.r#keyring)?;
1672    Ok(())
1673}
1674pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultCryptographicMaterialsManagerInput_for_AwsCryptographicMaterialProviders_CreateDefaultCryptographicMaterialsManager(
1675    input: &crate::deps::aws_cryptography_materialProviders::operation::create_default_cryptographic_materials_manager::CreateDefaultCryptographicMaterialsManagerInput,
1676) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1677    validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultCryptographicMaterialsManagerInput_Dkeyring(&input.r#keyring)?;
1678    Ok(())
1679}
1680pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateDefaultCryptographicMaterialsManagerInput_Dkeyring(
1681    input: &::std::option::Option<
1682        crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1683    >,
1684) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1685    if input.is_none() {
1686        return ::std::result::Result::Err(
1687            ::aws_smithy_types::error::operation::BuildError::missing_field(
1688                "keyring",
1689                "keyring is required but was not specified",
1690            ),
1691        );
1692    }
1693    if input.is_none() {
1694        return ::std::result::Result::Ok(());
1695    }
1696    let input = input.as_ref().unwrap();
1697
1698    validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(input)?;
1699    Ok(())
1700}
1701pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput(
1702    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1703) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1704    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1705        input.clone(),
1706    ))?;
1707    Ok(())
1708}
1709pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawEcdhKeyring(
1710    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1711) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1712    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1713        input.clone(),
1714    ))?;
1715    Ok(())
1716}
1717pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsKeyring(
1718    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1719) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1720    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1721        input.clone(),
1722    ))?;
1723    Ok(())
1724}
1725pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsHierarchicalKeyring(
1726    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1727) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1728    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1729        input.clone(),
1730    ))?;
1731    Ok(())
1732}
1733pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawRsaKeyring(
1734    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1735) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1736    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1737        input.clone(),
1738    ))?;
1739    Ok(())
1740}
1741pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryKeyring(
1742    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1743) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1744    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1745        input.clone(),
1746    ))?;
1747    Ok(())
1748}
1749pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawAesKeyring(
1750    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1751) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1752    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1753        input.clone(),
1754    ))?;
1755    Ok(())
1756}
1757pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkKeyring(
1758    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1759) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1760    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1761        input.clone(),
1762    ))?;
1763    Ok(())
1764}
1765pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsRsaKeyring(
1766    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1767) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1768    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1769        input.clone(),
1770    ))?;
1771    Ok(())
1772}
1773pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryKeyring(
1774    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1775) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1776    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1777        input.clone(),
1778    ))?;
1779    Ok(())
1780}
1781pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkMultiKeyring(
1782    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1783) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1784    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1785        input.clone(),
1786    ))?;
1787    Ok(())
1788}
1789pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryMultiKeyring(
1790    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1791) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1792    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1793        input.clone(),
1794    ))?;
1795    Ok(())
1796}
1797pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsEcdhKeyring(
1798    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1799) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1800    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1801        input.clone(),
1802    ))?;
1803    Ok(())
1804}
1805pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMultiKeyring(
1806    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1807) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1808    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1809        input.clone(),
1810    ))?;
1811    Ok(())
1812}
1813pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateMultiKeyring(
1814    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1815) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1816    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1817        input.clone(),
1818    ))?;
1819    Ok(())
1820}
1821pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryMultiKeyring(
1822    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1823) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1824    validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some(
1825        input.clone(),
1826    ))?;
1827    Ok(())
1828}
1829pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(
1830    input: &::std::option::Option<
1831        crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1832    >,
1833) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1834    if input.is_none() {
1835        return ::std::result::Result::Err(
1836            ::aws_smithy_types::error::operation::BuildError::missing_field(
1837                "keyring",
1838                "keyring is required but was not specified",
1839            ),
1840        );
1841    }
1842    if input.is_none() {
1843        return ::std::result::Result::Ok(());
1844    }
1845    let input = input.as_ref().unwrap();
1846
1847    validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(input)?;
1848    Ok(())
1849}
1850pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput(
1851    input: &crate::deps::aws_cryptography_materialProviders::types::CreateMultiKeyringInput,
1852) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1853    validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_Dgenerator(
1854        &input.r#generator,
1855    )?;
1856    validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_DchildKeyrings(
1857        &input.r#child_keyrings,
1858    )?;
1859    Ok(())
1860}
1861pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_for_AwsCryptographicMaterialProviders_CreateMultiKeyring(
1862    input: &crate::deps::aws_cryptography_materialProviders::operation::create_multi_keyring::CreateMultiKeyringInput,
1863) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1864    validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_Dgenerator(
1865        &input.r#generator,
1866    )?;
1867    validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_DchildKeyrings(
1868        &input.r#child_keyrings,
1869    )?;
1870    Ok(())
1871}
1872pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_DchildKeyrings(
1873    input: &::std::option::Option<
1874        ::std::vec::Vec<
1875            crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1876        >,
1877    >,
1878) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1879    if input.is_none() {
1880        return ::std::result::Result::Err(
1881            ::aws_smithy_types::error::operation::BuildError::missing_field(
1882                "child_keyrings",
1883                "child_keyrings is required but was not specified",
1884            ),
1885        );
1886    }
1887    if input.is_none() {
1888        return ::std::result::Result::Ok(());
1889    }
1890    let input = input.as_ref().unwrap();
1891
1892    validate_aws_Pcryptography_PmaterialProviders_HKeyringList(input)?;
1893    Ok(())
1894}
1895pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateMultiKeyringInput_Dgenerator(
1896    input: &::std::option::Option<
1897        crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
1898    >,
1899) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1900    if input.is_none() {
1901        return ::std::result::Result::Ok(());
1902    }
1903    let input = input.as_ref().unwrap();
1904
1905    validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(input)?;
1906    Ok(())
1907}
1908pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput(
1909    input: &crate::deps::aws_cryptography_materialProviders::types::CreateRawAesKeyringInput,
1910) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1911    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyNamespace(
1912        &input.r#key_namespace,
1913    )?;
1914    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyName(
1915        &input.r#key_name,
1916    )?;
1917    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingKey(
1918        &input.r#wrapping_key,
1919    )?;
1920    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingAlg(
1921        &input.r#wrapping_alg,
1922    )?;
1923    Ok(())
1924}
1925pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_for_AwsCryptographicMaterialProviders_CreateRawAesKeyring(
1926    input: &crate::deps::aws_cryptography_materialProviders::operation::create_raw_aes_keyring::CreateRawAesKeyringInput,
1927) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1928    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyNamespace(
1929        &input.r#key_namespace,
1930    )?;
1931    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyName(
1932        &input.r#key_name,
1933    )?;
1934    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingKey(
1935        &input.r#wrapping_key,
1936    )?;
1937    validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingAlg(
1938        &input.r#wrapping_alg,
1939    )?;
1940    Ok(())
1941}
1942pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyName(
1943    input: &::std::option::Option<::std::string::String>,
1944) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1945    if input.is_none() {
1946        return ::std::result::Result::Err(
1947            ::aws_smithy_types::error::operation::BuildError::missing_field(
1948                "key_name",
1949                "key_name is required but was not specified",
1950            ),
1951        );
1952    }
1953    if input.is_none() {
1954        return ::std::result::Result::Ok(());
1955    }
1956    let input = input.as_ref().unwrap();
1957
1958    Ok(())
1959}
1960pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DkeyNamespace(
1961    input: &::std::option::Option<::std::string::String>,
1962) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1963    if input.is_none() {
1964        return ::std::result::Result::Err(
1965            ::aws_smithy_types::error::operation::BuildError::missing_field(
1966                "key_namespace",
1967                "key_namespace is required but was not specified",
1968            ),
1969        );
1970    }
1971    if input.is_none() {
1972        return ::std::result::Result::Ok(());
1973    }
1974    let input = input.as_ref().unwrap();
1975
1976    Ok(())
1977}
1978pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingAlg(
1979    input: &::std::option::Option<
1980        crate::deps::aws_cryptography_materialProviders::types::AesWrappingAlg,
1981    >,
1982) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
1983    if input.is_none() {
1984        return ::std::result::Result::Err(
1985            ::aws_smithy_types::error::operation::BuildError::missing_field(
1986                "wrapping_alg",
1987                "wrapping_alg is required but was not specified",
1988            ),
1989        );
1990    }
1991    if input.is_none() {
1992        return ::std::result::Result::Ok(());
1993    }
1994    let input = input.as_ref().unwrap();
1995
1996    Ok(())
1997}
1998pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawAesKeyringInput_DwrappingKey(
1999    input: &::std::option::Option<::aws_smithy_types::Blob>,
2000) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2001    if input.is_none() {
2002        return ::std::result::Result::Err(
2003            ::aws_smithy_types::error::operation::BuildError::missing_field(
2004                "wrapping_key",
2005                "wrapping_key is required but was not specified",
2006            ),
2007        );
2008    }
2009    if input.is_none() {
2010        return ::std::result::Result::Ok(());
2011    }
2012    let input = input.as_ref().unwrap();
2013
2014    Ok(())
2015}
2016pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput(
2017    input: &crate::deps::aws_cryptography_materialProviders::types::CreateRawEcdhKeyringInput,
2018) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2019    validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DKeyAgreementScheme(
2020        &input.r#key_agreement_scheme,
2021    )?;
2022    validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DcurveSpec(
2023        &input.r#curve_spec,
2024    )?;
2025    Ok(())
2026}
2027pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_for_AwsCryptographicMaterialProviders_CreateRawEcdhKeyring(
2028    input: &crate::deps::aws_cryptography_materialProviders::operation::create_raw_ecdh_keyring::CreateRawEcdhKeyringInput,
2029) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2030    validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DKeyAgreementScheme(
2031        &input.r#key_agreement_scheme,
2032    )?;
2033    validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DcurveSpec(
2034        &input.r#curve_spec,
2035    )?;
2036    Ok(())
2037}
2038pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DcurveSpec(
2039    input: &::std::option::Option<crate::deps::aws_cryptography_primitives::types::EcdhCurveSpec>,
2040) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2041    if input.is_none() {
2042        return ::std::result::Result::Err(
2043            ::aws_smithy_types::error::operation::BuildError::missing_field(
2044                "curve_spec",
2045                "curve_spec is required but was not specified",
2046            ),
2047        );
2048    }
2049    if input.is_none() {
2050        return ::std::result::Result::Ok(());
2051    }
2052    let input = input.as_ref().unwrap();
2053
2054    Ok(())
2055}
2056pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawEcdhKeyringInput_DKeyAgreementScheme(
2057    input: &::std::option::Option<
2058        crate::deps::aws_cryptography_materialProviders::types::RawEcdhStaticConfigurations,
2059    >,
2060) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2061    if input.is_none() {
2062        return ::std::result::Result::Err(
2063            ::aws_smithy_types::error::operation::BuildError::missing_field(
2064                "key_agreement_scheme",
2065                "key_agreement_scheme is required but was not specified",
2066            ),
2067        );
2068    }
2069    if input.is_none() {
2070        return ::std::result::Result::Ok(());
2071    }
2072    let input = input.as_ref().unwrap();
2073
2074    validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations(input)?;
2075    Ok(())
2076}
2077pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput(
2078    input: &crate::deps::aws_cryptography_materialProviders::types::CreateRawRsaKeyringInput,
2079) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2080    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyNamespace(
2081        &input.r#key_namespace,
2082    )?;
2083    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyName(
2084        &input.r#key_name,
2085    )?;
2086    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpaddingScheme(
2087        &input.r#padding_scheme,
2088    )?;
2089    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpublicKey(
2090        &input.r#public_key,
2091    )?;
2092    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DprivateKey(
2093        &input.r#private_key,
2094    )?;
2095    Ok(())
2096}
2097pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_for_AwsCryptographicMaterialProviders_CreateRawRsaKeyring(
2098    input: &crate::deps::aws_cryptography_materialProviders::operation::create_raw_rsa_keyring::CreateRawRsaKeyringInput,
2099) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2100    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyNamespace(
2101        &input.r#key_namespace,
2102    )?;
2103    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyName(
2104        &input.r#key_name,
2105    )?;
2106    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpaddingScheme(
2107        &input.r#padding_scheme,
2108    )?;
2109    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpublicKey(
2110        &input.r#public_key,
2111    )?;
2112    validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DprivateKey(
2113        &input.r#private_key,
2114    )?;
2115    Ok(())
2116}
2117pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyName(
2118    input: &::std::option::Option<::std::string::String>,
2119) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2120    if input.is_none() {
2121        return ::std::result::Result::Err(
2122            ::aws_smithy_types::error::operation::BuildError::missing_field(
2123                "key_name",
2124                "key_name is required but was not specified",
2125            ),
2126        );
2127    }
2128    if input.is_none() {
2129        return ::std::result::Result::Ok(());
2130    }
2131    let input = input.as_ref().unwrap();
2132
2133    Ok(())
2134}
2135pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DkeyNamespace(
2136    input: &::std::option::Option<::std::string::String>,
2137) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2138    if input.is_none() {
2139        return ::std::result::Result::Err(
2140            ::aws_smithy_types::error::operation::BuildError::missing_field(
2141                "key_namespace",
2142                "key_namespace is required but was not specified",
2143            ),
2144        );
2145    }
2146    if input.is_none() {
2147        return ::std::result::Result::Ok(());
2148    }
2149    let input = input.as_ref().unwrap();
2150
2151    Ok(())
2152}
2153pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpaddingScheme(
2154    input: &::std::option::Option<
2155        crate::deps::aws_cryptography_materialProviders::types::PaddingScheme,
2156    >,
2157) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2158    if input.is_none() {
2159        return ::std::result::Result::Err(
2160            ::aws_smithy_types::error::operation::BuildError::missing_field(
2161                "padding_scheme",
2162                "padding_scheme is required but was not specified",
2163            ),
2164        );
2165    }
2166    if input.is_none() {
2167        return ::std::result::Result::Ok(());
2168    }
2169    let input = input.as_ref().unwrap();
2170
2171    Ok(())
2172}
2173pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DprivateKey(
2174    input: &::std::option::Option<::aws_smithy_types::Blob>,
2175) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2176    if input.is_none() {
2177        return ::std::result::Result::Ok(());
2178    }
2179    let input = input.as_ref().unwrap();
2180
2181    Ok(())
2182}
2183pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRawRsaKeyringInput_DpublicKey(
2184    input: &::std::option::Option<::aws_smithy_types::Blob>,
2185) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2186    if input.is_none() {
2187        return ::std::result::Result::Ok(());
2188    }
2189    let input = input.as_ref().unwrap();
2190
2191    Ok(())
2192}
2193pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput(
2194    input: &crate::deps::aws_cryptography_materialProviders::types::CreateRequiredEncryptionContextCmmInput,
2195) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2196    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DunderlyingCMM(&input.r#underlying_cmm)?;
2197    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_Dkeyring(&input.r#keyring)?;
2198    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2199    Ok(())
2200}
2201pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_for_AwsCryptographicMaterialProviders_CreateRequiredEncryptionContextCMM(
2202    input: &crate::deps::aws_cryptography_materialProviders::operation::create_required_encryption_context_cmm::CreateRequiredEncryptionContextCmmInput,
2203) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2204    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DunderlyingCMM(&input.r#underlying_cmm)?;
2205    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_Dkeyring(&input.r#keyring)?;
2206    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2207    Ok(())
2208}
2209pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_Dkeyring(
2210    input: &::std::option::Option<
2211        crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
2212    >,
2213) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2214    if input.is_none() {
2215        return ::std::result::Result::Ok(());
2216    }
2217    let input = input.as_ref().unwrap();
2218
2219    validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(input)?;
2220    Ok(())
2221}
2222pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DrequiredEncryptionContextKeys(
2223    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
2224) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2225    if input.is_none() {
2226        return ::std::result::Result::Err(
2227            ::aws_smithy_types::error::operation::BuildError::missing_field(
2228                "required_encryption_context_keys",
2229                "required_encryption_context_keys is required but was not specified",
2230            ),
2231        );
2232    }
2233    if input.is_none() {
2234        return ::std::result::Result::Ok(());
2235    }
2236    let input = input.as_ref().unwrap();
2237
2238    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
2239    Ok(())
2240}
2241pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMInput_DunderlyingCMM(
2242    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef>,
2243) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2244    if input.is_none() {
2245        return ::std::result::Result::Ok(());
2246    }
2247    let input = input.as_ref().unwrap();
2248
2249    validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsManagerReference(input)?;
2250    Ok(())
2251}
2252pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMOutput(
2253    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef,
2254) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2255    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMOutput_DmaterialsManager(&Some(input.clone()))?;
2256    Ok(())
2257}
2258pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMOutput_for_AwsCryptographicMaterialProviders_CreateRequiredEncryptionContextCMM(
2259    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef,
2260) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2261    validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMOutput_DmaterialsManager(&Some(input.clone()))?;
2262    Ok(())
2263}
2264pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateRequiredEncryptionContextCMMOutput_DmaterialsManager(
2265    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef>,
2266) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2267    if input.is_none() {
2268        return ::std::result::Result::Err(
2269            ::aws_smithy_types::error::operation::BuildError::missing_field(
2270                "materials_manager",
2271                "materials_manager is required but was not specified",
2272            ),
2273        );
2274    }
2275    if input.is_none() {
2276        return ::std::result::Result::Ok(());
2277    }
2278    let input = input.as_ref().unwrap();
2279
2280    validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsManagerReference(input)?;
2281    Ok(())
2282}
2283pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsCacheReference(
2284    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_cache::CryptographicMaterialsCacheRef,
2285) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2286    Ok(())
2287}
2288pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCryptographicMaterialsManagerReference(
2289    input: &crate::deps::aws_cryptography_materialProviders::types::cryptographic_materials_manager::CryptographicMaterialsManagerRef,
2290) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2291    Ok(())
2292}
2293pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(
2294    input: &crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
2295) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2296    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DalgorithmSuite(
2297        &input.r#algorithm_suite,
2298    )?;
2299    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DencryptionContext(
2300        &input.r#encryption_context,
2301    )?;
2302    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2303    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DplaintextDataKey(
2304        &input.r#plaintext_data_key,
2305    )?;
2306    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DverificationKey(
2307        &input.r#verification_key,
2308    )?;
2309    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DsymmetricSigningKey(
2310        &input.r#symmetric_signing_key,
2311    )?;
2312    Ok(())
2313}
2314pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_for_AwsCryptographicMaterialProviders_DecryptionMaterialsWithPlaintextDataKey(
2315    input: &crate::deps::aws_cryptography_materialProviders::operation::decryption_materials_with_plaintext_data_key::DecryptionMaterials,
2316) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2317    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DalgorithmSuite(
2318        &input.r#algorithm_suite,
2319    )?;
2320    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DencryptionContext(
2321        &input.r#encryption_context,
2322    )?;
2323    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2324    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DplaintextDataKey(
2325        &input.r#plaintext_data_key,
2326    )?;
2327    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DverificationKey(
2328        &input.r#verification_key,
2329    )?;
2330    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DsymmetricSigningKey(
2331        &input.r#symmetric_signing_key,
2332    )?;
2333    Ok(())
2334}
2335pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DalgorithmSuite(
2336    input: &::std::option::Option<
2337        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteInfo,
2338    >,
2339) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2340    if input.is_none() {
2341        return ::std::result::Result::Err(
2342            ::aws_smithy_types::error::operation::BuildError::missing_field(
2343                "algorithm_suite",
2344                "algorithm_suite is required but was not specified",
2345            ),
2346        );
2347    }
2348    if input.is_none() {
2349        return ::std::result::Result::Ok(());
2350    }
2351    let input = input.as_ref().unwrap();
2352
2353    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo(input)?;
2354    Ok(())
2355}
2356pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DencryptionContext(
2357    input: &::std::option::Option<
2358        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
2359    >,
2360) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2361    if input.is_none() {
2362        return ::std::result::Result::Err(
2363            ::aws_smithy_types::error::operation::BuildError::missing_field(
2364                "encryption_context",
2365                "encryption_context is required but was not specified",
2366            ),
2367        );
2368    }
2369    if input.is_none() {
2370        return ::std::result::Result::Ok(());
2371    }
2372    let input = input.as_ref().unwrap();
2373
2374    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
2375    Ok(())
2376}
2377pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DplaintextDataKey(
2378    input: &::std::option::Option<::aws_smithy_types::Blob>,
2379) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2380    if input.is_none() {
2381        return ::std::result::Result::Ok(());
2382    }
2383    let input = input.as_ref().unwrap();
2384
2385    Ok(())
2386}
2387pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DrequiredEncryptionContextKeys(
2388    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
2389) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2390    if input.is_none() {
2391        return ::std::result::Result::Err(
2392            ::aws_smithy_types::error::operation::BuildError::missing_field(
2393                "required_encryption_context_keys",
2394                "required_encryption_context_keys is required but was not specified",
2395            ),
2396        );
2397    }
2398    if input.is_none() {
2399        return ::std::result::Result::Ok(());
2400    }
2401    let input = input.as_ref().unwrap();
2402
2403    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
2404    Ok(())
2405}
2406pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DsymmetricSigningKey(
2407    input: &::std::option::Option<::aws_smithy_types::Blob>,
2408) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2409    if input.is_none() {
2410        return ::std::result::Result::Ok(());
2411    }
2412    let input = input.as_ref().unwrap();
2413
2414    Ok(())
2415}
2416pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials_DverificationKey(
2417    input: &::std::option::Option<::aws_smithy_types::Blob>,
2418) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2419    if input.is_none() {
2420        return ::std::result::Result::Ok(());
2421    }
2422    let input = input.as_ref().unwrap();
2423
2424    Ok(())
2425}
2426pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput(
2427    input: &crate::deps::aws_cryptography_materialProviders::types::DecryptMaterialsInput,
2428) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2429    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DalgorithmSuiteId(
2430        &input.r#algorithm_suite_id,
2431    )?;
2432    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DcommitmentPolicy(
2433        &input.r#commitment_policy,
2434    )?;
2435    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptedDataKeys(
2436        &input.r#encrypted_data_keys,
2437    )?;
2438    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptionContext(
2439        &input.r#encryption_context,
2440    )?;
2441    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DreproducedEncryptionContext(&input.r#reproduced_encryption_context)?;
2442    Ok(())
2443}
2444pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_for_CryptographicMaterialsManager_DecryptMaterials(
2445    input: &crate::deps::aws_cryptography_materialProviders::operation::decrypt_materials::DecryptMaterialsInput,
2446) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2447    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DalgorithmSuiteId(
2448        &input.r#algorithm_suite_id,
2449    )?;
2450    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DcommitmentPolicy(
2451        &input.r#commitment_policy,
2452    )?;
2453    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptedDataKeys(
2454        &input.r#encrypted_data_keys,
2455    )?;
2456    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptionContext(
2457        &input.r#encryption_context,
2458    )?;
2459    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DreproducedEncryptionContext(&input.r#reproduced_encryption_context)?;
2460    Ok(())
2461}
2462pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DalgorithmSuiteId(
2463    input: &::std::option::Option<
2464        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
2465    >,
2466) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2467    if input.is_none() {
2468        return ::std::result::Result::Err(
2469            ::aws_smithy_types::error::operation::BuildError::missing_field(
2470                "algorithm_suite_id",
2471                "algorithm_suite_id is required but was not specified",
2472            ),
2473        );
2474    }
2475    if input.is_none() {
2476        return ::std::result::Result::Ok(());
2477    }
2478    let input = input.as_ref().unwrap();
2479
2480    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
2481    Ok(())
2482}
2483pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DcommitmentPolicy(
2484    input: &::std::option::Option<
2485        crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy,
2486    >,
2487) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2488    if input.is_none() {
2489        return ::std::result::Result::Err(
2490            ::aws_smithy_types::error::operation::BuildError::missing_field(
2491                "commitment_policy",
2492                "commitment_policy is required but was not specified",
2493            ),
2494        );
2495    }
2496    if input.is_none() {
2497        return ::std::result::Result::Ok(());
2498    }
2499    let input = input.as_ref().unwrap();
2500
2501    validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy(input)?;
2502    Ok(())
2503}
2504pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptedDataKeys(
2505    input: &::std::option::Option<
2506        ::std::vec::Vec<crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey>,
2507    >,
2508) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2509    if input.is_none() {
2510        return ::std::result::Result::Err(
2511            ::aws_smithy_types::error::operation::BuildError::missing_field(
2512                "encrypted_data_keys",
2513                "encrypted_data_keys is required but was not specified",
2514            ),
2515        );
2516    }
2517    if input.is_none() {
2518        return ::std::result::Result::Ok(());
2519    }
2520    let input = input.as_ref().unwrap();
2521
2522    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList(input)?;
2523    Ok(())
2524}
2525pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DencryptionContext(
2526    input: &::std::option::Option<
2527        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
2528    >,
2529) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2530    if input.is_none() {
2531        return ::std::result::Result::Err(
2532            ::aws_smithy_types::error::operation::BuildError::missing_field(
2533                "encryption_context",
2534                "encryption_context is required but was not specified",
2535            ),
2536        );
2537    }
2538    if input.is_none() {
2539        return ::std::result::Result::Ok(());
2540    }
2541    let input = input.as_ref().unwrap();
2542
2543    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
2544    Ok(())
2545}
2546pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsInput_DreproducedEncryptionContext(
2547    input: &::std::option::Option<
2548        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
2549    >,
2550) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2551    if input.is_none() {
2552        return ::std::result::Result::Ok(());
2553    }
2554    let input = input.as_ref().unwrap();
2555
2556    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
2557    Ok(())
2558}
2559pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsOutput(
2560    input: &crate::deps::aws_cryptography_materialProviders::types::DecryptMaterialsOutput,
2561) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2562    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsOutput_DdecryptionMaterials(
2563        &input.r#decryption_materials,
2564    )?;
2565    Ok(())
2566}
2567pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsOutput_for_CryptographicMaterialsManager_DecryptMaterials(
2568    input: &crate::deps::aws_cryptography_materialProviders::operation::decrypt_materials::DecryptMaterialsOutput,
2569) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2570    validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsOutput_DdecryptionMaterials(
2571        &input.r#decryption_materials,
2572    )?;
2573    Ok(())
2574}
2575pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDecryptMaterialsOutput_DdecryptionMaterials(
2576    input: &::std::option::Option<
2577        crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
2578    >,
2579) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2580    if input.is_none() {
2581        return ::std::result::Result::Err(
2582            ::aws_smithy_types::error::operation::BuildError::missing_field(
2583                "decryption_materials",
2584                "decryption_materials is required but was not specified",
2585            ),
2586        );
2587    }
2588    if input.is_none() {
2589        return ::std::result::Result::Ok(());
2590    }
2591    let input = input.as_ref().unwrap();
2592
2593    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
2594    Ok(())
2595}
2596pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDefaultCache(
2597    input: &crate::deps::aws_cryptography_materialProviders::types::DefaultCache,
2598) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2599    validate_aws_Pcryptography_PmaterialProviders_HDefaultCache_DentryCapacity(
2600        &input.r#entry_capacity,
2601    )?;
2602    Ok(())
2603}
2604pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDefaultCache_DentryCapacity(
2605    input: &::std::option::Option<::std::primitive::i32>,
2606) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2607    if input.is_none() {
2608        return ::std::result::Result::Err(
2609            ::aws_smithy_types::error::operation::BuildError::missing_field(
2610                "entry_capacity",
2611                "entry_capacity is required but was not specified",
2612            ),
2613        );
2614    }
2615    if input.is_none() {
2616        return ::std::result::Result::Ok(());
2617    }
2618    let input = input.as_ref().unwrap();
2619
2620    if !(1..).contains(input) {
2621        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
2622        "entry_capacity",
2623        "entry_capacity failed to satisfy constraint: Member must be greater than or equal to 1",
2624    ));
2625    }
2626    Ok(())
2627}
2628pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDeleteCacheEntryInput(
2629    input: &crate::deps::aws_cryptography_materialProviders::types::DeleteCacheEntryInput,
2630) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2631    validate_aws_Pcryptography_PmaterialProviders_HDeleteCacheEntryInput_Didentifier(
2632        &input.r#identifier,
2633    )?;
2634    Ok(())
2635}
2636pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDeleteCacheEntryInput_for_CryptographicMaterialsCache_DeleteCacheEntry(
2637    input: &crate::deps::aws_cryptography_materialProviders::operation::delete_cache_entry::DeleteCacheEntryInput,
2638) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2639    validate_aws_Pcryptography_PmaterialProviders_HDeleteCacheEntryInput_Didentifier(
2640        &input.r#identifier,
2641    )?;
2642    Ok(())
2643}
2644pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDeleteCacheEntryInput_Didentifier(
2645    input: &::std::option::Option<::aws_smithy_types::Blob>,
2646) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2647    if input.is_none() {
2648        return ::std::result::Result::Err(
2649            ::aws_smithy_types::error::operation::BuildError::missing_field(
2650                "identifier",
2651                "identifier is required but was not specified",
2652            ),
2653        );
2654    }
2655    if input.is_none() {
2656        return ::std::result::Result::Ok(());
2657    }
2658    let input = input.as_ref().unwrap();
2659
2660    Ok(())
2661}
2662pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm(
2663    input: &crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm,
2664) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2665    if let crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm::Hkdf(
2666        ref inner,
2667    ) = &input
2668    {
2669        validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DHKDF(inner)?;
2670    }
2671    if let crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm::Identity(
2672        ref inner,
2673    ) = &input
2674    {
2675        validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DIDENTITY(inner)?;
2676    }
2677    if let crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm::None(
2678        ref inner,
2679    ) = &input
2680    {
2681        validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DNone(inner)?;
2682    }
2683    Ok(())
2684}
2685pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DHKDF(
2686    input: &crate::deps::aws_cryptography_materialProviders::types::Hkdf,
2687) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2688    validate_aws_Pcryptography_PmaterialProviders_HHKDF(input)?;
2689    Ok(())
2690}
2691pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DIDENTITY(
2692    input: &crate::deps::aws_cryptography_materialProviders::types::Identity,
2693) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2694    validate_aws_Pcryptography_PmaterialProviders_HIDENTITY(input)?;
2695    Ok(())
2696}
2697pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm_DNone(
2698    input: &crate::deps::aws_cryptography_materialProviders::types::None,
2699) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2700    validate_aws_Pcryptography_PmaterialProviders_HNone(input)?;
2701    Ok(())
2702}
2703pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDIRECT__KEY__WRAPPING(
2704    input: &crate::deps::aws_cryptography_materialProviders::types::DirectKeyWrapping,
2705) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2706    Ok(())
2707}
2708pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter(
2709    input: &crate::deps::aws_cryptography_materialProviders::types::DiscoveryFilter,
2710) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2711    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter_DaccountIds(
2712        &input.r#account_ids,
2713    )?;
2714    validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter_Dpartition(&input.r#partition)?;
2715    Ok(())
2716}
2717pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter_DaccountIds(
2718    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
2719) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2720    if input.is_none() {
2721        return ::std::result::Result::Err(
2722            ::aws_smithy_types::error::operation::BuildError::missing_field(
2723                "account_ids",
2724                "account_ids is required but was not specified",
2725            ),
2726        );
2727    }
2728    if input.is_none() {
2729        return ::std::result::Result::Ok(());
2730    }
2731    let input = input.as_ref().unwrap();
2732
2733    validate_aws_Pcryptography_PmaterialProviders_HAccountIdList(input)?;
2734    Ok(())
2735}
2736pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HDiscoveryFilter_Dpartition(
2737    input: &::std::option::Option<::std::string::String>,
2738) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2739    if input.is_none() {
2740        return ::std::result::Result::Err(
2741            ::aws_smithy_types::error::operation::BuildError::missing_field(
2742                "partition",
2743                "partition is required but was not specified",
2744            ),
2745        );
2746    }
2747    if input.is_none() {
2748        return ::std::result::Result::Ok(());
2749    }
2750    let input = input.as_ref().unwrap();
2751
2752    Ok(())
2753}
2754pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HECDSA(
2755    input: &crate::deps::aws_cryptography_materialProviders::types::Ecdsa,
2756) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2757    validate_aws_Pcryptography_PmaterialProviders_HECDSA_Dcurve(&input.r#curve)?;
2758    Ok(())
2759}
2760pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HECDSA_Dcurve(
2761    input: &::std::option::Option<
2762        crate::deps::aws_cryptography_primitives::types::EcdsaSignatureAlgorithm,
2763    >,
2764) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2765    if input.is_none() {
2766        return ::std::result::Result::Err(
2767            ::aws_smithy_types::error::operation::BuildError::missing_field(
2768                "curve",
2769                "curve is required but was not specified",
2770            ),
2771        );
2772    }
2773    if input.is_none() {
2774        return ::std::result::Result::Ok(());
2775    }
2776    let input = input.as_ref().unwrap();
2777
2778    Ok(())
2779}
2780pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm(
2781    input: &crate::deps::aws_cryptography_materialProviders::types::EdkWrappingAlgorithm,
2782) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2783    if let crate::deps::aws_cryptography_materialProviders::types::EdkWrappingAlgorithm::DirectKeyWrapping(ref inner) = &input {
2784  validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm_DDIRECT__KEY__WRAPPING(inner)?;
2785}
2786    if let crate::deps::aws_cryptography_materialProviders::types::EdkWrappingAlgorithm::IntermediateKeyWrapping(ref inner) = &input {
2787  validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm_DIntermediateKeyWrapping(inner)?;
2788}
2789    Ok(())
2790}
2791pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm_DDIRECT__KEY__WRAPPING(
2792    input: &crate::deps::aws_cryptography_materialProviders::types::DirectKeyWrapping,
2793) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2794    validate_aws_Pcryptography_PmaterialProviders_HDIRECT__KEY__WRAPPING(input)?;
2795    Ok(())
2796}
2797pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEdkWrappingAlgorithm_DIntermediateKeyWrapping(
2798    input: &crate::deps::aws_cryptography_materialProviders::types::IntermediateKeyWrapping,
2799) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2800    validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping(input)?;
2801    Ok(())
2802}
2803pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncrypt(
2804    input: &crate::deps::aws_cryptography_materialProviders::types::Encrypt,
2805) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2806    if let crate::deps::aws_cryptography_materialProviders::types::Encrypt::AesGcm(ref inner) =
2807        &input
2808    {
2809        validate_aws_Pcryptography_PmaterialProviders_HEncrypt_DAES__GCM(inner)?;
2810    }
2811    Ok(())
2812}
2813pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncrypt_DAES__GCM(
2814    input: &crate::deps::aws_cryptography_primitives::types::AesGcm,
2815) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2816    validate_aws_Pcryptography_Pprimitives_HAES__GCM(input)?;
2817    Ok(())
2818}
2819pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey(
2820    input: &crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey,
2821) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2822    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_DkeyProviderId(
2823        &input.r#key_provider_id,
2824    )?;
2825    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_DkeyProviderInfo(
2826        &input.r#key_provider_info,
2827    )?;
2828    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_Dciphertext(
2829        &input.r#ciphertext,
2830    )?;
2831    Ok(())
2832}
2833pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_Dciphertext(
2834    input: &::std::option::Option<::aws_smithy_types::Blob>,
2835) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2836    if input.is_none() {
2837        return ::std::result::Result::Err(
2838            ::aws_smithy_types::error::operation::BuildError::missing_field(
2839                "ciphertext",
2840                "ciphertext is required but was not specified",
2841            ),
2842        );
2843    }
2844    if input.is_none() {
2845        return ::std::result::Result::Ok(());
2846    }
2847    let input = input.as_ref().unwrap();
2848
2849    Ok(())
2850}
2851pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_DkeyProviderId(
2852    input: &::std::option::Option<::std::string::String>,
2853) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2854    if input.is_none() {
2855        return ::std::result::Result::Err(
2856            ::aws_smithy_types::error::operation::BuildError::missing_field(
2857                "key_provider_id",
2858                "key_provider_id is required but was not specified",
2859            ),
2860        );
2861    }
2862    if input.is_none() {
2863        return ::std::result::Result::Ok(());
2864    }
2865    let input = input.as_ref().unwrap();
2866
2867    Ok(())
2868}
2869pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey_DkeyProviderInfo(
2870    input: &::std::option::Option<::aws_smithy_types::Blob>,
2871) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2872    if input.is_none() {
2873        return ::std::result::Result::Err(
2874            ::aws_smithy_types::error::operation::BuildError::missing_field(
2875                "key_provider_info",
2876                "key_provider_info is required but was not specified",
2877            ),
2878        );
2879    }
2880    if input.is_none() {
2881        return ::std::result::Result::Ok(());
2882    }
2883    let input = input.as_ref().unwrap();
2884
2885    Ok(())
2886}
2887pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList(
2888    input: &::std::vec::Vec<
2889        crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey,
2890    >,
2891) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2892    for inner in input.iter() {
2893        validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList_Dmember(inner)?;
2894    }
2895    Ok(())
2896}
2897pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList_Dmember(
2898    input: &crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey,
2899) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2900    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKey(input)?;
2901    Ok(())
2902}
2903pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(
2904    input: &::std::collections::HashMap<::std::string::String, ::std::string::String>,
2905) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2906    for (inner_key, inner_val) in input.iter() {
2907        validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext_Dkey(inner_key)?;
2908        validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext_Dvalue(inner_val)?;
2909    }
2910    Ok(())
2911}
2912pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext_Dkey(
2913    input: &::std::string::String,
2914) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2915    Ok(())
2916}
2917pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext_Dvalue(
2918    input: &::std::string::String,
2919) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2920    Ok(())
2921}
2922pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(
2923    input: &::std::vec::Vec<::std::string::String>,
2924) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2925    for inner in input.iter() {
2926        validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys_Dmember(inner)?;
2927    }
2928    Ok(())
2929}
2930pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys_Dmember(
2931    input: &::std::string::String,
2932) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2933    Ok(())
2934}
2935pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(
2936    input: &crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
2937) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2938    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DalgorithmSuite(
2939        &input.r#algorithm_suite,
2940    )?;
2941    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptionContext(
2942        &input.r#encryption_context,
2943    )?;
2944    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptedDataKeys(
2945        &input.r#encrypted_data_keys,
2946    )?;
2947    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2948    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DplaintextDataKey(
2949        &input.r#plaintext_data_key,
2950    )?;
2951    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsigningKey(
2952        &input.r#signing_key,
2953    )?;
2954    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsymmetricSigningKeys(
2955        &input.r#symmetric_signing_keys,
2956    )?;
2957    Ok(())
2958}
2959pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_for_AwsCryptographicMaterialProviders_EncryptionMaterialsHasPlaintextDataKey(
2960    input: &crate::deps::aws_cryptography_materialProviders::operation::encryption_materials_has_plaintext_data_key::EncryptionMaterials,
2961) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2962    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DalgorithmSuite(
2963        &input.r#algorithm_suite,
2964    )?;
2965    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptionContext(
2966        &input.r#encryption_context,
2967    )?;
2968    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptedDataKeys(
2969        &input.r#encrypted_data_keys,
2970    )?;
2971    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
2972    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DplaintextDataKey(
2973        &input.r#plaintext_data_key,
2974    )?;
2975    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsigningKey(
2976        &input.r#signing_key,
2977    )?;
2978    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsymmetricSigningKeys(
2979        &input.r#symmetric_signing_keys,
2980    )?;
2981    Ok(())
2982}
2983pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DalgorithmSuite(
2984    input: &::std::option::Option<
2985        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteInfo,
2986    >,
2987) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
2988    if input.is_none() {
2989        return ::std::result::Result::Err(
2990            ::aws_smithy_types::error::operation::BuildError::missing_field(
2991                "algorithm_suite",
2992                "algorithm_suite is required but was not specified",
2993            ),
2994        );
2995    }
2996    if input.is_none() {
2997        return ::std::result::Result::Ok(());
2998    }
2999    let input = input.as_ref().unwrap();
3000
3001    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteInfo(input)?;
3002    Ok(())
3003}
3004pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptedDataKeys(
3005    input: &::std::option::Option<
3006        ::std::vec::Vec<crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey>,
3007    >,
3008) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3009    if input.is_none() {
3010        return ::std::result::Result::Err(
3011            ::aws_smithy_types::error::operation::BuildError::missing_field(
3012                "encrypted_data_keys",
3013                "encrypted_data_keys is required but was not specified",
3014            ),
3015        );
3016    }
3017    if input.is_none() {
3018        return ::std::result::Result::Ok(());
3019    }
3020    let input = input.as_ref().unwrap();
3021
3022    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList(input)?;
3023    Ok(())
3024}
3025pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DencryptionContext(
3026    input: &::std::option::Option<
3027        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
3028    >,
3029) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3030    if input.is_none() {
3031        return ::std::result::Result::Err(
3032            ::aws_smithy_types::error::operation::BuildError::missing_field(
3033                "encryption_context",
3034                "encryption_context is required but was not specified",
3035            ),
3036        );
3037    }
3038    if input.is_none() {
3039        return ::std::result::Result::Ok(());
3040    }
3041    let input = input.as_ref().unwrap();
3042
3043    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
3044    Ok(())
3045}
3046pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DplaintextDataKey(
3047    input: &::std::option::Option<::aws_smithy_types::Blob>,
3048) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3049    if input.is_none() {
3050        return ::std::result::Result::Ok(());
3051    }
3052    let input = input.as_ref().unwrap();
3053
3054    Ok(())
3055}
3056pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DrequiredEncryptionContextKeys(
3057    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
3058) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3059    if input.is_none() {
3060        return ::std::result::Result::Err(
3061            ::aws_smithy_types::error::operation::BuildError::missing_field(
3062                "required_encryption_context_keys",
3063                "required_encryption_context_keys is required but was not specified",
3064            ),
3065        );
3066    }
3067    if input.is_none() {
3068        return ::std::result::Result::Ok(());
3069    }
3070    let input = input.as_ref().unwrap();
3071
3072    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
3073    Ok(())
3074}
3075pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsigningKey(
3076    input: &::std::option::Option<::aws_smithy_types::Blob>,
3077) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3078    if input.is_none() {
3079        return ::std::result::Result::Ok(());
3080    }
3081    let input = input.as_ref().unwrap();
3082
3083    Ok(())
3084}
3085pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials_DsymmetricSigningKeys(
3086    input: &::std::option::Option<::std::vec::Vec<::aws_smithy_types::Blob>>,
3087) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3088    if input.is_none() {
3089        return ::std::result::Result::Ok(());
3090    }
3091    let input = input.as_ref().unwrap();
3092
3093    validate_aws_Pcryptography_PmaterialProviders_HSymmetricSigningKeyList(input)?;
3094    Ok(())
3095}
3096pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEphemeralPrivateKeyToStaticPublicKeyInput(
3097    input: &crate::deps::aws_cryptography_materialProviders::types::EphemeralPrivateKeyToStaticPublicKeyInput,
3098) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3099    validate_aws_Pcryptography_PmaterialProviders_HEphemeralPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(&input.r#recipient_public_key)?;
3100    Ok(())
3101}
3102pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HEphemeralPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(
3103    input: &::std::option::Option<::aws_smithy_types::Blob>,
3104) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3105    if input.is_none() {
3106        return ::std::result::Result::Err(
3107            ::aws_smithy_types::error::operation::BuildError::missing_field(
3108                "recipient_public_key",
3109                "recipient_public_key is required but was not specified",
3110            ),
3111        );
3112    }
3113    if input.is_none() {
3114        return ::std::result::Result::Ok(());
3115    }
3116    let input = input.as_ref().unwrap();
3117
3118    Ok(())
3119}
3120pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetAlgorithmSuiteInfoInput(
3121    input: &::aws_smithy_types::Blob,
3122) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3123    validate_aws_Pcryptography_PmaterialProviders_HGetAlgorithmSuiteInfoInput_DbinaryId(&Some(
3124        input.clone(),
3125    ))?;
3126    Ok(())
3127}
3128pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetAlgorithmSuiteInfoInput_for_AwsCryptographicMaterialProviders_GetAlgorithmSuiteInfo(
3129    input: &crate::deps::aws_cryptography_materialProviders::operation::get_algorithm_suite_info::GetAlgorithmSuiteInfoInput,
3130) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3131    validate_aws_Pcryptography_PmaterialProviders_HGetAlgorithmSuiteInfoInput_DbinaryId(
3132        &input.r#binary_id,
3133    )?;
3134    Ok(())
3135}
3136pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetAlgorithmSuiteInfoInput_DbinaryId(
3137    input: &::std::option::Option<::aws_smithy_types::Blob>,
3138) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3139    if input.is_none() {
3140        return ::std::result::Result::Err(
3141            ::aws_smithy_types::error::operation::BuildError::missing_field(
3142                "binary_id",
3143                "binary_id is required but was not specified",
3144            ),
3145        );
3146    }
3147    if input.is_none() {
3148        return ::std::result::Result::Ok(());
3149    }
3150    let input = input.as_ref().unwrap();
3151
3152    Ok(())
3153}
3154pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdInput(
3155    input: &crate::deps::aws_cryptography_materialProviders::types::GetBranchKeyIdInput,
3156) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3157    validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdInput_DencryptionContext(
3158        &input.r#encryption_context,
3159    )?;
3160    Ok(())
3161}
3162pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdInput_for_BranchKeyIdSupplier_GetBranchKeyId(
3163    input: &crate::deps::aws_cryptography_materialProviders::operation::get_branch_key_id::GetBranchKeyIdInput,
3164) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3165    validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdInput_DencryptionContext(
3166        &input.r#encryption_context,
3167    )?;
3168    Ok(())
3169}
3170pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdInput_DencryptionContext(
3171    input: &::std::option::Option<
3172        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
3173    >,
3174) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3175    if input.is_none() {
3176        return ::std::result::Result::Err(
3177            ::aws_smithy_types::error::operation::BuildError::missing_field(
3178                "encryption_context",
3179                "encryption_context is required but was not specified",
3180            ),
3181        );
3182    }
3183    if input.is_none() {
3184        return ::std::result::Result::Ok(());
3185    }
3186    let input = input.as_ref().unwrap();
3187
3188    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
3189    Ok(())
3190}
3191pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdOutput(
3192    input: &crate::deps::aws_cryptography_materialProviders::types::GetBranchKeyIdOutput,
3193) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3194    validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdOutput_DbranchKeyId(
3195        &input.r#branch_key_id,
3196    )?;
3197    Ok(())
3198}
3199pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdOutput_for_BranchKeyIdSupplier_GetBranchKeyId(
3200    input: &crate::deps::aws_cryptography_materialProviders::operation::get_branch_key_id::GetBranchKeyIdOutput,
3201) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3202    validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdOutput_DbranchKeyId(
3203        &input.r#branch_key_id,
3204    )?;
3205    Ok(())
3206}
3207pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetBranchKeyIdOutput_DbranchKeyId(
3208    input: &::std::option::Option<::std::string::String>,
3209) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3210    if input.is_none() {
3211        return ::std::result::Result::Err(
3212            ::aws_smithy_types::error::operation::BuildError::missing_field(
3213                "branch_key_id",
3214                "branch_key_id is required but was not specified",
3215            ),
3216        );
3217    }
3218    if input.is_none() {
3219        return ::std::result::Result::Ok(());
3220    }
3221    let input = input.as_ref().unwrap();
3222
3223    Ok(())
3224}
3225pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput(
3226    input: &crate::deps::aws_cryptography_materialProviders::types::GetCacheEntryInput,
3227) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3228    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_Didentifier(
3229        &input.r#identifier,
3230    )?;
3231    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_DbytesUsed(
3232        &input.r#bytes_used,
3233    )?;
3234    Ok(())
3235}
3236pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_for_CryptographicMaterialsCache_GetCacheEntry(
3237    input: &crate::deps::aws_cryptography_materialProviders::operation::get_cache_entry::GetCacheEntryInput,
3238) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3239    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_Didentifier(
3240        &input.r#identifier,
3241    )?;
3242    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_DbytesUsed(
3243        &input.r#bytes_used,
3244    )?;
3245    Ok(())
3246}
3247pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_DbytesUsed(
3248    input: &::std::option::Option<::std::primitive::i64>,
3249) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3250    if input.is_none() {
3251        return ::std::result::Result::Ok(());
3252    }
3253    let input = input.as_ref().unwrap();
3254
3255    Ok(())
3256}
3257pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryInput_Didentifier(
3258    input: &::std::option::Option<::aws_smithy_types::Blob>,
3259) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3260    if input.is_none() {
3261        return ::std::result::Result::Err(
3262            ::aws_smithy_types::error::operation::BuildError::missing_field(
3263                "identifier",
3264                "identifier is required but was not specified",
3265            ),
3266        );
3267    }
3268    if input.is_none() {
3269        return ::std::result::Result::Ok(());
3270    }
3271    let input = input.as_ref().unwrap();
3272
3273    Ok(())
3274}
3275pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput(
3276    input: &crate::deps::aws_cryptography_materialProviders::types::GetCacheEntryOutput,
3277) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3278    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_Dmaterials(
3279        &input.r#materials,
3280    )?;
3281    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DcreationTime(
3282        &input.r#creation_time,
3283    )?;
3284    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DexpiryTime(
3285        &input.r#expiry_time,
3286    )?;
3287    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DmessagesUsed(
3288        &input.r#messages_used,
3289    )?;
3290    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DbytesUsed(
3291        &input.r#bytes_used,
3292    )?;
3293    Ok(())
3294}
3295pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_for_CryptographicMaterialsCache_GetCacheEntry(
3296    input: &crate::deps::aws_cryptography_materialProviders::operation::get_cache_entry::GetCacheEntryOutput,
3297) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3298    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_Dmaterials(
3299        &input.r#materials,
3300    )?;
3301    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DcreationTime(
3302        &input.r#creation_time,
3303    )?;
3304    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DexpiryTime(
3305        &input.r#expiry_time,
3306    )?;
3307    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DmessagesUsed(
3308        &input.r#messages_used,
3309    )?;
3310    validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DbytesUsed(
3311        &input.r#bytes_used,
3312    )?;
3313    Ok(())
3314}
3315pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DbytesUsed(
3316    input: &::std::option::Option<::std::primitive::i32>,
3317) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3318    if input.is_none() {
3319        return ::std::result::Result::Err(
3320            ::aws_smithy_types::error::operation::BuildError::missing_field(
3321                "bytes_used",
3322                "bytes_used is required but was not specified",
3323            ),
3324        );
3325    }
3326    if input.is_none() {
3327        return ::std::result::Result::Ok(());
3328    }
3329    let input = input.as_ref().unwrap();
3330
3331    if !(0..).contains(input) {
3332        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3333        "bytes_used",
3334        "bytes_used failed to satisfy constraint: Member must be greater than or equal to 0",
3335    ));
3336    }
3337    Ok(())
3338}
3339pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DcreationTime(
3340    input: &::std::option::Option<::std::primitive::i64>,
3341) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3342    if input.is_none() {
3343        return ::std::result::Result::Err(
3344            ::aws_smithy_types::error::operation::BuildError::missing_field(
3345                "creation_time",
3346                "creation_time is required but was not specified",
3347            ),
3348        );
3349    }
3350    if input.is_none() {
3351        return ::std::result::Result::Ok(());
3352    }
3353    let input = input.as_ref().unwrap();
3354
3355    if !(0..).contains(input) {
3356        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3357        "creation_time",
3358        "creation_time failed to satisfy constraint: Member must be greater than or equal to 0",
3359    ));
3360    }
3361    Ok(())
3362}
3363pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DexpiryTime(
3364    input: &::std::option::Option<::std::primitive::i64>,
3365) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3366    if input.is_none() {
3367        return ::std::result::Result::Err(
3368            ::aws_smithy_types::error::operation::BuildError::missing_field(
3369                "expiry_time",
3370                "expiry_time is required but was not specified",
3371            ),
3372        );
3373    }
3374    if input.is_none() {
3375        return ::std::result::Result::Ok(());
3376    }
3377    let input = input.as_ref().unwrap();
3378
3379    if !(0..).contains(input) {
3380        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3381        "expiry_time",
3382        "expiry_time failed to satisfy constraint: Member must be greater than or equal to 0",
3383    ));
3384    }
3385    Ok(())
3386}
3387pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_Dmaterials(
3388    input: &::std::option::Option<
3389        crate::deps::aws_cryptography_materialProviders::types::Materials,
3390    >,
3391) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3392    if input.is_none() {
3393        return ::std::result::Result::Err(
3394            ::aws_smithy_types::error::operation::BuildError::missing_field(
3395                "materials",
3396                "materials is required but was not specified",
3397            ),
3398        );
3399    }
3400    if input.is_none() {
3401        return ::std::result::Result::Ok(());
3402    }
3403    let input = input.as_ref().unwrap();
3404
3405    validate_aws_Pcryptography_PmaterialProviders_HMaterials(input)?;
3406    Ok(())
3407}
3408pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetCacheEntryOutput_DmessagesUsed(
3409    input: &::std::option::Option<::std::primitive::i32>,
3410) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3411    if input.is_none() {
3412        return ::std::result::Result::Err(
3413            ::aws_smithy_types::error::operation::BuildError::missing_field(
3414                "messages_used",
3415                "messages_used is required but was not specified",
3416            ),
3417        );
3418    }
3419    if input.is_none() {
3420        return ::std::result::Result::Ok(());
3421    }
3422    let input = input.as_ref().unwrap();
3423
3424    if !(0..).contains(input) {
3425        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3426        "messages_used",
3427        "messages_used failed to satisfy constraint: Member must be greater than or equal to 0",
3428    ));
3429    }
3430    Ok(())
3431}
3432pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientInput(
3433    input: &crate::deps::aws_cryptography_materialProviders::types::GetClientInput,
3434) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3435    validate_aws_Pcryptography_PmaterialProviders_HGetClientInput_Dregion(&input.r#region)?;
3436    Ok(())
3437}
3438pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientInput_for_ClientSupplier_GetClient(
3439    input: &crate::deps::aws_cryptography_materialProviders::operation::get_client::GetClientInput,
3440) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3441    validate_aws_Pcryptography_PmaterialProviders_HGetClientInput_Dregion(&input.r#region)?;
3442    Ok(())
3443}
3444pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientInput_Dregion(
3445    input: &::std::option::Option<::std::string::String>,
3446) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3447    if input.is_none() {
3448        return ::std::result::Result::Err(
3449            ::aws_smithy_types::error::operation::BuildError::missing_field(
3450                "region",
3451                "region is required but was not specified",
3452            ),
3453        );
3454    }
3455    if input.is_none() {
3456        return ::std::result::Result::Ok(());
3457    }
3458    let input = input.as_ref().unwrap();
3459
3460    Ok(())
3461}
3462pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientOutput(
3463    input: &crate::deps::com_amazonaws_kms::client::Client,
3464) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3465    validate_aws_Pcryptography_PmaterialProviders_HGetClientOutput_Dclient(&Some(input.clone()))?;
3466    Ok(())
3467}
3468pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientOutput_for_ClientSupplier_GetClient(
3469    input: &crate::deps::com_amazonaws_kms::client::Client,
3470) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3471    validate_aws_Pcryptography_PmaterialProviders_HGetClientOutput_Dclient(&Some(input.clone()))?;
3472    Ok(())
3473}
3474pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetClientOutput_Dclient(
3475    input: &::std::option::Option<crate::deps::com_amazonaws_kms::client::Client>,
3476) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3477    if input.is_none() {
3478        return ::std::result::Result::Err(
3479            ::aws_smithy_types::error::operation::BuildError::missing_field(
3480                "client",
3481                "client is required but was not specified",
3482            ),
3483        );
3484    }
3485    if input.is_none() {
3486        return ::std::result::Result::Ok(());
3487    }
3488    let input = input.as_ref().unwrap();
3489
3490    validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(input)?;
3491    Ok(())
3492}
3493pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput(
3494    input: &crate::deps::aws_cryptography_materialProviders::types::GetEncryptionMaterialsInput,
3495) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3496    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DencryptionContext(
3497        &input.r#encryption_context,
3498    )?;
3499    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DcommitmentPolicy(
3500        &input.r#commitment_policy,
3501    )?;
3502    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DalgorithmSuiteId(
3503        &input.r#algorithm_suite_id,
3504    )?;
3505    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DmaxPlaintextLength(
3506        &input.r#max_plaintext_length,
3507    )?;
3508    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3509    Ok(())
3510}
3511pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_for_CryptographicMaterialsManager_GetEncryptionMaterials(
3512    input: &crate::deps::aws_cryptography_materialProviders::operation::get_encryption_materials::GetEncryptionMaterialsInput,
3513) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3514    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DencryptionContext(
3515        &input.r#encryption_context,
3516    )?;
3517    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DcommitmentPolicy(
3518        &input.r#commitment_policy,
3519    )?;
3520    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DalgorithmSuiteId(
3521        &input.r#algorithm_suite_id,
3522    )?;
3523    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DmaxPlaintextLength(
3524        &input.r#max_plaintext_length,
3525    )?;
3526    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3527    Ok(())
3528}
3529pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DalgorithmSuiteId(
3530    input: &::std::option::Option<
3531        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
3532    >,
3533) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3534    if input.is_none() {
3535        return ::std::result::Result::Ok(());
3536    }
3537    let input = input.as_ref().unwrap();
3538
3539    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
3540    Ok(())
3541}
3542pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DcommitmentPolicy(
3543    input: &::std::option::Option<
3544        crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy,
3545    >,
3546) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3547    if input.is_none() {
3548        return ::std::result::Result::Err(
3549            ::aws_smithy_types::error::operation::BuildError::missing_field(
3550                "commitment_policy",
3551                "commitment_policy is required but was not specified",
3552            ),
3553        );
3554    }
3555    if input.is_none() {
3556        return ::std::result::Result::Ok(());
3557    }
3558    let input = input.as_ref().unwrap();
3559
3560    validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy(input)?;
3561    Ok(())
3562}
3563pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DencryptionContext(
3564    input: &::std::option::Option<
3565        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
3566    >,
3567) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3568    if input.is_none() {
3569        return ::std::result::Result::Err(
3570            ::aws_smithy_types::error::operation::BuildError::missing_field(
3571                "encryption_context",
3572                "encryption_context is required but was not specified",
3573            ),
3574        );
3575    }
3576    if input.is_none() {
3577        return ::std::result::Result::Ok(());
3578    }
3579    let input = input.as_ref().unwrap();
3580
3581    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
3582    Ok(())
3583}
3584pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DmaxPlaintextLength(
3585    input: &::std::option::Option<::std::primitive::i64>,
3586) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3587    if input.is_none() {
3588        return ::std::result::Result::Ok(());
3589    }
3590    let input = input.as_ref().unwrap();
3591
3592    Ok(())
3593}
3594pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsInput_DrequiredEncryptionContextKeys(
3595    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
3596) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3597    if input.is_none() {
3598        return ::std::result::Result::Ok(());
3599    }
3600    let input = input.as_ref().unwrap();
3601
3602    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
3603    Ok(())
3604}
3605pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsOutput(
3606    input: &crate::deps::aws_cryptography_materialProviders::types::GetEncryptionMaterialsOutput,
3607) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3608    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsOutput_DencryptionMaterials(&input.r#encryption_materials)?;
3609    Ok(())
3610}
3611pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsOutput_for_CryptographicMaterialsManager_GetEncryptionMaterials(
3612    input: &crate::deps::aws_cryptography_materialProviders::operation::get_encryption_materials::GetEncryptionMaterialsOutput,
3613) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3614    validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsOutput_DencryptionMaterials(&input.r#encryption_materials)?;
3615    Ok(())
3616}
3617pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGetEncryptionMaterialsOutput_DencryptionMaterials(
3618    input: &::std::option::Option<
3619        crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
3620    >,
3621) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3622    if input.is_none() {
3623        return ::std::result::Result::Err(
3624            ::aws_smithy_types::error::operation::BuildError::missing_field(
3625                "encryption_materials",
3626                "encryption_materials is required but was not specified",
3627            ),
3628        );
3629    }
3630    if input.is_none() {
3631        return ::std::result::Result::Ok(());
3632    }
3633    let input = input.as_ref().unwrap();
3634
3635    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
3636    Ok(())
3637}
3638pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList(
3639    input: &::std::vec::Vec<::std::string::String>,
3640) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3641    for inner in input.iter() {
3642        validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList_Dmember(inner)?;
3643    }
3644    Ok(())
3645}
3646pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HGrantTokenList_Dmember(
3647    input: &::std::string::String,
3648) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3649    Ok(())
3650}
3651pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HHKDF(
3652    input: &crate::deps::aws_cryptography_materialProviders::types::Hkdf,
3653) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3654    validate_aws_Pcryptography_PmaterialProviders_HHKDF_Dhmac(&input.r#hmac)?;
3655    validate_aws_Pcryptography_PmaterialProviders_HHKDF_DsaltLength(&input.r#salt_length)?;
3656    validate_aws_Pcryptography_PmaterialProviders_HHKDF_DinputKeyLength(&input.r#input_key_length)?;
3657    validate_aws_Pcryptography_PmaterialProviders_HHKDF_DoutputKeyLength(
3658        &input.r#output_key_length,
3659    )?;
3660    Ok(())
3661}
3662pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HHKDF_Dhmac(
3663    input: &::std::option::Option<crate::deps::aws_cryptography_primitives::types::DigestAlgorithm>,
3664) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3665    if input.is_none() {
3666        return ::std::result::Result::Err(
3667            ::aws_smithy_types::error::operation::BuildError::missing_field(
3668                "hmac",
3669                "hmac is required but was not specified",
3670            ),
3671        );
3672    }
3673    if input.is_none() {
3674        return ::std::result::Result::Ok(());
3675    }
3676    let input = input.as_ref().unwrap();
3677
3678    Ok(())
3679}
3680pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HHKDF_DinputKeyLength(
3681    input: &::std::option::Option<::std::primitive::i32>,
3682) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3683    if input.is_none() {
3684        return ::std::result::Result::Err(
3685            ::aws_smithy_types::error::operation::BuildError::missing_field(
3686                "input_key_length",
3687                "input_key_length is required but was not specified",
3688            ),
3689        );
3690    }
3691    if input.is_none() {
3692        return ::std::result::Result::Ok(());
3693    }
3694    let input = input.as_ref().unwrap();
3695
3696    if !(1..=32).contains(input) {
3697        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3698        "input_key_length",
3699        "input_key_length failed to satisfy constraint: Member must be between 1 and 32, inclusive",
3700    ));
3701    }
3702    Ok(())
3703}
3704pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HHKDF_DoutputKeyLength(
3705    input: &::std::option::Option<::std::primitive::i32>,
3706) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3707    if input.is_none() {
3708        return ::std::result::Result::Err(
3709            ::aws_smithy_types::error::operation::BuildError::missing_field(
3710                "output_key_length",
3711                "output_key_length is required but was not specified",
3712            ),
3713        );
3714    }
3715    if input.is_none() {
3716        return ::std::result::Result::Ok(());
3717    }
3718    let input = input.as_ref().unwrap();
3719
3720    if !(1..=32).contains(input) {
3721        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3722        "output_key_length",
3723        "output_key_length failed to satisfy constraint: Member must be between 1 and 32, inclusive",
3724    ));
3725    }
3726    Ok(())
3727}
3728pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HHKDF_DsaltLength(
3729    input: &::std::option::Option<::std::primitive::i32>,
3730) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3731    if input.is_none() {
3732        return ::std::result::Result::Err(
3733            ::aws_smithy_types::error::operation::BuildError::missing_field(
3734                "salt_length",
3735                "salt_length is required but was not specified",
3736            ),
3737        );
3738    }
3739    if input.is_none() {
3740        return ::std::result::Result::Ok(());
3741    }
3742    let input = input.as_ref().unwrap();
3743
3744    if !(0..).contains(input) {
3745        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
3746        "salt_length",
3747        "salt_length failed to satisfy constraint: Member must be greater than or equal to 0",
3748    ));
3749    }
3750    Ok(())
3751}
3752pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HIDENTITY(
3753    input: &crate::deps::aws_cryptography_materialProviders::types::Identity,
3754) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3755    Ok(())
3756}
3757pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput(
3758    input: &crate::deps::aws_cryptography_materialProviders::types::InitializeDecryptionMaterialsInput,
3759) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3760    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DalgorithmSuiteId(&input.r#algorithm_suite_id)?;
3761    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DencryptionContext(&input.r#encryption_context)?;
3762    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3763    Ok(())
3764}
3765pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_for_AwsCryptographicMaterialProviders_InitializeDecryptionMaterials(
3766    input: &crate::deps::aws_cryptography_materialProviders::operation::initialize_decryption_materials::InitializeDecryptionMaterialsInput,
3767) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3768    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DalgorithmSuiteId(&input.r#algorithm_suite_id)?;
3769    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DencryptionContext(&input.r#encryption_context)?;
3770    validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3771    Ok(())
3772}
3773pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DalgorithmSuiteId(
3774    input: &::std::option::Option<
3775        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
3776    >,
3777) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3778    if input.is_none() {
3779        return ::std::result::Result::Err(
3780            ::aws_smithy_types::error::operation::BuildError::missing_field(
3781                "algorithm_suite_id",
3782                "algorithm_suite_id is required but was not specified",
3783            ),
3784        );
3785    }
3786    if input.is_none() {
3787        return ::std::result::Result::Ok(());
3788    }
3789    let input = input.as_ref().unwrap();
3790
3791    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
3792    Ok(())
3793}
3794pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DencryptionContext(
3795    input: &::std::option::Option<
3796        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
3797    >,
3798) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3799    if input.is_none() {
3800        return ::std::result::Result::Err(
3801            ::aws_smithy_types::error::operation::BuildError::missing_field(
3802                "encryption_context",
3803                "encryption_context is required but was not specified",
3804            ),
3805        );
3806    }
3807    if input.is_none() {
3808        return ::std::result::Result::Ok(());
3809    }
3810    let input = input.as_ref().unwrap();
3811
3812    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
3813    Ok(())
3814}
3815pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeDecryptionMaterialsInput_DrequiredEncryptionContextKeys(
3816    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
3817) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3818    if input.is_none() {
3819        return ::std::result::Result::Err(
3820            ::aws_smithy_types::error::operation::BuildError::missing_field(
3821                "required_encryption_context_keys",
3822                "required_encryption_context_keys is required but was not specified",
3823            ),
3824        );
3825    }
3826    if input.is_none() {
3827        return ::std::result::Result::Ok(());
3828    }
3829    let input = input.as_ref().unwrap();
3830
3831    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
3832    Ok(())
3833}
3834pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput(
3835    input: &crate::deps::aws_cryptography_materialProviders::types::InitializeEncryptionMaterialsInput,
3836) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3837    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DalgorithmSuiteId(&input.r#algorithm_suite_id)?;
3838    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DencryptionContext(&input.r#encryption_context)?;
3839    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3840    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DsigningKey(
3841        &input.r#signing_key,
3842    )?;
3843    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DverificationKey(&input.r#verification_key)?;
3844    Ok(())
3845}
3846pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_for_AwsCryptographicMaterialProviders_InitializeEncryptionMaterials(
3847    input: &crate::deps::aws_cryptography_materialProviders::operation::initialize_encryption_materials::InitializeEncryptionMaterialsInput,
3848) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3849    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DalgorithmSuiteId(&input.r#algorithm_suite_id)?;
3850    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DencryptionContext(&input.r#encryption_context)?;
3851    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DrequiredEncryptionContextKeys(&input.r#required_encryption_context_keys)?;
3852    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DsigningKey(
3853        &input.r#signing_key,
3854    )?;
3855    validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DverificationKey(&input.r#verification_key)?;
3856    Ok(())
3857}
3858pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DalgorithmSuiteId(
3859    input: &::std::option::Option<
3860        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
3861    >,
3862) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3863    if input.is_none() {
3864        return ::std::result::Result::Err(
3865            ::aws_smithy_types::error::operation::BuildError::missing_field(
3866                "algorithm_suite_id",
3867                "algorithm_suite_id is required but was not specified",
3868            ),
3869        );
3870    }
3871    if input.is_none() {
3872        return ::std::result::Result::Ok(());
3873    }
3874    let input = input.as_ref().unwrap();
3875
3876    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
3877    Ok(())
3878}
3879pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DencryptionContext(
3880    input: &::std::option::Option<
3881        ::std::collections::HashMap<::std::string::String, ::std::string::String>,
3882    >,
3883) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3884    if input.is_none() {
3885        return ::std::result::Result::Err(
3886            ::aws_smithy_types::error::operation::BuildError::missing_field(
3887                "encryption_context",
3888                "encryption_context is required but was not specified",
3889            ),
3890        );
3891    }
3892    if input.is_none() {
3893        return ::std::result::Result::Ok(());
3894    }
3895    let input = input.as_ref().unwrap();
3896
3897    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContext(input)?;
3898    Ok(())
3899}
3900pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DrequiredEncryptionContextKeys(
3901    input: &::std::option::Option<::std::vec::Vec<::std::string::String>>,
3902) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3903    if input.is_none() {
3904        return ::std::result::Result::Err(
3905            ::aws_smithy_types::error::operation::BuildError::missing_field(
3906                "required_encryption_context_keys",
3907                "required_encryption_context_keys is required but was not specified",
3908            ),
3909        );
3910    }
3911    if input.is_none() {
3912        return ::std::result::Result::Ok(());
3913    }
3914    let input = input.as_ref().unwrap();
3915
3916    validate_aws_Pcryptography_PmaterialProviders_HEncryptionContextKeys(input)?;
3917    Ok(())
3918}
3919pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DsigningKey(
3920    input: &::std::option::Option<::aws_smithy_types::Blob>,
3921) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3922    if input.is_none() {
3923        return ::std::result::Result::Ok(());
3924    }
3925    let input = input.as_ref().unwrap();
3926
3927    Ok(())
3928}
3929pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HInitializeEncryptionMaterialsInput_DverificationKey(
3930    input: &::std::option::Option<::aws_smithy_types::Blob>,
3931) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3932    if input.is_none() {
3933        return ::std::result::Result::Ok(());
3934    }
3935    let input = input.as_ref().unwrap();
3936
3937    Ok(())
3938}
3939pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping(
3940    input: &crate::deps::aws_cryptography_materialProviders::types::IntermediateKeyWrapping,
3941) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3942    validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DkeyEncryptionKeyKdf(
3943        &input.r#key_encryption_key_kdf,
3944    )?;
3945    validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DmacKeyKdf(
3946        &input.r#mac_key_kdf,
3947    )?;
3948    validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DpdkEncryptAlgorithm(
3949        &input.r#pdk_encrypt_algorithm,
3950    )?;
3951    Ok(())
3952}
3953pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DkeyEncryptionKeyKdf(
3954    input: &::std::option::Option<
3955        crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm,
3956    >,
3957) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3958    if input.is_none() {
3959        return ::std::result::Result::Err(
3960            ::aws_smithy_types::error::operation::BuildError::missing_field(
3961                "key_encryption_key_kdf",
3962                "key_encryption_key_kdf is required but was not specified",
3963            ),
3964        );
3965    }
3966    if input.is_none() {
3967        return ::std::result::Result::Ok(());
3968    }
3969    let input = input.as_ref().unwrap();
3970
3971    validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm(input)?;
3972    Ok(())
3973}
3974pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DmacKeyKdf(
3975    input: &::std::option::Option<
3976        crate::deps::aws_cryptography_materialProviders::types::DerivationAlgorithm,
3977    >,
3978) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3979    if input.is_none() {
3980        return ::std::result::Result::Err(
3981            ::aws_smithy_types::error::operation::BuildError::missing_field(
3982                "mac_key_kdf",
3983                "mac_key_kdf is required but was not specified",
3984            ),
3985        );
3986    }
3987    if input.is_none() {
3988        return ::std::result::Result::Ok(());
3989    }
3990    let input = input.as_ref().unwrap();
3991
3992    validate_aws_Pcryptography_PmaterialProviders_HDerivationAlgorithm(input)?;
3993    Ok(())
3994}
3995pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HIntermediateKeyWrapping_DpdkEncryptAlgorithm(
3996    input: &::std::option::Option<crate::deps::aws_cryptography_materialProviders::types::Encrypt>,
3997) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
3998    if input.is_none() {
3999        return ::std::result::Result::Err(
4000            ::aws_smithy_types::error::operation::BuildError::missing_field(
4001                "pdk_encrypt_algorithm",
4002                "pdk_encrypt_algorithm is required but was not specified",
4003            ),
4004        );
4005    }
4006    if input.is_none() {
4007        return ::std::result::Result::Ok(());
4008    }
4009    let input = input.as_ref().unwrap();
4010
4011    validate_aws_Pcryptography_PmaterialProviders_HEncrypt(input)?;
4012    Ok(())
4013}
4014pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKeyringList(
4015    input: &::std::vec::Vec<
4016        crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
4017    >,
4018) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4019    for inner in input.iter() {
4020        validate_aws_Pcryptography_PmaterialProviders_HKeyringList_Dmember(inner)?;
4021    }
4022    Ok(())
4023}
4024pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKeyringList_Dmember(
4025    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
4026) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4027    validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(input)?;
4028    Ok(())
4029}
4030pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKeyringReference(
4031    input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef,
4032) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4033    Ok(())
4034}
4035pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKeyStoreReference(
4036    input: &crate::deps::aws_cryptography_keyStore::client::Client,
4037) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4038    Ok(())
4039}
4040pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsClientReference(
4041    input: &crate::deps::com_amazonaws_kms::client::Client,
4042) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4043    Ok(())
4044}
4045pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations(
4046    input: &crate::deps::aws_cryptography_materialProviders::types::KmsEcdhStaticConfigurations,
4047) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4048    if let crate::deps::aws_cryptography_materialProviders::types::KmsEcdhStaticConfigurations::KmsPublicKeyDiscovery(ref inner) = &input {
4049  validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations_DKmsPublicKeyDiscovery(inner)?;
4050}
4051    if let crate::deps::aws_cryptography_materialProviders::types::KmsEcdhStaticConfigurations::KmsPrivateKeyToStaticPublicKey(ref inner) = &input {
4052  validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations_DKmsPrivateKeyToStaticPublicKey(inner)?;
4053}
4054    Ok(())
4055}
4056pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations_DKmsPrivateKeyToStaticPublicKey(
4057    input: &crate::deps::aws_cryptography_materialProviders::types::KmsPrivateKeyToStaticPublicKeyInput,
4058) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4059    validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput(input)?;
4060    Ok(())
4061}
4062pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsEcdhStaticConfigurations_DKmsPublicKeyDiscovery(
4063    input: &crate::deps::aws_cryptography_materialProviders::types::KmsPublicKeyDiscoveryInput,
4064) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4065    validate_aws_Pcryptography_PmaterialProviders_HKmsPublicKeyDiscoveryInput(input)?;
4066    Ok(())
4067}
4068pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsKeyIdList(
4069    input: &::std::vec::Vec<::std::string::String>,
4070) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4071    for inner in input.iter() {
4072        validate_aws_Pcryptography_PmaterialProviders_HKmsKeyIdList_Dmember(inner)?;
4073    }
4074    Ok(())
4075}
4076pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsKeyIdList_Dmember(
4077    input: &::std::string::String,
4078) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4079    Ok(())
4080}
4081pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput(
4082    input: &crate::deps::aws_cryptography_materialProviders::types::KmsPrivateKeyToStaticPublicKeyInput,
4083) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4084    validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DsenderKmsIdentifier(&input.r#sender_kms_identifier)?;
4085    validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DsenderPublicKey(&input.r#sender_public_key)?;
4086    validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(&input.r#recipient_public_key)?;
4087    Ok(())
4088}
4089pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(
4090    input: &::std::option::Option<::aws_smithy_types::Blob>,
4091) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4092    if input.is_none() {
4093        return ::std::result::Result::Err(
4094            ::aws_smithy_types::error::operation::BuildError::missing_field(
4095                "recipient_public_key",
4096                "recipient_public_key is required but was not specified",
4097            ),
4098        );
4099    }
4100    if input.is_none() {
4101        return ::std::result::Result::Ok(());
4102    }
4103    let input = input.as_ref().unwrap();
4104
4105    Ok(())
4106}
4107pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DsenderKmsIdentifier(
4108    input: &::std::option::Option<::std::string::String>,
4109) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4110    if input.is_none() {
4111        return ::std::result::Result::Err(
4112            ::aws_smithy_types::error::operation::BuildError::missing_field(
4113                "sender_kms_identifier",
4114                "sender_kms_identifier is required but was not specified",
4115            ),
4116        );
4117    }
4118    if input.is_none() {
4119        return ::std::result::Result::Ok(());
4120    }
4121    let input = input.as_ref().unwrap();
4122
4123    Ok(())
4124}
4125pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPrivateKeyToStaticPublicKeyInput_DsenderPublicKey(
4126    input: &::std::option::Option<::aws_smithy_types::Blob>,
4127) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4128    if input.is_none() {
4129        return ::std::result::Result::Ok(());
4130    }
4131    let input = input.as_ref().unwrap();
4132
4133    Ok(())
4134}
4135pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPublicKeyDiscoveryInput(
4136    input: &crate::deps::aws_cryptography_materialProviders::types::KmsPublicKeyDiscoveryInput,
4137) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4138    validate_aws_Pcryptography_PmaterialProviders_HKmsPublicKeyDiscoveryInput_DrecipientKmsIdentifier(&input.r#recipient_kms_identifier)?;
4139    Ok(())
4140}
4141pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HKmsPublicKeyDiscoveryInput_DrecipientKmsIdentifier(
4142    input: &::std::option::Option<::std::string::String>,
4143) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4144    if input.is_none() {
4145        return ::std::result::Result::Err(
4146            ::aws_smithy_types::error::operation::BuildError::missing_field(
4147                "recipient_kms_identifier",
4148                "recipient_kms_identifier is required but was not specified",
4149            ),
4150        );
4151    }
4152    if input.is_none() {
4153        return ::std::result::Result::Ok(());
4154    }
4155    let input = input.as_ref().unwrap();
4156
4157    Ok(())
4158}
4159pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterialProvidersConfig(
4160    input: &crate::deps::aws_cryptography_materialProviders::types::material_providers_config::MaterialProvidersConfig,
4161) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4162    Ok(())
4163}
4164pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterials(
4165    input: &crate::deps::aws_cryptography_materialProviders::types::Materials,
4166) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4167    if let crate::deps::aws_cryptography_materialProviders::types::Materials::Encryption(
4168        ref inner,
4169    ) = &input
4170    {
4171        validate_aws_Pcryptography_PmaterialProviders_HMaterials_DEncryption(inner)?;
4172    }
4173    if let crate::deps::aws_cryptography_materialProviders::types::Materials::Decryption(
4174        ref inner,
4175    ) = &input
4176    {
4177        validate_aws_Pcryptography_PmaterialProviders_HMaterials_DDecryption(inner)?;
4178    }
4179    if let crate::deps::aws_cryptography_materialProviders::types::Materials::BranchKey(ref inner) =
4180        &input
4181    {
4182        validate_aws_Pcryptography_PmaterialProviders_HMaterials_DBranchKey(inner)?;
4183    }
4184    if let crate::deps::aws_cryptography_materialProviders::types::Materials::BeaconKey(ref inner) =
4185        &input
4186    {
4187        validate_aws_Pcryptography_PmaterialProviders_HMaterials_DBeaconKey(inner)?;
4188    }
4189    Ok(())
4190}
4191pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterials_DBeaconKey(
4192    input: &crate::deps::aws_cryptography_keyStore::types::BeaconKeyMaterials,
4193) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4194    validate_aws_Pcryptography_PkeyStore_HBeaconKeyMaterials(input)?;
4195    Ok(())
4196}
4197pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterials_DBranchKey(
4198    input: &crate::deps::aws_cryptography_keyStore::types::BranchKeyMaterials,
4199) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4200    validate_aws_Pcryptography_PkeyStore_HBranchKeyMaterials(input)?;
4201    Ok(())
4202}
4203pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterials_DDecryption(
4204    input: &crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
4205) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4206    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
4207    Ok(())
4208}
4209pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMaterials_DEncryption(
4210    input: &crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
4211) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4212    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
4213    Ok(())
4214}
4215pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache(
4216    input: &crate::deps::aws_cryptography_materialProviders::types::MultiThreadedCache,
4217) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4218    validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache_DentryCapacity(
4219        &input.r#entry_capacity,
4220    )?;
4221    validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache_DentryPruningTailSize(
4222        &input.r#entry_pruning_tail_size,
4223    )?;
4224    Ok(())
4225}
4226pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache_DentryCapacity(
4227    input: &::std::option::Option<::std::primitive::i32>,
4228) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4229    if input.is_none() {
4230        return ::std::result::Result::Err(
4231            ::aws_smithy_types::error::operation::BuildError::missing_field(
4232                "entry_capacity",
4233                "entry_capacity is required but was not specified",
4234            ),
4235        );
4236    }
4237    if input.is_none() {
4238        return ::std::result::Result::Ok(());
4239    }
4240    let input = input.as_ref().unwrap();
4241
4242    if !(1..).contains(input) {
4243        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4244        "entry_capacity",
4245        "entry_capacity failed to satisfy constraint: Member must be greater than or equal to 1",
4246    ));
4247    }
4248    Ok(())
4249}
4250pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HMultiThreadedCache_DentryPruningTailSize(
4251    input: &::std::option::Option<::std::primitive::i32>,
4252) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4253    if input.is_none() {
4254        return ::std::result::Result::Ok(());
4255    }
4256    let input = input.as_ref().unwrap();
4257
4258    if !(1..).contains(input) {
4259        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4260        "entry_pruning_tail_size",
4261        "entry_pruning_tail_size failed to satisfy constraint: Member must be greater than or equal to 1",
4262    ));
4263    }
4264    Ok(())
4265}
4266pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HNoCache(
4267    input: &crate::deps::aws_cryptography_materialProviders::types::NoCache,
4268) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4269    Ok(())
4270}
4271pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HNone(
4272    input: &crate::deps::aws_cryptography_materialProviders::types::None,
4273) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4274    Ok(())
4275}
4276pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput(
4277    input: &crate::deps::aws_cryptography_materialProviders::types::OnDecryptInput,
4278) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4279    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_Dmaterials(&input.r#materials)?;
4280    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_DencryptedDataKeys(
4281        &input.r#encrypted_data_keys,
4282    )?;
4283    Ok(())
4284}
4285pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_for_Keyring_OnDecrypt(
4286    input: &crate::deps::aws_cryptography_materialProviders::operation::on_decrypt::OnDecryptInput,
4287) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4288    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_Dmaterials(&input.r#materials)?;
4289    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_DencryptedDataKeys(
4290        &input.r#encrypted_data_keys,
4291    )?;
4292    Ok(())
4293}
4294pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_DencryptedDataKeys(
4295    input: &::std::option::Option<
4296        ::std::vec::Vec<crate::deps::aws_cryptography_materialProviders::types::EncryptedDataKey>,
4297    >,
4298) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4299    if input.is_none() {
4300        return ::std::result::Result::Err(
4301            ::aws_smithy_types::error::operation::BuildError::missing_field(
4302                "encrypted_data_keys",
4303                "encrypted_data_keys is required but was not specified",
4304            ),
4305        );
4306    }
4307    if input.is_none() {
4308        return ::std::result::Result::Ok(());
4309    }
4310    let input = input.as_ref().unwrap();
4311
4312    validate_aws_Pcryptography_PmaterialProviders_HEncryptedDataKeyList(input)?;
4313    Ok(())
4314}
4315pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptInput_Dmaterials(
4316    input: &::std::option::Option<
4317        crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
4318    >,
4319) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4320    if input.is_none() {
4321        return ::std::result::Result::Err(
4322            ::aws_smithy_types::error::operation::BuildError::missing_field(
4323                "materials",
4324                "materials is required but was not specified",
4325            ),
4326        );
4327    }
4328    if input.is_none() {
4329        return ::std::result::Result::Ok(());
4330    }
4331    let input = input.as_ref().unwrap();
4332
4333    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
4334    Ok(())
4335}
4336pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptOutput(
4337    input: &crate::deps::aws_cryptography_materialProviders::types::OnDecryptOutput,
4338) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4339    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptOutput_Dmaterials(&input.r#materials)?;
4340    Ok(())
4341}
4342pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptOutput_for_Keyring_OnDecrypt(
4343    input: &crate::deps::aws_cryptography_materialProviders::operation::on_decrypt::OnDecryptOutput,
4344) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4345    validate_aws_Pcryptography_PmaterialProviders_HOnDecryptOutput_Dmaterials(&input.r#materials)?;
4346    Ok(())
4347}
4348pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnDecryptOutput_Dmaterials(
4349    input: &::std::option::Option<
4350        crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
4351    >,
4352) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4353    if input.is_none() {
4354        return ::std::result::Result::Err(
4355            ::aws_smithy_types::error::operation::BuildError::missing_field(
4356                "materials",
4357                "materials is required but was not specified",
4358            ),
4359        );
4360    }
4361    if input.is_none() {
4362        return ::std::result::Result::Ok(());
4363    }
4364    let input = input.as_ref().unwrap();
4365
4366    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
4367    Ok(())
4368}
4369pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptInput(
4370    input: &crate::deps::aws_cryptography_materialProviders::types::OnEncryptInput,
4371) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4372    validate_aws_Pcryptography_PmaterialProviders_HOnEncryptInput_Dmaterials(&input.r#materials)?;
4373    Ok(())
4374}
4375pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptInput_for_Keyring_OnEncrypt(
4376    input: &crate::deps::aws_cryptography_materialProviders::operation::on_encrypt::OnEncryptInput,
4377) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4378    validate_aws_Pcryptography_PmaterialProviders_HOnEncryptInput_Dmaterials(&input.r#materials)?;
4379    Ok(())
4380}
4381pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptInput_Dmaterials(
4382    input: &::std::option::Option<
4383        crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
4384    >,
4385) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4386    if input.is_none() {
4387        return ::std::result::Result::Err(
4388            ::aws_smithy_types::error::operation::BuildError::missing_field(
4389                "materials",
4390                "materials is required but was not specified",
4391            ),
4392        );
4393    }
4394    if input.is_none() {
4395        return ::std::result::Result::Ok(());
4396    }
4397    let input = input.as_ref().unwrap();
4398
4399    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
4400    Ok(())
4401}
4402pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptOutput(
4403    input: &crate::deps::aws_cryptography_materialProviders::types::OnEncryptOutput,
4404) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4405    validate_aws_Pcryptography_PmaterialProviders_HOnEncryptOutput_Dmaterials(&input.r#materials)?;
4406    Ok(())
4407}
4408pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptOutput_for_Keyring_OnEncrypt(
4409    input: &crate::deps::aws_cryptography_materialProviders::operation::on_encrypt::OnEncryptOutput,
4410) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4411    validate_aws_Pcryptography_PmaterialProviders_HOnEncryptOutput_Dmaterials(&input.r#materials)?;
4412    Ok(())
4413}
4414pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HOnEncryptOutput_Dmaterials(
4415    input: &::std::option::Option<
4416        crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
4417    >,
4418) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4419    if input.is_none() {
4420        return ::std::result::Result::Err(
4421            ::aws_smithy_types::error::operation::BuildError::missing_field(
4422                "materials",
4423                "materials is required but was not specified",
4424            ),
4425        );
4426    }
4427    if input.is_none() {
4428        return ::std::result::Result::Ok(());
4429    }
4430    let input = input.as_ref().unwrap();
4431
4432    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
4433    Ok(())
4434}
4435pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPublicKeyDiscoveryInput(
4436    input: &crate::deps::aws_cryptography_materialProviders::types::PublicKeyDiscoveryInput,
4437) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4438    validate_aws_Pcryptography_PmaterialProviders_HPublicKeyDiscoveryInput_DrecipientStaticPrivateKey(&input.r#recipient_static_private_key)?;
4439    Ok(())
4440}
4441pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPublicKeyDiscoveryInput_DrecipientStaticPrivateKey(
4442    input: &::std::option::Option<::aws_smithy_types::Blob>,
4443) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4444    if input.is_none() {
4445        return ::std::result::Result::Err(
4446            ::aws_smithy_types::error::operation::BuildError::missing_field(
4447                "recipient_static_private_key",
4448                "recipient_static_private_key is required but was not specified",
4449            ),
4450        );
4451    }
4452    if input.is_none() {
4453        return ::std::result::Result::Ok(());
4454    }
4455    let input = input.as_ref().unwrap();
4456
4457    Ok(())
4458}
4459pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput(
4460    input: &crate::deps::aws_cryptography_materialProviders::types::PutCacheEntryInput,
4461) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4462    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Didentifier(
4463        &input.r#identifier,
4464    )?;
4465    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Dmaterials(
4466        &input.r#materials,
4467    )?;
4468    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DcreationTime(
4469        &input.r#creation_time,
4470    )?;
4471    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DexpiryTime(
4472        &input.r#expiry_time,
4473    )?;
4474    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DmessagesUsed(
4475        &input.r#messages_used,
4476    )?;
4477    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DbytesUsed(
4478        &input.r#bytes_used,
4479    )?;
4480    Ok(())
4481}
4482pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_for_CryptographicMaterialsCache_PutCacheEntry(
4483    input: &crate::deps::aws_cryptography_materialProviders::operation::put_cache_entry::PutCacheEntryInput,
4484) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4485    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Didentifier(
4486        &input.r#identifier,
4487    )?;
4488    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Dmaterials(
4489        &input.r#materials,
4490    )?;
4491    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DcreationTime(
4492        &input.r#creation_time,
4493    )?;
4494    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DexpiryTime(
4495        &input.r#expiry_time,
4496    )?;
4497    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DmessagesUsed(
4498        &input.r#messages_used,
4499    )?;
4500    validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DbytesUsed(
4501        &input.r#bytes_used,
4502    )?;
4503    Ok(())
4504}
4505pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DbytesUsed(
4506    input: &::std::option::Option<::std::primitive::i32>,
4507) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4508    if input.is_none() {
4509        return ::std::result::Result::Ok(());
4510    }
4511    let input = input.as_ref().unwrap();
4512
4513    if !(0..).contains(input) {
4514        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4515        "bytes_used",
4516        "bytes_used failed to satisfy constraint: Member must be greater than or equal to 0",
4517    ));
4518    }
4519    Ok(())
4520}
4521pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DcreationTime(
4522    input: &::std::option::Option<::std::primitive::i64>,
4523) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4524    if input.is_none() {
4525        return ::std::result::Result::Err(
4526            ::aws_smithy_types::error::operation::BuildError::missing_field(
4527                "creation_time",
4528                "creation_time is required but was not specified",
4529            ),
4530        );
4531    }
4532    if input.is_none() {
4533        return ::std::result::Result::Ok(());
4534    }
4535    let input = input.as_ref().unwrap();
4536
4537    if !(0..).contains(input) {
4538        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4539        "creation_time",
4540        "creation_time failed to satisfy constraint: Member must be greater than or equal to 0",
4541    ));
4542    }
4543    Ok(())
4544}
4545pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DexpiryTime(
4546    input: &::std::option::Option<::std::primitive::i64>,
4547) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4548    if input.is_none() {
4549        return ::std::result::Result::Err(
4550            ::aws_smithy_types::error::operation::BuildError::missing_field(
4551                "expiry_time",
4552                "expiry_time is required but was not specified",
4553            ),
4554        );
4555    }
4556    if input.is_none() {
4557        return ::std::result::Result::Ok(());
4558    }
4559    let input = input.as_ref().unwrap();
4560
4561    if !(0..).contains(input) {
4562        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4563        "expiry_time",
4564        "expiry_time failed to satisfy constraint: Member must be greater than or equal to 0",
4565    ));
4566    }
4567    Ok(())
4568}
4569pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Didentifier(
4570    input: &::std::option::Option<::aws_smithy_types::Blob>,
4571) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4572    if input.is_none() {
4573        return ::std::result::Result::Err(
4574            ::aws_smithy_types::error::operation::BuildError::missing_field(
4575                "identifier",
4576                "identifier is required but was not specified",
4577            ),
4578        );
4579    }
4580    if input.is_none() {
4581        return ::std::result::Result::Ok(());
4582    }
4583    let input = input.as_ref().unwrap();
4584
4585    Ok(())
4586}
4587pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_Dmaterials(
4588    input: &::std::option::Option<
4589        crate::deps::aws_cryptography_materialProviders::types::Materials,
4590    >,
4591) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4592    if input.is_none() {
4593        return ::std::result::Result::Err(
4594            ::aws_smithy_types::error::operation::BuildError::missing_field(
4595                "materials",
4596                "materials is required but was not specified",
4597            ),
4598        );
4599    }
4600    if input.is_none() {
4601        return ::std::result::Result::Ok(());
4602    }
4603    let input = input.as_ref().unwrap();
4604
4605    validate_aws_Pcryptography_PmaterialProviders_HMaterials(input)?;
4606    Ok(())
4607}
4608pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HPutCacheEntryInput_DmessagesUsed(
4609    input: &::std::option::Option<::std::primitive::i32>,
4610) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4611    if input.is_none() {
4612        return ::std::result::Result::Ok(());
4613    }
4614    let input = input.as_ref().unwrap();
4615
4616    if !(0..).contains(input) {
4617        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4618        "messages_used",
4619        "messages_used failed to satisfy constraint: Member must be greater than or equal to 0",
4620    ));
4621    }
4622    Ok(())
4623}
4624pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations(
4625    input: &crate::deps::aws_cryptography_materialProviders::types::RawEcdhStaticConfigurations,
4626) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4627    if let crate::deps::aws_cryptography_materialProviders::types::RawEcdhStaticConfigurations::PublicKeyDiscovery(ref inner) = &input {
4628  validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DPublicKeyDiscovery(inner)?;
4629}
4630    if let crate::deps::aws_cryptography_materialProviders::types::RawEcdhStaticConfigurations::RawPrivateKeyToStaticPublicKey(ref inner) = &input {
4631  validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DRawPrivateKeyToStaticPublicKey(inner)?;
4632}
4633    if let crate::deps::aws_cryptography_materialProviders::types::RawEcdhStaticConfigurations::EphemeralPrivateKeyToStaticPublicKey(ref inner) = &input {
4634  validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DEphemeralPrivateKeyToStaticPublicKey(inner)?;
4635}
4636    Ok(())
4637}
4638pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DEphemeralPrivateKeyToStaticPublicKey(
4639    input: &crate::deps::aws_cryptography_materialProviders::types::EphemeralPrivateKeyToStaticPublicKeyInput,
4640) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4641    validate_aws_Pcryptography_PmaterialProviders_HEphemeralPrivateKeyToStaticPublicKeyInput(
4642        input,
4643    )?;
4644    Ok(())
4645}
4646pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DPublicKeyDiscovery(
4647    input: &crate::deps::aws_cryptography_materialProviders::types::PublicKeyDiscoveryInput,
4648) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4649    validate_aws_Pcryptography_PmaterialProviders_HPublicKeyDiscoveryInput(input)?;
4650    Ok(())
4651}
4652pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawEcdhStaticConfigurations_DRawPrivateKeyToStaticPublicKey(
4653    input: &crate::deps::aws_cryptography_materialProviders::types::RawPrivateKeyToStaticPublicKeyInput,
4654) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4655    validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput(input)?;
4656    Ok(())
4657}
4658pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput(
4659    input: &crate::deps::aws_cryptography_materialProviders::types::RawPrivateKeyToStaticPublicKeyInput,
4660) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4661    validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput_DsenderStaticPrivateKey(&input.r#sender_static_private_key)?;
4662    validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(&input.r#recipient_public_key)?;
4663    Ok(())
4664}
4665pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput_DrecipientPublicKey(
4666    input: &::std::option::Option<::aws_smithy_types::Blob>,
4667) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4668    if input.is_none() {
4669        return ::std::result::Result::Err(
4670            ::aws_smithy_types::error::operation::BuildError::missing_field(
4671                "recipient_public_key",
4672                "recipient_public_key is required but was not specified",
4673            ),
4674        );
4675    }
4676    if input.is_none() {
4677        return ::std::result::Result::Ok(());
4678    }
4679    let input = input.as_ref().unwrap();
4680
4681    Ok(())
4682}
4683pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRawPrivateKeyToStaticPublicKeyInput_DsenderStaticPrivateKey(
4684    input: &::std::option::Option<::aws_smithy_types::Blob>,
4685) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4686    if input.is_none() {
4687        return ::std::result::Result::Err(
4688            ::aws_smithy_types::error::operation::BuildError::missing_field(
4689                "sender_static_private_key",
4690                "sender_static_private_key is required but was not specified",
4691            ),
4692        );
4693    }
4694    if input.is_none() {
4695        return ::std::result::Result::Ok(());
4696    }
4697    let input = input.as_ref().unwrap();
4698
4699    Ok(())
4700}
4701pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRegionList(
4702    input: &::std::vec::Vec<::std::string::String>,
4703) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4704    for inner in input.iter() {
4705        validate_aws_Pcryptography_PmaterialProviders_HRegionList_Dmember(inner)?;
4706    }
4707    Ok(())
4708}
4709pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HRegionList_Dmember(
4710    input: &::std::string::String,
4711) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4712    Ok(())
4713}
4714pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm(
4715    input: &crate::deps::aws_cryptography_materialProviders::types::SignatureAlgorithm,
4716) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4717    if let crate::deps::aws_cryptography_materialProviders::types::SignatureAlgorithm::Ecdsa(
4718        ref inner,
4719    ) = &input
4720    {
4721        validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm_DECDSA(inner)?;
4722    }
4723    if let crate::deps::aws_cryptography_materialProviders::types::SignatureAlgorithm::None(
4724        ref inner,
4725    ) = &input
4726    {
4727        validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm_DNone(inner)?;
4728    }
4729    Ok(())
4730}
4731pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm_DECDSA(
4732    input: &crate::deps::aws_cryptography_materialProviders::types::Ecdsa,
4733) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4734    validate_aws_Pcryptography_PmaterialProviders_HECDSA(input)?;
4735    Ok(())
4736}
4737pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSignatureAlgorithm_DNone(
4738    input: &crate::deps::aws_cryptography_materialProviders::types::None,
4739) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4740    validate_aws_Pcryptography_PmaterialProviders_HNone(input)?;
4741    Ok(())
4742}
4743pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache(
4744    input: &crate::deps::aws_cryptography_materialProviders::types::SingleThreadedCache,
4745) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4746    validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache_DentryCapacity(
4747        &input.r#entry_capacity,
4748    )?;
4749    validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache_DentryPruningTailSize(
4750        &input.r#entry_pruning_tail_size,
4751    )?;
4752    Ok(())
4753}
4754pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache_DentryCapacity(
4755    input: &::std::option::Option<::std::primitive::i32>,
4756) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4757    if input.is_none() {
4758        return ::std::result::Result::Err(
4759            ::aws_smithy_types::error::operation::BuildError::missing_field(
4760                "entry_capacity",
4761                "entry_capacity is required but was not specified",
4762            ),
4763        );
4764    }
4765    if input.is_none() {
4766        return ::std::result::Result::Ok(());
4767    }
4768    let input = input.as_ref().unwrap();
4769
4770    if !(1..).contains(input) {
4771        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4772        "entry_capacity",
4773        "entry_capacity failed to satisfy constraint: Member must be greater than or equal to 1",
4774    ));
4775    }
4776    Ok(())
4777}
4778pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSingleThreadedCache_DentryPruningTailSize(
4779    input: &::std::option::Option<::std::primitive::i32>,
4780) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4781    if input.is_none() {
4782        return ::std::result::Result::Ok(());
4783    }
4784    let input = input.as_ref().unwrap();
4785
4786    if !(1..).contains(input) {
4787        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4788        "entry_pruning_tail_size",
4789        "entry_pruning_tail_size failed to satisfy constraint: Member must be greater than or equal to 1",
4790    ));
4791    }
4792    Ok(())
4793}
4794pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache(
4795    input: &crate::deps::aws_cryptography_materialProviders::types::StormTrackingCache,
4796) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4797    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DentryCapacity(
4798        &input.r#entry_capacity,
4799    )?;
4800    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DentryPruningTailSize(
4801        &input.r#entry_pruning_tail_size,
4802    )?;
4803    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DgracePeriod(
4804        &input.r#grace_period,
4805    )?;
4806    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DgraceInterval(
4807        &input.r#grace_interval,
4808    )?;
4809    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DfanOut(&input.r#fan_out)?;
4810    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DinFlightTTL(
4811        &input.r#in_flight_ttl,
4812    )?;
4813    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DsleepMilli(
4814        &input.r#sleep_milli,
4815    )?;
4816    validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DtimeUnits(
4817        &input.r#time_units,
4818    )?;
4819    Ok(())
4820}
4821pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DentryCapacity(
4822    input: &::std::option::Option<::std::primitive::i32>,
4823) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4824    if input.is_none() {
4825        return ::std::result::Result::Err(
4826            ::aws_smithy_types::error::operation::BuildError::missing_field(
4827                "entry_capacity",
4828                "entry_capacity is required but was not specified",
4829            ),
4830        );
4831    }
4832    if input.is_none() {
4833        return ::std::result::Result::Ok(());
4834    }
4835    let input = input.as_ref().unwrap();
4836
4837    if !(1..).contains(input) {
4838        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4839        "entry_capacity",
4840        "entry_capacity failed to satisfy constraint: Member must be greater than or equal to 1",
4841    ));
4842    }
4843    Ok(())
4844}
4845pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DentryPruningTailSize(
4846    input: &::std::option::Option<::std::primitive::i32>,
4847) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4848    if input.is_none() {
4849        return ::std::result::Result::Ok(());
4850    }
4851    let input = input.as_ref().unwrap();
4852
4853    if !(1..).contains(input) {
4854        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4855        "entry_pruning_tail_size",
4856        "entry_pruning_tail_size failed to satisfy constraint: Member must be greater than or equal to 1",
4857    ));
4858    }
4859    Ok(())
4860}
4861pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DfanOut(
4862    input: &::std::option::Option<::std::primitive::i32>,
4863) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4864    if input.is_none() {
4865        return ::std::result::Result::Err(
4866            ::aws_smithy_types::error::operation::BuildError::missing_field(
4867                "fan_out",
4868                "fan_out is required but was not specified",
4869            ),
4870        );
4871    }
4872    if input.is_none() {
4873        return ::std::result::Result::Ok(());
4874    }
4875    let input = input.as_ref().unwrap();
4876
4877    if !(1..).contains(input) {
4878        return ::std::result::Result::Err(
4879            ::aws_smithy_types::error::operation::BuildError::invalid_field(
4880                "fan_out",
4881                "fan_out failed to satisfy constraint: Member must be greater than or equal to 1",
4882            ),
4883        );
4884    }
4885    Ok(())
4886}
4887pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DgraceInterval(
4888    input: &::std::option::Option<::std::primitive::i32>,
4889) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4890    if input.is_none() {
4891        return ::std::result::Result::Err(
4892            ::aws_smithy_types::error::operation::BuildError::missing_field(
4893                "grace_interval",
4894                "grace_interval is required but was not specified",
4895            ),
4896        );
4897    }
4898    if input.is_none() {
4899        return ::std::result::Result::Ok(());
4900    }
4901    let input = input.as_ref().unwrap();
4902
4903    if !(1..).contains(input) {
4904        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4905        "grace_interval",
4906        "grace_interval failed to satisfy constraint: Member must be greater than or equal to 1",
4907    ));
4908    }
4909    Ok(())
4910}
4911pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DgracePeriod(
4912    input: &::std::option::Option<::std::primitive::i32>,
4913) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4914    if input.is_none() {
4915        return ::std::result::Result::Err(
4916            ::aws_smithy_types::error::operation::BuildError::missing_field(
4917                "grace_period",
4918                "grace_period is required but was not specified",
4919            ),
4920        );
4921    }
4922    if input.is_none() {
4923        return ::std::result::Result::Ok(());
4924    }
4925    let input = input.as_ref().unwrap();
4926
4927    if !(1..).contains(input) {
4928        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4929        "grace_period",
4930        "grace_period failed to satisfy constraint: Member must be greater than or equal to 1",
4931    ));
4932    }
4933    Ok(())
4934}
4935pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DinFlightTTL(
4936    input: &::std::option::Option<::std::primitive::i32>,
4937) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4938    if input.is_none() {
4939        return ::std::result::Result::Err(
4940            ::aws_smithy_types::error::operation::BuildError::missing_field(
4941                "in_flight_ttl",
4942                "in_flight_ttl is required but was not specified",
4943            ),
4944        );
4945    }
4946    if input.is_none() {
4947        return ::std::result::Result::Ok(());
4948    }
4949    let input = input.as_ref().unwrap();
4950
4951    if !(1..).contains(input) {
4952        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4953        "in_flight_ttl",
4954        "in_flight_ttl failed to satisfy constraint: Member must be greater than or equal to 1",
4955    ));
4956    }
4957    Ok(())
4958}
4959pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DsleepMilli(
4960    input: &::std::option::Option<::std::primitive::i32>,
4961) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4962    if input.is_none() {
4963        return ::std::result::Result::Err(
4964            ::aws_smithy_types::error::operation::BuildError::missing_field(
4965                "sleep_milli",
4966                "sleep_milli is required but was not specified",
4967            ),
4968        );
4969    }
4970    if input.is_none() {
4971        return ::std::result::Result::Ok(());
4972    }
4973    let input = input.as_ref().unwrap();
4974
4975    if !(1..).contains(input) {
4976        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
4977        "sleep_milli",
4978        "sleep_milli failed to satisfy constraint: Member must be greater than or equal to 1",
4979    ));
4980    }
4981    Ok(())
4982}
4983pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HStormTrackingCache_DtimeUnits(
4984    input: &::std::option::Option<
4985        crate::deps::aws_cryptography_materialProviders::types::TimeUnits,
4986    >,
4987) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4988    if input.is_none() {
4989        return ::std::result::Result::Ok(());
4990    }
4991    let input = input.as_ref().unwrap();
4992
4993    Ok(())
4994}
4995pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm(
4996    input: &crate::deps::aws_cryptography_materialProviders::types::SymmetricSignatureAlgorithm,
4997) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
4998    if let crate::deps::aws_cryptography_materialProviders::types::SymmetricSignatureAlgorithm::Hmac(ref inner) = &input {
4999  validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm_DHMAC(inner)?;
5000}
5001    if let crate::deps::aws_cryptography_materialProviders::types::SymmetricSignatureAlgorithm::None(ref inner) = &input {
5002  validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm_DNone(inner)?;
5003}
5004    Ok(())
5005}
5006pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm_DHMAC(
5007    input: &crate::deps::aws_cryptography_primitives::types::DigestAlgorithm,
5008) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5009    Ok(())
5010}
5011pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSymmetricSignatureAlgorithm_DNone(
5012    input: &crate::deps::aws_cryptography_materialProviders::types::None,
5013) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5014    validate_aws_Pcryptography_PmaterialProviders_HNone(input)?;
5015    Ok(())
5016}
5017pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSymmetricSigningKeyList(
5018    input: &::std::vec::Vec<::aws_smithy_types::Blob>,
5019) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5020    for inner in input.iter() {
5021        validate_aws_Pcryptography_PmaterialProviders_HSymmetricSigningKeyList_Dmember(inner)?;
5022    }
5023    Ok(())
5024}
5025pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HSymmetricSigningKeyList_Dmember(
5026    input: &::aws_smithy_types::Blob,
5027) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5028    Ok(())
5029}
5030pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput(
5031    input: &crate::deps::aws_cryptography_materialProviders::types::UpdateUsageMetadataInput,
5032) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5033    validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_Didentifier(
5034        &input.r#identifier,
5035    )?;
5036    validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_DbytesUsed(
5037        &input.r#bytes_used,
5038    )?;
5039    Ok(())
5040}
5041pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_for_CryptographicMaterialsCache_UpdateUsageMetadata(
5042    input: &crate::deps::aws_cryptography_materialProviders::operation::update_usage_metadata::UpdateUsageMetadataInput,
5043) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5044    validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_Didentifier(
5045        &input.r#identifier,
5046    )?;
5047    validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_DbytesUsed(
5048        &input.r#bytes_used,
5049    )?;
5050    Ok(())
5051}
5052pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_DbytesUsed(
5053    input: &::std::option::Option<::std::primitive::i32>,
5054) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5055    if input.is_none() {
5056        return ::std::result::Result::Err(
5057            ::aws_smithy_types::error::operation::BuildError::missing_field(
5058                "bytes_used",
5059                "bytes_used is required but was not specified",
5060            ),
5061        );
5062    }
5063    if input.is_none() {
5064        return ::std::result::Result::Ok(());
5065    }
5066    let input = input.as_ref().unwrap();
5067
5068    if !(0..).contains(input) {
5069        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
5070        "bytes_used",
5071        "bytes_used failed to satisfy constraint: Member must be greater than or equal to 0",
5072    ));
5073    }
5074    Ok(())
5075}
5076pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HUpdateUsageMetadataInput_Didentifier(
5077    input: &::std::option::Option<::aws_smithy_types::Blob>,
5078) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5079    if input.is_none() {
5080        return ::std::result::Result::Err(
5081            ::aws_smithy_types::error::operation::BuildError::missing_field(
5082                "identifier",
5083                "identifier is required but was not specified",
5084            ),
5085        );
5086    }
5087    if input.is_none() {
5088        return ::std::result::Result::Ok(());
5089    }
5090    let input = input.as_ref().unwrap();
5091
5092    Ok(())
5093}
5094pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput(
5095    input: &crate::deps::aws_cryptography_materialProviders::types::ValidateCommitmentPolicyOnDecryptInput,
5096) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5097    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_Dalgorithm(&input.r#algorithm)?;
5098    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_DcommitmentPolicy(&input.r#commitment_policy)?;
5099    Ok(())
5100}
5101pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_for_AwsCryptographicMaterialProviders_ValidateCommitmentPolicyOnDecrypt(
5102    input: &crate::deps::aws_cryptography_materialProviders::operation::validate_commitment_policy_on_decrypt::ValidateCommitmentPolicyOnDecryptInput,
5103) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5104    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_Dalgorithm(&input.r#algorithm)?;
5105    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_DcommitmentPolicy(&input.r#commitment_policy)?;
5106    Ok(())
5107}
5108pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_Dalgorithm(
5109    input: &::std::option::Option<
5110        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
5111    >,
5112) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5113    if input.is_none() {
5114        return ::std::result::Result::Err(
5115            ::aws_smithy_types::error::operation::BuildError::missing_field(
5116                "algorithm",
5117                "algorithm is required but was not specified",
5118            ),
5119        );
5120    }
5121    if input.is_none() {
5122        return ::std::result::Result::Ok(());
5123    }
5124    let input = input.as_ref().unwrap();
5125
5126    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
5127    Ok(())
5128}
5129pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnDecryptInput_DcommitmentPolicy(
5130    input: &::std::option::Option<
5131        crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy,
5132    >,
5133) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5134    if input.is_none() {
5135        return ::std::result::Result::Err(
5136            ::aws_smithy_types::error::operation::BuildError::missing_field(
5137                "commitment_policy",
5138                "commitment_policy is required but was not specified",
5139            ),
5140        );
5141    }
5142    if input.is_none() {
5143        return ::std::result::Result::Ok(());
5144    }
5145    let input = input.as_ref().unwrap();
5146
5147    validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy(input)?;
5148    Ok(())
5149}
5150pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput(
5151    input: &crate::deps::aws_cryptography_materialProviders::types::ValidateCommitmentPolicyOnEncryptInput,
5152) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5153    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_Dalgorithm(&input.r#algorithm)?;
5154    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_DcommitmentPolicy(&input.r#commitment_policy)?;
5155    Ok(())
5156}
5157pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_for_AwsCryptographicMaterialProviders_ValidateCommitmentPolicyOnEncrypt(
5158    input: &crate::deps::aws_cryptography_materialProviders::operation::validate_commitment_policy_on_encrypt::ValidateCommitmentPolicyOnEncryptInput,
5159) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5160    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_Dalgorithm(&input.r#algorithm)?;
5161    validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_DcommitmentPolicy(&input.r#commitment_policy)?;
5162    Ok(())
5163}
5164pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_Dalgorithm(
5165    input: &::std::option::Option<
5166        crate::deps::aws_cryptography_materialProviders::types::AlgorithmSuiteId,
5167    >,
5168) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5169    if input.is_none() {
5170        return ::std::result::Result::Err(
5171            ::aws_smithy_types::error::operation::BuildError::missing_field(
5172                "algorithm",
5173                "algorithm is required but was not specified",
5174            ),
5175        );
5176    }
5177    if input.is_none() {
5178        return ::std::result::Result::Ok(());
5179    }
5180    let input = input.as_ref().unwrap();
5181
5182    validate_aws_Pcryptography_PmaterialProviders_HAlgorithmSuiteId(input)?;
5183    Ok(())
5184}
5185pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidateCommitmentPolicyOnEncryptInput_DcommitmentPolicy(
5186    input: &::std::option::Option<
5187        crate::deps::aws_cryptography_materialProviders::types::CommitmentPolicy,
5188    >,
5189) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5190    if input.is_none() {
5191        return ::std::result::Result::Err(
5192            ::aws_smithy_types::error::operation::BuildError::missing_field(
5193                "commitment_policy",
5194                "commitment_policy is required but was not specified",
5195            ),
5196        );
5197    }
5198    if input.is_none() {
5199        return ::std::result::Result::Ok(());
5200    }
5201    let input = input.as_ref().unwrap();
5202
5203    validate_aws_Pcryptography_PmaterialProviders_HCommitmentPolicy(input)?;
5204    Ok(())
5205}
5206pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput(
5207    input: &crate::deps::aws_cryptography_materialProviders::types::ValidDecryptionMaterialsTransitionInput,
5208) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5209    validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstart(
5210        &input.r#start,
5211    )?;
5212    validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstop(
5213        &input.r#stop,
5214    )?;
5215    Ok(())
5216}
5217pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_for_AwsCryptographicMaterialProviders_ValidDecryptionMaterialsTransition(
5218    input: &crate::deps::aws_cryptography_materialProviders::operation::valid_decryption_materials_transition::ValidDecryptionMaterialsTransitionInput,
5219) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5220    validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstart(
5221        &input.r#start,
5222    )?;
5223    validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstop(
5224        &input.r#stop,
5225    )?;
5226    Ok(())
5227}
5228pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstart(
5229    input: &::std::option::Option<
5230        crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
5231    >,
5232) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5233    if input.is_none() {
5234        return ::std::result::Result::Err(
5235            ::aws_smithy_types::error::operation::BuildError::missing_field(
5236                "start",
5237                "start is required but was not specified",
5238            ),
5239        );
5240    }
5241    if input.is_none() {
5242        return ::std::result::Result::Ok(());
5243    }
5244    let input = input.as_ref().unwrap();
5245
5246    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
5247    Ok(())
5248}
5249pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidDecryptionMaterialsTransitionInput_Dstop(
5250    input: &::std::option::Option<
5251        crate::deps::aws_cryptography_materialProviders::types::DecryptionMaterials,
5252    >,
5253) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5254    if input.is_none() {
5255        return ::std::result::Result::Err(
5256            ::aws_smithy_types::error::operation::BuildError::missing_field(
5257                "stop",
5258                "stop is required but was not specified",
5259            ),
5260        );
5261    }
5262    if input.is_none() {
5263        return ::std::result::Result::Ok(());
5264    }
5265    let input = input.as_ref().unwrap();
5266
5267    validate_aws_Pcryptography_PmaterialProviders_HDecryptionMaterials(input)?;
5268    Ok(())
5269}
5270pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput(
5271    input: &crate::deps::aws_cryptography_materialProviders::types::ValidEncryptionMaterialsTransitionInput,
5272) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5273    validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstart(
5274        &input.r#start,
5275    )?;
5276    validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstop(
5277        &input.r#stop,
5278    )?;
5279    Ok(())
5280}
5281pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_for_AwsCryptographicMaterialProviders_ValidEncryptionMaterialsTransition(
5282    input: &crate::deps::aws_cryptography_materialProviders::operation::valid_encryption_materials_transition::ValidEncryptionMaterialsTransitionInput,
5283) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5284    validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstart(
5285        &input.r#start,
5286    )?;
5287    validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstop(
5288        &input.r#stop,
5289    )?;
5290    Ok(())
5291}
5292pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstart(
5293    input: &::std::option::Option<
5294        crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
5295    >,
5296) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5297    if input.is_none() {
5298        return ::std::result::Result::Err(
5299            ::aws_smithy_types::error::operation::BuildError::missing_field(
5300                "start",
5301                "start is required but was not specified",
5302            ),
5303        );
5304    }
5305    if input.is_none() {
5306        return ::std::result::Result::Ok(());
5307    }
5308    let input = input.as_ref().unwrap();
5309
5310    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
5311    Ok(())
5312}
5313pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HValidEncryptionMaterialsTransitionInput_Dstop(
5314    input: &::std::option::Option<
5315        crate::deps::aws_cryptography_materialProviders::types::EncryptionMaterials,
5316    >,
5317) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5318    if input.is_none() {
5319        return ::std::result::Result::Err(
5320            ::aws_smithy_types::error::operation::BuildError::missing_field(
5321                "stop",
5322                "stop is required but was not specified",
5323            ),
5324        );
5325    }
5326    if input.is_none() {
5327        return ::std::result::Result::Ok(());
5328    }
5329    let input = input.as_ref().unwrap();
5330
5331    validate_aws_Pcryptography_PmaterialProviders_HEncryptionMaterials(input)?;
5332    Ok(())
5333}
5334pub(crate) fn validate_aws_Pcryptography_Pprimitives_HAES__GCM(
5335    input: &crate::deps::aws_cryptography_primitives::types::AesGcm,
5336) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5337    validate_aws_Pcryptography_Pprimitives_HAES__GCM_DkeyLength(&input.r#key_length)?;
5338    validate_aws_Pcryptography_Pprimitives_HAES__GCM_DtagLength(&input.r#tag_length)?;
5339    validate_aws_Pcryptography_Pprimitives_HAES__GCM_DivLength(&input.r#iv_length)?;
5340    Ok(())
5341}
5342pub(crate) fn validate_aws_Pcryptography_Pprimitives_HAES__GCM_DivLength(
5343    input: &::std::option::Option<::std::primitive::i32>,
5344) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5345    if input.is_none() {
5346        return ::std::result::Result::Err(
5347            ::aws_smithy_types::error::operation::BuildError::missing_field(
5348                "iv_length",
5349                "iv_length is required but was not specified",
5350            ),
5351        );
5352    }
5353    if input.is_none() {
5354        return ::std::result::Result::Ok(());
5355    }
5356    let input = input.as_ref().unwrap();
5357
5358    if !(0..=255).contains(input) {
5359        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
5360        "iv_length",
5361        "iv_length failed to satisfy constraint: Member must be between 0 and 255, inclusive",
5362    ));
5363    }
5364    Ok(())
5365}
5366pub(crate) fn validate_aws_Pcryptography_Pprimitives_HAES__GCM_DkeyLength(
5367    input: &::std::option::Option<::std::primitive::i32>,
5368) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5369    if input.is_none() {
5370        return ::std::result::Result::Err(
5371            ::aws_smithy_types::error::operation::BuildError::missing_field(
5372                "key_length",
5373                "key_length is required but was not specified",
5374            ),
5375        );
5376    }
5377    if input.is_none() {
5378        return ::std::result::Result::Ok(());
5379    }
5380    let input = input.as_ref().unwrap();
5381
5382    if !(1..=32).contains(input) {
5383        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
5384        "key_length",
5385        "key_length failed to satisfy constraint: Member must be between 1 and 32, inclusive",
5386    ));
5387    }
5388    Ok(())
5389}
5390pub(crate) fn validate_aws_Pcryptography_Pprimitives_HAES__GCM_DtagLength(
5391    input: &::std::option::Option<::std::primitive::i32>,
5392) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5393    if input.is_none() {
5394        return ::std::result::Result::Err(
5395            ::aws_smithy_types::error::operation::BuildError::missing_field(
5396                "tag_length",
5397                "tag_length is required but was not specified",
5398            ),
5399        );
5400    }
5401    if input.is_none() {
5402        return ::std::result::Result::Ok(());
5403    }
5404    let input = input.as_ref().unwrap();
5405
5406    if !(0..=32).contains(input) {
5407        return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field(
5408        "tag_length",
5409        "tag_length failed to satisfy constraint: Member must be between 0 and 32, inclusive",
5410    ));
5411    }
5412    Ok(())
5413}
5414pub(crate) fn validate_smithy_Papi_HUnit(
5415    input: &(),
5416) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5417    Ok(())
5418}
5419pub(crate) fn validate_smithy_Papi_HUnit_for_KeyStore_GetKeyStoreInfo(
5420    input: &crate::deps::aws_cryptography_keyStore::operation::get_key_store_info::Unit,
5421) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
5422    Ok(())
5423}