1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_kms_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct AsymmetricPrivateKeySignRequest {
16 pub data: fidl_fuchsia_mem::Buffer,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for AsymmetricPrivateKeySignRequest
21{
22}
23
24#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
25pub struct KeyManagerGenerateAsymmetricKeyRequest {
26 pub key_name: String,
27 pub key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for KeyManagerGenerateAsymmetricKeyRequest
32{
33}
34
35#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
36pub struct KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest {
37 pub key_name: String,
38 pub key_algorithm: AsymmetricKeyAlgorithm,
39 pub key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
40}
41
42impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
43 for KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest
44{
45}
46
47#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
48pub struct KeyManagerGetAsymmetricPrivateKeyRequest {
49 pub key_name: String,
50 pub key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
51}
52
53impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
54 for KeyManagerGetAsymmetricPrivateKeyRequest
55{
56}
57
58#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
59pub struct KeyManagerImportAsymmetricPrivateKeyRequest {
60 pub data: Vec<u8>,
61 pub key_name: String,
62 pub key_algorithm: AsymmetricKeyAlgorithm,
63 pub key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
64}
65
66impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
67 for KeyManagerImportAsymmetricPrivateKeyRequest
68{
69}
70
71#[derive(Debug, PartialEq)]
72pub struct KeyManagerSealDataRequest {
73 pub plain_text: fidl_fuchsia_mem::Buffer,
74}
75
76impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for KeyManagerSealDataRequest {}
77
78#[derive(Debug, PartialEq)]
79pub struct KeyManagerUnsealDataRequest {
80 pub cipher_text: fidl_fuchsia_mem::Buffer,
81}
82
83impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
84 for KeyManagerUnsealDataRequest
85{
86}
87
88#[derive(Debug, PartialEq)]
89pub struct KeyManagerSealDataResponse {
90 pub cipher_text: fidl_fuchsia_mem::Buffer,
91}
92
93impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
94 for KeyManagerSealDataResponse
95{
96}
97
98#[derive(Debug, PartialEq)]
99pub struct KeyManagerUnsealDataResponse {
100 pub plain_text: fidl_fuchsia_mem::Buffer,
101}
102
103impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
104 for KeyManagerUnsealDataResponse
105{
106}
107
108#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
109pub struct AsymmetricPrivateKeyMarker;
110
111impl fidl::endpoints::ProtocolMarker for AsymmetricPrivateKeyMarker {
112 type Proxy = AsymmetricPrivateKeyProxy;
113 type RequestStream = AsymmetricPrivateKeyRequestStream;
114 #[cfg(target_os = "fuchsia")]
115 type SynchronousProxy = AsymmetricPrivateKeySynchronousProxy;
116
117 const DEBUG_NAME: &'static str = "(anonymous) AsymmetricPrivateKey";
118}
119pub type AsymmetricPrivateKeySignResult = Result<Signature, Error>;
120pub type AsymmetricPrivateKeyGetPublicKeyResult = Result<PublicKey, Error>;
121pub type AsymmetricPrivateKeyGetKeyAlgorithmResult = Result<AsymmetricKeyAlgorithm, Error>;
122
123pub trait AsymmetricPrivateKeyProxyInterface: Send + Sync {
124 type GetKeyOriginResponseFut: std::future::Future<Output = Result<KeyGetKeyOriginResult, fidl::Error>>
125 + Send;
126 fn r#get_key_origin(&self) -> Self::GetKeyOriginResponseFut;
127 type GetKeyProviderResponseFut: std::future::Future<Output = Result<KeyGetKeyProviderResult, fidl::Error>>
128 + Send;
129 fn r#get_key_provider(&self) -> Self::GetKeyProviderResponseFut;
130 type SignResponseFut: std::future::Future<Output = Result<AsymmetricPrivateKeySignResult, fidl::Error>>
131 + Send;
132 fn r#sign(&self, data: fidl_fuchsia_mem::Buffer) -> Self::SignResponseFut;
133 type GetPublicKeyResponseFut: std::future::Future<Output = Result<AsymmetricPrivateKeyGetPublicKeyResult, fidl::Error>>
134 + Send;
135 fn r#get_public_key(&self) -> Self::GetPublicKeyResponseFut;
136 type GetKeyAlgorithmResponseFut: std::future::Future<Output = Result<AsymmetricPrivateKeyGetKeyAlgorithmResult, fidl::Error>>
137 + Send;
138 fn r#get_key_algorithm(&self) -> Self::GetKeyAlgorithmResponseFut;
139}
140#[derive(Debug)]
141#[cfg(target_os = "fuchsia")]
142pub struct AsymmetricPrivateKeySynchronousProxy {
143 client: fidl::client::sync::Client,
144}
145
146#[cfg(target_os = "fuchsia")]
147impl fidl::endpoints::SynchronousProxy for AsymmetricPrivateKeySynchronousProxy {
148 type Proxy = AsymmetricPrivateKeyProxy;
149 type Protocol = AsymmetricPrivateKeyMarker;
150
151 fn from_channel(inner: fidl::Channel) -> Self {
152 Self::new(inner)
153 }
154
155 fn into_channel(self) -> fidl::Channel {
156 self.client.into_channel()
157 }
158
159 fn as_channel(&self) -> &fidl::Channel {
160 self.client.as_channel()
161 }
162}
163
164#[cfg(target_os = "fuchsia")]
165impl AsymmetricPrivateKeySynchronousProxy {
166 pub fn new(channel: fidl::Channel) -> Self {
167 Self { client: fidl::client::sync::Client::new(channel) }
168 }
169
170 pub fn into_channel(self) -> fidl::Channel {
171 self.client.into_channel()
172 }
173
174 pub fn wait_for_event(
177 &self,
178 deadline: zx::MonotonicInstant,
179 ) -> Result<AsymmetricPrivateKeyEvent, fidl::Error> {
180 AsymmetricPrivateKeyEvent::decode(
181 self.client.wait_for_event::<AsymmetricPrivateKeyMarker>(deadline)?,
182 )
183 }
184
185 pub fn r#get_key_origin(
187 &self,
188 ___deadline: zx::MonotonicInstant,
189 ) -> Result<KeyGetKeyOriginResult, fidl::Error> {
190 let _response = self.client.send_query::<
191 fidl::encoding::EmptyPayload,
192 fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>,
193 AsymmetricPrivateKeyMarker,
194 >(
195 (),
196 0x3e439554159e7b86,
197 fidl::encoding::DynamicFlags::empty(),
198 ___deadline,
199 )?;
200 Ok(_response.map(|x| x.key_origin))
201 }
202
203 pub fn r#get_key_provider(
205 &self,
206 ___deadline: zx::MonotonicInstant,
207 ) -> Result<KeyGetKeyProviderResult, fidl::Error> {
208 let _response = self.client.send_query::<
209 fidl::encoding::EmptyPayload,
210 fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>,
211 AsymmetricPrivateKeyMarker,
212 >(
213 (),
214 0x68e2cd7ec0532e0c,
215 fidl::encoding::DynamicFlags::empty(),
216 ___deadline,
217 )?;
218 Ok(_response.map(|x| x.key_provider))
219 }
220
221 pub fn r#sign(
223 &self,
224 mut data: fidl_fuchsia_mem::Buffer,
225 ___deadline: zx::MonotonicInstant,
226 ) -> Result<AsymmetricPrivateKeySignResult, fidl::Error> {
227 let _response = self.client.send_query::<
228 AsymmetricPrivateKeySignRequest,
229 fidl::encoding::ResultType<AsymmetricPrivateKeySignResponse, Error>,
230 AsymmetricPrivateKeyMarker,
231 >(
232 (&mut data,),
233 0x524ba8b350c2542e,
234 fidl::encoding::DynamicFlags::empty(),
235 ___deadline,
236 )?;
237 Ok(_response.map(|x| x.signature))
238 }
239
240 pub fn r#get_public_key(
242 &self,
243 ___deadline: zx::MonotonicInstant,
244 ) -> Result<AsymmetricPrivateKeyGetPublicKeyResult, fidl::Error> {
245 let _response =
246 self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
247 AsymmetricPrivateKeyGetPublicKeyResponse,
248 Error,
249 >, AsymmetricPrivateKeyMarker>(
250 (),
251 0x5439aff00ed261f3,
252 fidl::encoding::DynamicFlags::empty(),
253 ___deadline,
254 )?;
255 Ok(_response.map(|x| x.public_key))
256 }
257
258 pub fn r#get_key_algorithm(
260 &self,
261 ___deadline: zx::MonotonicInstant,
262 ) -> Result<AsymmetricPrivateKeyGetKeyAlgorithmResult, fidl::Error> {
263 let _response =
264 self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
265 AsymmetricPrivateKeyGetKeyAlgorithmResponse,
266 Error,
267 >, AsymmetricPrivateKeyMarker>(
268 (),
269 0xe0ce6b5b815b1ae,
270 fidl::encoding::DynamicFlags::empty(),
271 ___deadline,
272 )?;
273 Ok(_response.map(|x| x.key_algorithm))
274 }
275}
276
277#[cfg(target_os = "fuchsia")]
278impl From<AsymmetricPrivateKeySynchronousProxy> for zx::NullableHandle {
279 fn from(value: AsymmetricPrivateKeySynchronousProxy) -> Self {
280 value.into_channel().into()
281 }
282}
283
284#[cfg(target_os = "fuchsia")]
285impl From<fidl::Channel> for AsymmetricPrivateKeySynchronousProxy {
286 fn from(value: fidl::Channel) -> Self {
287 Self::new(value)
288 }
289}
290
291#[cfg(target_os = "fuchsia")]
292impl fidl::endpoints::FromClient for AsymmetricPrivateKeySynchronousProxy {
293 type Protocol = AsymmetricPrivateKeyMarker;
294
295 fn from_client(value: fidl::endpoints::ClientEnd<AsymmetricPrivateKeyMarker>) -> Self {
296 Self::new(value.into_channel())
297 }
298}
299
300#[derive(Debug, Clone)]
301pub struct AsymmetricPrivateKeyProxy {
302 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
303}
304
305impl fidl::endpoints::Proxy for AsymmetricPrivateKeyProxy {
306 type Protocol = AsymmetricPrivateKeyMarker;
307
308 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
309 Self::new(inner)
310 }
311
312 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
313 self.client.into_channel().map_err(|client| Self { client })
314 }
315
316 fn as_channel(&self) -> &::fidl::AsyncChannel {
317 self.client.as_channel()
318 }
319}
320
321impl AsymmetricPrivateKeyProxy {
322 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
324 let protocol_name =
325 <AsymmetricPrivateKeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
326 Self { client: fidl::client::Client::new(channel, protocol_name) }
327 }
328
329 pub fn take_event_stream(&self) -> AsymmetricPrivateKeyEventStream {
335 AsymmetricPrivateKeyEventStream { event_receiver: self.client.take_event_receiver() }
336 }
337
338 pub fn r#get_key_origin(
340 &self,
341 ) -> fidl::client::QueryResponseFut<
342 KeyGetKeyOriginResult,
343 fidl::encoding::DefaultFuchsiaResourceDialect,
344 > {
345 AsymmetricPrivateKeyProxyInterface::r#get_key_origin(self)
346 }
347
348 pub fn r#get_key_provider(
350 &self,
351 ) -> fidl::client::QueryResponseFut<
352 KeyGetKeyProviderResult,
353 fidl::encoding::DefaultFuchsiaResourceDialect,
354 > {
355 AsymmetricPrivateKeyProxyInterface::r#get_key_provider(self)
356 }
357
358 pub fn r#sign(
360 &self,
361 mut data: fidl_fuchsia_mem::Buffer,
362 ) -> fidl::client::QueryResponseFut<
363 AsymmetricPrivateKeySignResult,
364 fidl::encoding::DefaultFuchsiaResourceDialect,
365 > {
366 AsymmetricPrivateKeyProxyInterface::r#sign(self, data)
367 }
368
369 pub fn r#get_public_key(
371 &self,
372 ) -> fidl::client::QueryResponseFut<
373 AsymmetricPrivateKeyGetPublicKeyResult,
374 fidl::encoding::DefaultFuchsiaResourceDialect,
375 > {
376 AsymmetricPrivateKeyProxyInterface::r#get_public_key(self)
377 }
378
379 pub fn r#get_key_algorithm(
381 &self,
382 ) -> fidl::client::QueryResponseFut<
383 AsymmetricPrivateKeyGetKeyAlgorithmResult,
384 fidl::encoding::DefaultFuchsiaResourceDialect,
385 > {
386 AsymmetricPrivateKeyProxyInterface::r#get_key_algorithm(self)
387 }
388}
389
390impl AsymmetricPrivateKeyProxyInterface for AsymmetricPrivateKeyProxy {
391 type GetKeyOriginResponseFut = fidl::client::QueryResponseFut<
392 KeyGetKeyOriginResult,
393 fidl::encoding::DefaultFuchsiaResourceDialect,
394 >;
395 fn r#get_key_origin(&self) -> Self::GetKeyOriginResponseFut {
396 fn _decode(
397 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
398 ) -> Result<KeyGetKeyOriginResult, fidl::Error> {
399 let _response = fidl::client::decode_transaction_body::<
400 fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>,
401 fidl::encoding::DefaultFuchsiaResourceDialect,
402 0x3e439554159e7b86,
403 >(_buf?)?;
404 Ok(_response.map(|x| x.key_origin))
405 }
406 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, KeyGetKeyOriginResult>(
407 (),
408 0x3e439554159e7b86,
409 fidl::encoding::DynamicFlags::empty(),
410 _decode,
411 )
412 }
413
414 type GetKeyProviderResponseFut = fidl::client::QueryResponseFut<
415 KeyGetKeyProviderResult,
416 fidl::encoding::DefaultFuchsiaResourceDialect,
417 >;
418 fn r#get_key_provider(&self) -> Self::GetKeyProviderResponseFut {
419 fn _decode(
420 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
421 ) -> Result<KeyGetKeyProviderResult, fidl::Error> {
422 let _response = fidl::client::decode_transaction_body::<
423 fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>,
424 fidl::encoding::DefaultFuchsiaResourceDialect,
425 0x68e2cd7ec0532e0c,
426 >(_buf?)?;
427 Ok(_response.map(|x| x.key_provider))
428 }
429 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, KeyGetKeyProviderResult>(
430 (),
431 0x68e2cd7ec0532e0c,
432 fidl::encoding::DynamicFlags::empty(),
433 _decode,
434 )
435 }
436
437 type SignResponseFut = fidl::client::QueryResponseFut<
438 AsymmetricPrivateKeySignResult,
439 fidl::encoding::DefaultFuchsiaResourceDialect,
440 >;
441 fn r#sign(&self, mut data: fidl_fuchsia_mem::Buffer) -> Self::SignResponseFut {
442 fn _decode(
443 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
444 ) -> Result<AsymmetricPrivateKeySignResult, fidl::Error> {
445 let _response = fidl::client::decode_transaction_body::<
446 fidl::encoding::ResultType<AsymmetricPrivateKeySignResponse, Error>,
447 fidl::encoding::DefaultFuchsiaResourceDialect,
448 0x524ba8b350c2542e,
449 >(_buf?)?;
450 Ok(_response.map(|x| x.signature))
451 }
452 self.client.send_query_and_decode::<
453 AsymmetricPrivateKeySignRequest,
454 AsymmetricPrivateKeySignResult,
455 >(
456 (&mut data,),
457 0x524ba8b350c2542e,
458 fidl::encoding::DynamicFlags::empty(),
459 _decode,
460 )
461 }
462
463 type GetPublicKeyResponseFut = fidl::client::QueryResponseFut<
464 AsymmetricPrivateKeyGetPublicKeyResult,
465 fidl::encoding::DefaultFuchsiaResourceDialect,
466 >;
467 fn r#get_public_key(&self) -> Self::GetPublicKeyResponseFut {
468 fn _decode(
469 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
470 ) -> Result<AsymmetricPrivateKeyGetPublicKeyResult, fidl::Error> {
471 let _response = fidl::client::decode_transaction_body::<
472 fidl::encoding::ResultType<AsymmetricPrivateKeyGetPublicKeyResponse, Error>,
473 fidl::encoding::DefaultFuchsiaResourceDialect,
474 0x5439aff00ed261f3,
475 >(_buf?)?;
476 Ok(_response.map(|x| x.public_key))
477 }
478 self.client.send_query_and_decode::<
479 fidl::encoding::EmptyPayload,
480 AsymmetricPrivateKeyGetPublicKeyResult,
481 >(
482 (),
483 0x5439aff00ed261f3,
484 fidl::encoding::DynamicFlags::empty(),
485 _decode,
486 )
487 }
488
489 type GetKeyAlgorithmResponseFut = fidl::client::QueryResponseFut<
490 AsymmetricPrivateKeyGetKeyAlgorithmResult,
491 fidl::encoding::DefaultFuchsiaResourceDialect,
492 >;
493 fn r#get_key_algorithm(&self) -> Self::GetKeyAlgorithmResponseFut {
494 fn _decode(
495 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
496 ) -> Result<AsymmetricPrivateKeyGetKeyAlgorithmResult, fidl::Error> {
497 let _response = fidl::client::decode_transaction_body::<
498 fidl::encoding::ResultType<AsymmetricPrivateKeyGetKeyAlgorithmResponse, Error>,
499 fidl::encoding::DefaultFuchsiaResourceDialect,
500 0xe0ce6b5b815b1ae,
501 >(_buf?)?;
502 Ok(_response.map(|x| x.key_algorithm))
503 }
504 self.client.send_query_and_decode::<
505 fidl::encoding::EmptyPayload,
506 AsymmetricPrivateKeyGetKeyAlgorithmResult,
507 >(
508 (),
509 0xe0ce6b5b815b1ae,
510 fidl::encoding::DynamicFlags::empty(),
511 _decode,
512 )
513 }
514}
515
516pub struct AsymmetricPrivateKeyEventStream {
517 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
518}
519
520impl std::marker::Unpin for AsymmetricPrivateKeyEventStream {}
521
522impl futures::stream::FusedStream for AsymmetricPrivateKeyEventStream {
523 fn is_terminated(&self) -> bool {
524 self.event_receiver.is_terminated()
525 }
526}
527
528impl futures::Stream for AsymmetricPrivateKeyEventStream {
529 type Item = Result<AsymmetricPrivateKeyEvent, fidl::Error>;
530
531 fn poll_next(
532 mut self: std::pin::Pin<&mut Self>,
533 cx: &mut std::task::Context<'_>,
534 ) -> std::task::Poll<Option<Self::Item>> {
535 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
536 &mut self.event_receiver,
537 cx
538 )?) {
539 Some(buf) => std::task::Poll::Ready(Some(AsymmetricPrivateKeyEvent::decode(buf))),
540 None => std::task::Poll::Ready(None),
541 }
542 }
543}
544
545#[derive(Debug)]
546pub enum AsymmetricPrivateKeyEvent {}
547
548impl AsymmetricPrivateKeyEvent {
549 fn decode(
551 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
552 ) -> Result<AsymmetricPrivateKeyEvent, fidl::Error> {
553 let (bytes, _handles) = buf.split_mut();
554 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
555 debug_assert_eq!(tx_header.tx_id, 0);
556 match tx_header.ordinal {
557 _ => Err(fidl::Error::UnknownOrdinal {
558 ordinal: tx_header.ordinal,
559 protocol_name:
560 <AsymmetricPrivateKeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
561 }),
562 }
563 }
564}
565
566pub struct AsymmetricPrivateKeyRequestStream {
568 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
569 is_terminated: bool,
570}
571
572impl std::marker::Unpin for AsymmetricPrivateKeyRequestStream {}
573
574impl futures::stream::FusedStream for AsymmetricPrivateKeyRequestStream {
575 fn is_terminated(&self) -> bool {
576 self.is_terminated
577 }
578}
579
580impl fidl::endpoints::RequestStream for AsymmetricPrivateKeyRequestStream {
581 type Protocol = AsymmetricPrivateKeyMarker;
582 type ControlHandle = AsymmetricPrivateKeyControlHandle;
583
584 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
585 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
586 }
587
588 fn control_handle(&self) -> Self::ControlHandle {
589 AsymmetricPrivateKeyControlHandle { inner: self.inner.clone() }
590 }
591
592 fn into_inner(
593 self,
594 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
595 {
596 (self.inner, self.is_terminated)
597 }
598
599 fn from_inner(
600 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
601 is_terminated: bool,
602 ) -> Self {
603 Self { inner, is_terminated }
604 }
605}
606
607impl futures::Stream for AsymmetricPrivateKeyRequestStream {
608 type Item = Result<AsymmetricPrivateKeyRequest, fidl::Error>;
609
610 fn poll_next(
611 mut self: std::pin::Pin<&mut Self>,
612 cx: &mut std::task::Context<'_>,
613 ) -> std::task::Poll<Option<Self::Item>> {
614 let this = &mut *self;
615 if this.inner.check_shutdown(cx) {
616 this.is_terminated = true;
617 return std::task::Poll::Ready(None);
618 }
619 if this.is_terminated {
620 panic!("polled AsymmetricPrivateKeyRequestStream after completion");
621 }
622 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
623 |bytes, handles| {
624 match this.inner.channel().read_etc(cx, bytes, handles) {
625 std::task::Poll::Ready(Ok(())) => {}
626 std::task::Poll::Pending => return std::task::Poll::Pending,
627 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
628 this.is_terminated = true;
629 return std::task::Poll::Ready(None);
630 }
631 std::task::Poll::Ready(Err(e)) => {
632 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
633 e.into(),
634 ))));
635 }
636 }
637
638 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
640
641 std::task::Poll::Ready(Some(match header.ordinal {
642 0x3e439554159e7b86 => {
643 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
644 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
645 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
646 let control_handle = AsymmetricPrivateKeyControlHandle {
647 inner: this.inner.clone(),
648 };
649 Ok(AsymmetricPrivateKeyRequest::GetKeyOrigin {
650 responder: AsymmetricPrivateKeyGetKeyOriginResponder {
651 control_handle: std::mem::ManuallyDrop::new(control_handle),
652 tx_id: header.tx_id,
653 },
654 })
655 }
656 0x68e2cd7ec0532e0c => {
657 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
658 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
659 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
660 let control_handle = AsymmetricPrivateKeyControlHandle {
661 inner: this.inner.clone(),
662 };
663 Ok(AsymmetricPrivateKeyRequest::GetKeyProvider {
664 responder: AsymmetricPrivateKeyGetKeyProviderResponder {
665 control_handle: std::mem::ManuallyDrop::new(control_handle),
666 tx_id: header.tx_id,
667 },
668 })
669 }
670 0x524ba8b350c2542e => {
671 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
672 let mut req = fidl::new_empty!(AsymmetricPrivateKeySignRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
673 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<AsymmetricPrivateKeySignRequest>(&header, _body_bytes, handles, &mut req)?;
674 let control_handle = AsymmetricPrivateKeyControlHandle {
675 inner: this.inner.clone(),
676 };
677 Ok(AsymmetricPrivateKeyRequest::Sign {data: req.data,
678
679 responder: AsymmetricPrivateKeySignResponder {
680 control_handle: std::mem::ManuallyDrop::new(control_handle),
681 tx_id: header.tx_id,
682 },
683 })
684 }
685 0x5439aff00ed261f3 => {
686 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
687 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
688 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
689 let control_handle = AsymmetricPrivateKeyControlHandle {
690 inner: this.inner.clone(),
691 };
692 Ok(AsymmetricPrivateKeyRequest::GetPublicKey {
693 responder: AsymmetricPrivateKeyGetPublicKeyResponder {
694 control_handle: std::mem::ManuallyDrop::new(control_handle),
695 tx_id: header.tx_id,
696 },
697 })
698 }
699 0xe0ce6b5b815b1ae => {
700 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
701 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
702 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
703 let control_handle = AsymmetricPrivateKeyControlHandle {
704 inner: this.inner.clone(),
705 };
706 Ok(AsymmetricPrivateKeyRequest::GetKeyAlgorithm {
707 responder: AsymmetricPrivateKeyGetKeyAlgorithmResponder {
708 control_handle: std::mem::ManuallyDrop::new(control_handle),
709 tx_id: header.tx_id,
710 },
711 })
712 }
713 _ => Err(fidl::Error::UnknownOrdinal {
714 ordinal: header.ordinal,
715 protocol_name: <AsymmetricPrivateKeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
716 }),
717 }))
718 },
719 )
720 }
721}
722
723#[derive(Debug)]
724pub enum AsymmetricPrivateKeyRequest {
725 GetKeyOrigin { responder: AsymmetricPrivateKeyGetKeyOriginResponder },
727 GetKeyProvider { responder: AsymmetricPrivateKeyGetKeyProviderResponder },
729 Sign { data: fidl_fuchsia_mem::Buffer, responder: AsymmetricPrivateKeySignResponder },
731 GetPublicKey { responder: AsymmetricPrivateKeyGetPublicKeyResponder },
733 GetKeyAlgorithm { responder: AsymmetricPrivateKeyGetKeyAlgorithmResponder },
735}
736
737impl AsymmetricPrivateKeyRequest {
738 #[allow(irrefutable_let_patterns)]
739 pub fn into_get_key_origin(self) -> Option<(AsymmetricPrivateKeyGetKeyOriginResponder)> {
740 if let AsymmetricPrivateKeyRequest::GetKeyOrigin { responder } = self {
741 Some((responder))
742 } else {
743 None
744 }
745 }
746
747 #[allow(irrefutable_let_patterns)]
748 pub fn into_get_key_provider(self) -> Option<(AsymmetricPrivateKeyGetKeyProviderResponder)> {
749 if let AsymmetricPrivateKeyRequest::GetKeyProvider { responder } = self {
750 Some((responder))
751 } else {
752 None
753 }
754 }
755
756 #[allow(irrefutable_let_patterns)]
757 pub fn into_sign(
758 self,
759 ) -> Option<(fidl_fuchsia_mem::Buffer, AsymmetricPrivateKeySignResponder)> {
760 if let AsymmetricPrivateKeyRequest::Sign { data, responder } = self {
761 Some((data, responder))
762 } else {
763 None
764 }
765 }
766
767 #[allow(irrefutable_let_patterns)]
768 pub fn into_get_public_key(self) -> Option<(AsymmetricPrivateKeyGetPublicKeyResponder)> {
769 if let AsymmetricPrivateKeyRequest::GetPublicKey { responder } = self {
770 Some((responder))
771 } else {
772 None
773 }
774 }
775
776 #[allow(irrefutable_let_patterns)]
777 pub fn into_get_key_algorithm(self) -> Option<(AsymmetricPrivateKeyGetKeyAlgorithmResponder)> {
778 if let AsymmetricPrivateKeyRequest::GetKeyAlgorithm { responder } = self {
779 Some((responder))
780 } else {
781 None
782 }
783 }
784
785 pub fn method_name(&self) -> &'static str {
787 match *self {
788 AsymmetricPrivateKeyRequest::GetKeyOrigin { .. } => "get_key_origin",
789 AsymmetricPrivateKeyRequest::GetKeyProvider { .. } => "get_key_provider",
790 AsymmetricPrivateKeyRequest::Sign { .. } => "sign",
791 AsymmetricPrivateKeyRequest::GetPublicKey { .. } => "get_public_key",
792 AsymmetricPrivateKeyRequest::GetKeyAlgorithm { .. } => "get_key_algorithm",
793 }
794 }
795}
796
797#[derive(Debug, Clone)]
798pub struct AsymmetricPrivateKeyControlHandle {
799 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
800}
801
802impl AsymmetricPrivateKeyControlHandle {
803 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
804 self.inner.shutdown_with_epitaph(status.into())
805 }
806}
807
808impl fidl::endpoints::ControlHandle for AsymmetricPrivateKeyControlHandle {
809 fn shutdown(&self) {
810 self.inner.shutdown()
811 }
812
813 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
814 self.inner.shutdown_with_epitaph(status)
815 }
816
817 fn is_closed(&self) -> bool {
818 self.inner.channel().is_closed()
819 }
820 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
821 self.inner.channel().on_closed()
822 }
823
824 #[cfg(target_os = "fuchsia")]
825 fn signal_peer(
826 &self,
827 clear_mask: zx::Signals,
828 set_mask: zx::Signals,
829 ) -> Result<(), zx_status::Status> {
830 use fidl::Peered;
831 self.inner.channel().signal_peer(clear_mask, set_mask)
832 }
833}
834
835impl AsymmetricPrivateKeyControlHandle {}
836
837#[must_use = "FIDL methods require a response to be sent"]
838#[derive(Debug)]
839pub struct AsymmetricPrivateKeyGetKeyOriginResponder {
840 control_handle: std::mem::ManuallyDrop<AsymmetricPrivateKeyControlHandle>,
841 tx_id: u32,
842}
843
844impl std::ops::Drop for AsymmetricPrivateKeyGetKeyOriginResponder {
848 fn drop(&mut self) {
849 self.control_handle.shutdown();
850 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
852 }
853}
854
855impl fidl::endpoints::Responder for AsymmetricPrivateKeyGetKeyOriginResponder {
856 type ControlHandle = AsymmetricPrivateKeyControlHandle;
857
858 fn control_handle(&self) -> &AsymmetricPrivateKeyControlHandle {
859 &self.control_handle
860 }
861
862 fn drop_without_shutdown(mut self) {
863 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
865 std::mem::forget(self);
867 }
868}
869
870impl AsymmetricPrivateKeyGetKeyOriginResponder {
871 pub fn send(self, mut result: Result<KeyOrigin, Error>) -> Result<(), fidl::Error> {
875 let _result = self.send_raw(result);
876 if _result.is_err() {
877 self.control_handle.shutdown();
878 }
879 self.drop_without_shutdown();
880 _result
881 }
882
883 pub fn send_no_shutdown_on_err(
885 self,
886 mut result: Result<KeyOrigin, Error>,
887 ) -> Result<(), fidl::Error> {
888 let _result = self.send_raw(result);
889 self.drop_without_shutdown();
890 _result
891 }
892
893 fn send_raw(&self, mut result: Result<KeyOrigin, Error>) -> Result<(), fidl::Error> {
894 self.control_handle
895 .inner
896 .send::<fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>>(
897 result.map(|key_origin| (key_origin,)),
898 self.tx_id,
899 0x3e439554159e7b86,
900 fidl::encoding::DynamicFlags::empty(),
901 )
902 }
903}
904
905#[must_use = "FIDL methods require a response to be sent"]
906#[derive(Debug)]
907pub struct AsymmetricPrivateKeyGetKeyProviderResponder {
908 control_handle: std::mem::ManuallyDrop<AsymmetricPrivateKeyControlHandle>,
909 tx_id: u32,
910}
911
912impl std::ops::Drop for AsymmetricPrivateKeyGetKeyProviderResponder {
916 fn drop(&mut self) {
917 self.control_handle.shutdown();
918 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
920 }
921}
922
923impl fidl::endpoints::Responder for AsymmetricPrivateKeyGetKeyProviderResponder {
924 type ControlHandle = AsymmetricPrivateKeyControlHandle;
925
926 fn control_handle(&self) -> &AsymmetricPrivateKeyControlHandle {
927 &self.control_handle
928 }
929
930 fn drop_without_shutdown(mut self) {
931 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
933 std::mem::forget(self);
935 }
936}
937
938impl AsymmetricPrivateKeyGetKeyProviderResponder {
939 pub fn send(self, mut result: Result<KeyProvider, Error>) -> Result<(), fidl::Error> {
943 let _result = self.send_raw(result);
944 if _result.is_err() {
945 self.control_handle.shutdown();
946 }
947 self.drop_without_shutdown();
948 _result
949 }
950
951 pub fn send_no_shutdown_on_err(
953 self,
954 mut result: Result<KeyProvider, Error>,
955 ) -> Result<(), fidl::Error> {
956 let _result = self.send_raw(result);
957 self.drop_without_shutdown();
958 _result
959 }
960
961 fn send_raw(&self, mut result: Result<KeyProvider, Error>) -> Result<(), fidl::Error> {
962 self.control_handle
963 .inner
964 .send::<fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>>(
965 result.map(|key_provider| (key_provider,)),
966 self.tx_id,
967 0x68e2cd7ec0532e0c,
968 fidl::encoding::DynamicFlags::empty(),
969 )
970 }
971}
972
973#[must_use = "FIDL methods require a response to be sent"]
974#[derive(Debug)]
975pub struct AsymmetricPrivateKeySignResponder {
976 control_handle: std::mem::ManuallyDrop<AsymmetricPrivateKeyControlHandle>,
977 tx_id: u32,
978}
979
980impl std::ops::Drop for AsymmetricPrivateKeySignResponder {
984 fn drop(&mut self) {
985 self.control_handle.shutdown();
986 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
988 }
989}
990
991impl fidl::endpoints::Responder for AsymmetricPrivateKeySignResponder {
992 type ControlHandle = AsymmetricPrivateKeyControlHandle;
993
994 fn control_handle(&self) -> &AsymmetricPrivateKeyControlHandle {
995 &self.control_handle
996 }
997
998 fn drop_without_shutdown(mut self) {
999 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1001 std::mem::forget(self);
1003 }
1004}
1005
1006impl AsymmetricPrivateKeySignResponder {
1007 pub fn send(self, mut result: Result<&Signature, Error>) -> Result<(), fidl::Error> {
1011 let _result = self.send_raw(result);
1012 if _result.is_err() {
1013 self.control_handle.shutdown();
1014 }
1015 self.drop_without_shutdown();
1016 _result
1017 }
1018
1019 pub fn send_no_shutdown_on_err(
1021 self,
1022 mut result: Result<&Signature, Error>,
1023 ) -> Result<(), fidl::Error> {
1024 let _result = self.send_raw(result);
1025 self.drop_without_shutdown();
1026 _result
1027 }
1028
1029 fn send_raw(&self, mut result: Result<&Signature, Error>) -> Result<(), fidl::Error> {
1030 self.control_handle
1031 .inner
1032 .send::<fidl::encoding::ResultType<AsymmetricPrivateKeySignResponse, Error>>(
1033 result.map(|signature| (signature,)),
1034 self.tx_id,
1035 0x524ba8b350c2542e,
1036 fidl::encoding::DynamicFlags::empty(),
1037 )
1038 }
1039}
1040
1041#[must_use = "FIDL methods require a response to be sent"]
1042#[derive(Debug)]
1043pub struct AsymmetricPrivateKeyGetPublicKeyResponder {
1044 control_handle: std::mem::ManuallyDrop<AsymmetricPrivateKeyControlHandle>,
1045 tx_id: u32,
1046}
1047
1048impl std::ops::Drop for AsymmetricPrivateKeyGetPublicKeyResponder {
1052 fn drop(&mut self) {
1053 self.control_handle.shutdown();
1054 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1056 }
1057}
1058
1059impl fidl::endpoints::Responder for AsymmetricPrivateKeyGetPublicKeyResponder {
1060 type ControlHandle = AsymmetricPrivateKeyControlHandle;
1061
1062 fn control_handle(&self) -> &AsymmetricPrivateKeyControlHandle {
1063 &self.control_handle
1064 }
1065
1066 fn drop_without_shutdown(mut self) {
1067 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1069 std::mem::forget(self);
1071 }
1072}
1073
1074impl AsymmetricPrivateKeyGetPublicKeyResponder {
1075 pub fn send(self, mut result: Result<&PublicKey, Error>) -> Result<(), fidl::Error> {
1079 let _result = self.send_raw(result);
1080 if _result.is_err() {
1081 self.control_handle.shutdown();
1082 }
1083 self.drop_without_shutdown();
1084 _result
1085 }
1086
1087 pub fn send_no_shutdown_on_err(
1089 self,
1090 mut result: Result<&PublicKey, Error>,
1091 ) -> Result<(), fidl::Error> {
1092 let _result = self.send_raw(result);
1093 self.drop_without_shutdown();
1094 _result
1095 }
1096
1097 fn send_raw(&self, mut result: Result<&PublicKey, Error>) -> Result<(), fidl::Error> {
1098 self.control_handle.inner.send::<fidl::encoding::ResultType<
1099 AsymmetricPrivateKeyGetPublicKeyResponse,
1100 Error,
1101 >>(
1102 result.map(|public_key| (public_key,)),
1103 self.tx_id,
1104 0x5439aff00ed261f3,
1105 fidl::encoding::DynamicFlags::empty(),
1106 )
1107 }
1108}
1109
1110#[must_use = "FIDL methods require a response to be sent"]
1111#[derive(Debug)]
1112pub struct AsymmetricPrivateKeyGetKeyAlgorithmResponder {
1113 control_handle: std::mem::ManuallyDrop<AsymmetricPrivateKeyControlHandle>,
1114 tx_id: u32,
1115}
1116
1117impl std::ops::Drop for AsymmetricPrivateKeyGetKeyAlgorithmResponder {
1121 fn drop(&mut self) {
1122 self.control_handle.shutdown();
1123 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1125 }
1126}
1127
1128impl fidl::endpoints::Responder for AsymmetricPrivateKeyGetKeyAlgorithmResponder {
1129 type ControlHandle = AsymmetricPrivateKeyControlHandle;
1130
1131 fn control_handle(&self) -> &AsymmetricPrivateKeyControlHandle {
1132 &self.control_handle
1133 }
1134
1135 fn drop_without_shutdown(mut self) {
1136 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1138 std::mem::forget(self);
1140 }
1141}
1142
1143impl AsymmetricPrivateKeyGetKeyAlgorithmResponder {
1144 pub fn send(
1148 self,
1149 mut result: Result<AsymmetricKeyAlgorithm, Error>,
1150 ) -> Result<(), fidl::Error> {
1151 let _result = self.send_raw(result);
1152 if _result.is_err() {
1153 self.control_handle.shutdown();
1154 }
1155 self.drop_without_shutdown();
1156 _result
1157 }
1158
1159 pub fn send_no_shutdown_on_err(
1161 self,
1162 mut result: Result<AsymmetricKeyAlgorithm, Error>,
1163 ) -> Result<(), fidl::Error> {
1164 let _result = self.send_raw(result);
1165 self.drop_without_shutdown();
1166 _result
1167 }
1168
1169 fn send_raw(
1170 &self,
1171 mut result: Result<AsymmetricKeyAlgorithm, Error>,
1172 ) -> Result<(), fidl::Error> {
1173 self.control_handle.inner.send::<fidl::encoding::ResultType<
1174 AsymmetricPrivateKeyGetKeyAlgorithmResponse,
1175 Error,
1176 >>(
1177 result.map(|key_algorithm| (key_algorithm,)),
1178 self.tx_id,
1179 0xe0ce6b5b815b1ae,
1180 fidl::encoding::DynamicFlags::empty(),
1181 )
1182 }
1183}
1184
1185#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1186pub struct KeyMarker;
1187
1188impl fidl::endpoints::ProtocolMarker for KeyMarker {
1189 type Proxy = KeyProxy;
1190 type RequestStream = KeyRequestStream;
1191 #[cfg(target_os = "fuchsia")]
1192 type SynchronousProxy = KeySynchronousProxy;
1193
1194 const DEBUG_NAME: &'static str = "(anonymous) Key";
1195}
1196pub type KeyGetKeyOriginResult = Result<KeyOrigin, Error>;
1197pub type KeyGetKeyProviderResult = Result<KeyProvider, Error>;
1198
1199pub trait KeyProxyInterface: Send + Sync {
1200 type GetKeyOriginResponseFut: std::future::Future<Output = Result<KeyGetKeyOriginResult, fidl::Error>>
1201 + Send;
1202 fn r#get_key_origin(&self) -> Self::GetKeyOriginResponseFut;
1203 type GetKeyProviderResponseFut: std::future::Future<Output = Result<KeyGetKeyProviderResult, fidl::Error>>
1204 + Send;
1205 fn r#get_key_provider(&self) -> Self::GetKeyProviderResponseFut;
1206}
1207#[derive(Debug)]
1208#[cfg(target_os = "fuchsia")]
1209pub struct KeySynchronousProxy {
1210 client: fidl::client::sync::Client,
1211}
1212
1213#[cfg(target_os = "fuchsia")]
1214impl fidl::endpoints::SynchronousProxy for KeySynchronousProxy {
1215 type Proxy = KeyProxy;
1216 type Protocol = KeyMarker;
1217
1218 fn from_channel(inner: fidl::Channel) -> Self {
1219 Self::new(inner)
1220 }
1221
1222 fn into_channel(self) -> fidl::Channel {
1223 self.client.into_channel()
1224 }
1225
1226 fn as_channel(&self) -> &fidl::Channel {
1227 self.client.as_channel()
1228 }
1229}
1230
1231#[cfg(target_os = "fuchsia")]
1232impl KeySynchronousProxy {
1233 pub fn new(channel: fidl::Channel) -> Self {
1234 Self { client: fidl::client::sync::Client::new(channel) }
1235 }
1236
1237 pub fn into_channel(self) -> fidl::Channel {
1238 self.client.into_channel()
1239 }
1240
1241 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<KeyEvent, fidl::Error> {
1244 KeyEvent::decode(self.client.wait_for_event::<KeyMarker>(deadline)?)
1245 }
1246
1247 pub fn r#get_key_origin(
1249 &self,
1250 ___deadline: zx::MonotonicInstant,
1251 ) -> Result<KeyGetKeyOriginResult, fidl::Error> {
1252 let _response = self.client.send_query::<
1253 fidl::encoding::EmptyPayload,
1254 fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>,
1255 KeyMarker,
1256 >(
1257 (),
1258 0x3e439554159e7b86,
1259 fidl::encoding::DynamicFlags::empty(),
1260 ___deadline,
1261 )?;
1262 Ok(_response.map(|x| x.key_origin))
1263 }
1264
1265 pub fn r#get_key_provider(
1267 &self,
1268 ___deadline: zx::MonotonicInstant,
1269 ) -> Result<KeyGetKeyProviderResult, fidl::Error> {
1270 let _response = self.client.send_query::<
1271 fidl::encoding::EmptyPayload,
1272 fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>,
1273 KeyMarker,
1274 >(
1275 (),
1276 0x68e2cd7ec0532e0c,
1277 fidl::encoding::DynamicFlags::empty(),
1278 ___deadline,
1279 )?;
1280 Ok(_response.map(|x| x.key_provider))
1281 }
1282}
1283
1284#[cfg(target_os = "fuchsia")]
1285impl From<KeySynchronousProxy> for zx::NullableHandle {
1286 fn from(value: KeySynchronousProxy) -> Self {
1287 value.into_channel().into()
1288 }
1289}
1290
1291#[cfg(target_os = "fuchsia")]
1292impl From<fidl::Channel> for KeySynchronousProxy {
1293 fn from(value: fidl::Channel) -> Self {
1294 Self::new(value)
1295 }
1296}
1297
1298#[cfg(target_os = "fuchsia")]
1299impl fidl::endpoints::FromClient for KeySynchronousProxy {
1300 type Protocol = KeyMarker;
1301
1302 fn from_client(value: fidl::endpoints::ClientEnd<KeyMarker>) -> Self {
1303 Self::new(value.into_channel())
1304 }
1305}
1306
1307#[derive(Debug, Clone)]
1308pub struct KeyProxy {
1309 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1310}
1311
1312impl fidl::endpoints::Proxy for KeyProxy {
1313 type Protocol = KeyMarker;
1314
1315 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1316 Self::new(inner)
1317 }
1318
1319 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1320 self.client.into_channel().map_err(|client| Self { client })
1321 }
1322
1323 fn as_channel(&self) -> &::fidl::AsyncChannel {
1324 self.client.as_channel()
1325 }
1326}
1327
1328impl KeyProxy {
1329 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1331 let protocol_name = <KeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1332 Self { client: fidl::client::Client::new(channel, protocol_name) }
1333 }
1334
1335 pub fn take_event_stream(&self) -> KeyEventStream {
1341 KeyEventStream { event_receiver: self.client.take_event_receiver() }
1342 }
1343
1344 pub fn r#get_key_origin(
1346 &self,
1347 ) -> fidl::client::QueryResponseFut<
1348 KeyGetKeyOriginResult,
1349 fidl::encoding::DefaultFuchsiaResourceDialect,
1350 > {
1351 KeyProxyInterface::r#get_key_origin(self)
1352 }
1353
1354 pub fn r#get_key_provider(
1356 &self,
1357 ) -> fidl::client::QueryResponseFut<
1358 KeyGetKeyProviderResult,
1359 fidl::encoding::DefaultFuchsiaResourceDialect,
1360 > {
1361 KeyProxyInterface::r#get_key_provider(self)
1362 }
1363}
1364
1365impl KeyProxyInterface for KeyProxy {
1366 type GetKeyOriginResponseFut = fidl::client::QueryResponseFut<
1367 KeyGetKeyOriginResult,
1368 fidl::encoding::DefaultFuchsiaResourceDialect,
1369 >;
1370 fn r#get_key_origin(&self) -> Self::GetKeyOriginResponseFut {
1371 fn _decode(
1372 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1373 ) -> Result<KeyGetKeyOriginResult, fidl::Error> {
1374 let _response = fidl::client::decode_transaction_body::<
1375 fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>,
1376 fidl::encoding::DefaultFuchsiaResourceDialect,
1377 0x3e439554159e7b86,
1378 >(_buf?)?;
1379 Ok(_response.map(|x| x.key_origin))
1380 }
1381 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, KeyGetKeyOriginResult>(
1382 (),
1383 0x3e439554159e7b86,
1384 fidl::encoding::DynamicFlags::empty(),
1385 _decode,
1386 )
1387 }
1388
1389 type GetKeyProviderResponseFut = fidl::client::QueryResponseFut<
1390 KeyGetKeyProviderResult,
1391 fidl::encoding::DefaultFuchsiaResourceDialect,
1392 >;
1393 fn r#get_key_provider(&self) -> Self::GetKeyProviderResponseFut {
1394 fn _decode(
1395 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1396 ) -> Result<KeyGetKeyProviderResult, fidl::Error> {
1397 let _response = fidl::client::decode_transaction_body::<
1398 fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>,
1399 fidl::encoding::DefaultFuchsiaResourceDialect,
1400 0x68e2cd7ec0532e0c,
1401 >(_buf?)?;
1402 Ok(_response.map(|x| x.key_provider))
1403 }
1404 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, KeyGetKeyProviderResult>(
1405 (),
1406 0x68e2cd7ec0532e0c,
1407 fidl::encoding::DynamicFlags::empty(),
1408 _decode,
1409 )
1410 }
1411}
1412
1413pub struct KeyEventStream {
1414 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1415}
1416
1417impl std::marker::Unpin for KeyEventStream {}
1418
1419impl futures::stream::FusedStream for KeyEventStream {
1420 fn is_terminated(&self) -> bool {
1421 self.event_receiver.is_terminated()
1422 }
1423}
1424
1425impl futures::Stream for KeyEventStream {
1426 type Item = Result<KeyEvent, fidl::Error>;
1427
1428 fn poll_next(
1429 mut self: std::pin::Pin<&mut Self>,
1430 cx: &mut std::task::Context<'_>,
1431 ) -> std::task::Poll<Option<Self::Item>> {
1432 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1433 &mut self.event_receiver,
1434 cx
1435 )?) {
1436 Some(buf) => std::task::Poll::Ready(Some(KeyEvent::decode(buf))),
1437 None => std::task::Poll::Ready(None),
1438 }
1439 }
1440}
1441
1442#[derive(Debug)]
1443pub enum KeyEvent {}
1444
1445impl KeyEvent {
1446 fn decode(
1448 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1449 ) -> Result<KeyEvent, fidl::Error> {
1450 let (bytes, _handles) = buf.split_mut();
1451 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1452 debug_assert_eq!(tx_header.tx_id, 0);
1453 match tx_header.ordinal {
1454 _ => Err(fidl::Error::UnknownOrdinal {
1455 ordinal: tx_header.ordinal,
1456 protocol_name: <KeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1457 }),
1458 }
1459 }
1460}
1461
1462pub struct KeyRequestStream {
1464 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1465 is_terminated: bool,
1466}
1467
1468impl std::marker::Unpin for KeyRequestStream {}
1469
1470impl futures::stream::FusedStream for KeyRequestStream {
1471 fn is_terminated(&self) -> bool {
1472 self.is_terminated
1473 }
1474}
1475
1476impl fidl::endpoints::RequestStream for KeyRequestStream {
1477 type Protocol = KeyMarker;
1478 type ControlHandle = KeyControlHandle;
1479
1480 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1481 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1482 }
1483
1484 fn control_handle(&self) -> Self::ControlHandle {
1485 KeyControlHandle { inner: self.inner.clone() }
1486 }
1487
1488 fn into_inner(
1489 self,
1490 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1491 {
1492 (self.inner, self.is_terminated)
1493 }
1494
1495 fn from_inner(
1496 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1497 is_terminated: bool,
1498 ) -> Self {
1499 Self { inner, is_terminated }
1500 }
1501}
1502
1503impl futures::Stream for KeyRequestStream {
1504 type Item = Result<KeyRequest, fidl::Error>;
1505
1506 fn poll_next(
1507 mut self: std::pin::Pin<&mut Self>,
1508 cx: &mut std::task::Context<'_>,
1509 ) -> std::task::Poll<Option<Self::Item>> {
1510 let this = &mut *self;
1511 if this.inner.check_shutdown(cx) {
1512 this.is_terminated = true;
1513 return std::task::Poll::Ready(None);
1514 }
1515 if this.is_terminated {
1516 panic!("polled KeyRequestStream after completion");
1517 }
1518 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1519 |bytes, handles| {
1520 match this.inner.channel().read_etc(cx, bytes, handles) {
1521 std::task::Poll::Ready(Ok(())) => {}
1522 std::task::Poll::Pending => return std::task::Poll::Pending,
1523 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1524 this.is_terminated = true;
1525 return std::task::Poll::Ready(None);
1526 }
1527 std::task::Poll::Ready(Err(e)) => {
1528 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1529 e.into(),
1530 ))));
1531 }
1532 }
1533
1534 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1536
1537 std::task::Poll::Ready(Some(match header.ordinal {
1538 0x3e439554159e7b86 => {
1539 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1540 let mut req = fidl::new_empty!(
1541 fidl::encoding::EmptyPayload,
1542 fidl::encoding::DefaultFuchsiaResourceDialect
1543 );
1544 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1545 let control_handle = KeyControlHandle { inner: this.inner.clone() };
1546 Ok(KeyRequest::GetKeyOrigin {
1547 responder: KeyGetKeyOriginResponder {
1548 control_handle: std::mem::ManuallyDrop::new(control_handle),
1549 tx_id: header.tx_id,
1550 },
1551 })
1552 }
1553 0x68e2cd7ec0532e0c => {
1554 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1555 let mut req = fidl::new_empty!(
1556 fidl::encoding::EmptyPayload,
1557 fidl::encoding::DefaultFuchsiaResourceDialect
1558 );
1559 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1560 let control_handle = KeyControlHandle { inner: this.inner.clone() };
1561 Ok(KeyRequest::GetKeyProvider {
1562 responder: KeyGetKeyProviderResponder {
1563 control_handle: std::mem::ManuallyDrop::new(control_handle),
1564 tx_id: header.tx_id,
1565 },
1566 })
1567 }
1568 _ => Err(fidl::Error::UnknownOrdinal {
1569 ordinal: header.ordinal,
1570 protocol_name: <KeyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1571 }),
1572 }))
1573 },
1574 )
1575 }
1576}
1577
1578#[derive(Debug)]
1579pub enum KeyRequest {
1580 GetKeyOrigin { responder: KeyGetKeyOriginResponder },
1582 GetKeyProvider { responder: KeyGetKeyProviderResponder },
1584}
1585
1586impl KeyRequest {
1587 #[allow(irrefutable_let_patterns)]
1588 pub fn into_get_key_origin(self) -> Option<(KeyGetKeyOriginResponder)> {
1589 if let KeyRequest::GetKeyOrigin { responder } = self { Some((responder)) } else { None }
1590 }
1591
1592 #[allow(irrefutable_let_patterns)]
1593 pub fn into_get_key_provider(self) -> Option<(KeyGetKeyProviderResponder)> {
1594 if let KeyRequest::GetKeyProvider { responder } = self { Some((responder)) } else { None }
1595 }
1596
1597 pub fn method_name(&self) -> &'static str {
1599 match *self {
1600 KeyRequest::GetKeyOrigin { .. } => "get_key_origin",
1601 KeyRequest::GetKeyProvider { .. } => "get_key_provider",
1602 }
1603 }
1604}
1605
1606#[derive(Debug, Clone)]
1607pub struct KeyControlHandle {
1608 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1609}
1610
1611impl KeyControlHandle {
1612 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1613 self.inner.shutdown_with_epitaph(status.into())
1614 }
1615}
1616
1617impl fidl::endpoints::ControlHandle for KeyControlHandle {
1618 fn shutdown(&self) {
1619 self.inner.shutdown()
1620 }
1621
1622 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1623 self.inner.shutdown_with_epitaph(status)
1624 }
1625
1626 fn is_closed(&self) -> bool {
1627 self.inner.channel().is_closed()
1628 }
1629 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1630 self.inner.channel().on_closed()
1631 }
1632
1633 #[cfg(target_os = "fuchsia")]
1634 fn signal_peer(
1635 &self,
1636 clear_mask: zx::Signals,
1637 set_mask: zx::Signals,
1638 ) -> Result<(), zx_status::Status> {
1639 use fidl::Peered;
1640 self.inner.channel().signal_peer(clear_mask, set_mask)
1641 }
1642}
1643
1644impl KeyControlHandle {}
1645
1646#[must_use = "FIDL methods require a response to be sent"]
1647#[derive(Debug)]
1648pub struct KeyGetKeyOriginResponder {
1649 control_handle: std::mem::ManuallyDrop<KeyControlHandle>,
1650 tx_id: u32,
1651}
1652
1653impl std::ops::Drop for KeyGetKeyOriginResponder {
1657 fn drop(&mut self) {
1658 self.control_handle.shutdown();
1659 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1661 }
1662}
1663
1664impl fidl::endpoints::Responder for KeyGetKeyOriginResponder {
1665 type ControlHandle = KeyControlHandle;
1666
1667 fn control_handle(&self) -> &KeyControlHandle {
1668 &self.control_handle
1669 }
1670
1671 fn drop_without_shutdown(mut self) {
1672 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1674 std::mem::forget(self);
1676 }
1677}
1678
1679impl KeyGetKeyOriginResponder {
1680 pub fn send(self, mut result: Result<KeyOrigin, Error>) -> Result<(), fidl::Error> {
1684 let _result = self.send_raw(result);
1685 if _result.is_err() {
1686 self.control_handle.shutdown();
1687 }
1688 self.drop_without_shutdown();
1689 _result
1690 }
1691
1692 pub fn send_no_shutdown_on_err(
1694 self,
1695 mut result: Result<KeyOrigin, Error>,
1696 ) -> Result<(), fidl::Error> {
1697 let _result = self.send_raw(result);
1698 self.drop_without_shutdown();
1699 _result
1700 }
1701
1702 fn send_raw(&self, mut result: Result<KeyOrigin, Error>) -> Result<(), fidl::Error> {
1703 self.control_handle
1704 .inner
1705 .send::<fidl::encoding::ResultType<KeyGetKeyOriginResponse, Error>>(
1706 result.map(|key_origin| (key_origin,)),
1707 self.tx_id,
1708 0x3e439554159e7b86,
1709 fidl::encoding::DynamicFlags::empty(),
1710 )
1711 }
1712}
1713
1714#[must_use = "FIDL methods require a response to be sent"]
1715#[derive(Debug)]
1716pub struct KeyGetKeyProviderResponder {
1717 control_handle: std::mem::ManuallyDrop<KeyControlHandle>,
1718 tx_id: u32,
1719}
1720
1721impl std::ops::Drop for KeyGetKeyProviderResponder {
1725 fn drop(&mut self) {
1726 self.control_handle.shutdown();
1727 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1729 }
1730}
1731
1732impl fidl::endpoints::Responder for KeyGetKeyProviderResponder {
1733 type ControlHandle = KeyControlHandle;
1734
1735 fn control_handle(&self) -> &KeyControlHandle {
1736 &self.control_handle
1737 }
1738
1739 fn drop_without_shutdown(mut self) {
1740 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1742 std::mem::forget(self);
1744 }
1745}
1746
1747impl KeyGetKeyProviderResponder {
1748 pub fn send(self, mut result: Result<KeyProvider, Error>) -> Result<(), fidl::Error> {
1752 let _result = self.send_raw(result);
1753 if _result.is_err() {
1754 self.control_handle.shutdown();
1755 }
1756 self.drop_without_shutdown();
1757 _result
1758 }
1759
1760 pub fn send_no_shutdown_on_err(
1762 self,
1763 mut result: Result<KeyProvider, Error>,
1764 ) -> Result<(), fidl::Error> {
1765 let _result = self.send_raw(result);
1766 self.drop_without_shutdown();
1767 _result
1768 }
1769
1770 fn send_raw(&self, mut result: Result<KeyProvider, Error>) -> Result<(), fidl::Error> {
1771 self.control_handle
1772 .inner
1773 .send::<fidl::encoding::ResultType<KeyGetKeyProviderResponse, Error>>(
1774 result.map(|key_provider| (key_provider,)),
1775 self.tx_id,
1776 0x68e2cd7ec0532e0c,
1777 fidl::encoding::DynamicFlags::empty(),
1778 )
1779 }
1780}
1781
1782#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1783pub struct KeyManagerMarker;
1784
1785impl fidl::endpoints::ProtocolMarker for KeyManagerMarker {
1786 type Proxy = KeyManagerProxy;
1787 type RequestStream = KeyManagerRequestStream;
1788 #[cfg(target_os = "fuchsia")]
1789 type SynchronousProxy = KeyManagerSynchronousProxy;
1790
1791 const DEBUG_NAME: &'static str = "fuchsia.kms.KeyManager";
1792}
1793impl fidl::endpoints::DiscoverableProtocolMarker for KeyManagerMarker {}
1794pub type KeyManagerSealDataResult = Result<fidl_fuchsia_mem::Buffer, Error>;
1795pub type KeyManagerUnsealDataResult = Result<fidl_fuchsia_mem::Buffer, Error>;
1796pub type KeyManagerGenerateAsymmetricKeyResult = Result<(), Error>;
1797pub type KeyManagerGenerateAsymmetricKeyWithAlgorithmResult = Result<(), Error>;
1798pub type KeyManagerImportAsymmetricPrivateKeyResult = Result<(), Error>;
1799pub type KeyManagerGetAsymmetricPrivateKeyResult = Result<(), Error>;
1800pub type KeyManagerDeleteKeyResult = Result<(), Error>;
1801
1802pub trait KeyManagerProxyInterface: Send + Sync {
1803 type SealDataResponseFut: std::future::Future<Output = Result<KeyManagerSealDataResult, fidl::Error>>
1804 + Send;
1805 fn r#seal_data(&self, plain_text: fidl_fuchsia_mem::Buffer) -> Self::SealDataResponseFut;
1806 type UnsealDataResponseFut: std::future::Future<Output = Result<KeyManagerUnsealDataResult, fidl::Error>>
1807 + Send;
1808 fn r#unseal_data(&self, cipher_text: fidl_fuchsia_mem::Buffer) -> Self::UnsealDataResponseFut;
1809 type GenerateAsymmetricKeyResponseFut: std::future::Future<Output = Result<KeyManagerGenerateAsymmetricKeyResult, fidl::Error>>
1810 + Send;
1811 fn r#generate_asymmetric_key(
1812 &self,
1813 key_name: &str,
1814 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1815 ) -> Self::GenerateAsymmetricKeyResponseFut;
1816 type GenerateAsymmetricKeyWithAlgorithmResponseFut: std::future::Future<
1817 Output = Result<KeyManagerGenerateAsymmetricKeyWithAlgorithmResult, fidl::Error>,
1818 > + Send;
1819 fn r#generate_asymmetric_key_with_algorithm(
1820 &self,
1821 key_name: &str,
1822 key_algorithm: AsymmetricKeyAlgorithm,
1823 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1824 ) -> Self::GenerateAsymmetricKeyWithAlgorithmResponseFut;
1825 type ImportAsymmetricPrivateKeyResponseFut: std::future::Future<
1826 Output = Result<KeyManagerImportAsymmetricPrivateKeyResult, fidl::Error>,
1827 > + Send;
1828 fn r#import_asymmetric_private_key(
1829 &self,
1830 data: &[u8],
1831 key_name: &str,
1832 key_algorithm: AsymmetricKeyAlgorithm,
1833 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1834 ) -> Self::ImportAsymmetricPrivateKeyResponseFut;
1835 type GetAsymmetricPrivateKeyResponseFut: std::future::Future<Output = Result<KeyManagerGetAsymmetricPrivateKeyResult, fidl::Error>>
1836 + Send;
1837 fn r#get_asymmetric_private_key(
1838 &self,
1839 key_name: &str,
1840 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1841 ) -> Self::GetAsymmetricPrivateKeyResponseFut;
1842 type DeleteKeyResponseFut: std::future::Future<Output = Result<KeyManagerDeleteKeyResult, fidl::Error>>
1843 + Send;
1844 fn r#delete_key(&self, key_name: &str) -> Self::DeleteKeyResponseFut;
1845}
1846#[derive(Debug)]
1847#[cfg(target_os = "fuchsia")]
1848pub struct KeyManagerSynchronousProxy {
1849 client: fidl::client::sync::Client,
1850}
1851
1852#[cfg(target_os = "fuchsia")]
1853impl fidl::endpoints::SynchronousProxy for KeyManagerSynchronousProxy {
1854 type Proxy = KeyManagerProxy;
1855 type Protocol = KeyManagerMarker;
1856
1857 fn from_channel(inner: fidl::Channel) -> Self {
1858 Self::new(inner)
1859 }
1860
1861 fn into_channel(self) -> fidl::Channel {
1862 self.client.into_channel()
1863 }
1864
1865 fn as_channel(&self) -> &fidl::Channel {
1866 self.client.as_channel()
1867 }
1868}
1869
1870#[cfg(target_os = "fuchsia")]
1871impl KeyManagerSynchronousProxy {
1872 pub fn new(channel: fidl::Channel) -> Self {
1873 Self { client: fidl::client::sync::Client::new(channel) }
1874 }
1875
1876 pub fn into_channel(self) -> fidl::Channel {
1877 self.client.into_channel()
1878 }
1879
1880 pub fn wait_for_event(
1883 &self,
1884 deadline: zx::MonotonicInstant,
1885 ) -> Result<KeyManagerEvent, fidl::Error> {
1886 KeyManagerEvent::decode(self.client.wait_for_event::<KeyManagerMarker>(deadline)?)
1887 }
1888
1889 pub fn r#seal_data(
1894 &self,
1895 mut plain_text: fidl_fuchsia_mem::Buffer,
1896 ___deadline: zx::MonotonicInstant,
1897 ) -> Result<KeyManagerSealDataResult, fidl::Error> {
1898 let _response = self.client.send_query::<
1899 KeyManagerSealDataRequest,
1900 fidl::encoding::ResultType<KeyManagerSealDataResponse, Error>,
1901 KeyManagerMarker,
1902 >(
1903 (&mut plain_text,),
1904 0x3d2fcd85d11c96bb,
1905 fidl::encoding::DynamicFlags::empty(),
1906 ___deadline,
1907 )?;
1908 Ok(_response.map(|x| x.cipher_text))
1909 }
1910
1911 pub fn r#unseal_data(
1915 &self,
1916 mut cipher_text: fidl_fuchsia_mem::Buffer,
1917 ___deadline: zx::MonotonicInstant,
1918 ) -> Result<KeyManagerUnsealDataResult, fidl::Error> {
1919 let _response = self.client.send_query::<
1920 KeyManagerUnsealDataRequest,
1921 fidl::encoding::ResultType<KeyManagerUnsealDataResponse, Error>,
1922 KeyManagerMarker,
1923 >(
1924 (&mut cipher_text,),
1925 0x72dafc3131c1bca6,
1926 fidl::encoding::DynamicFlags::empty(),
1927 ___deadline,
1928 )?;
1929 Ok(_response.map(|x| x.plain_text))
1930 }
1931
1932 pub fn r#generate_asymmetric_key(
1939 &self,
1940 mut key_name: &str,
1941 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1942 ___deadline: zx::MonotonicInstant,
1943 ) -> Result<KeyManagerGenerateAsymmetricKeyResult, fidl::Error> {
1944 let _response = self.client.send_query::<
1945 KeyManagerGenerateAsymmetricKeyRequest,
1946 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1947 KeyManagerMarker,
1948 >(
1949 (key_name, key,),
1950 0x66f1aa7ff5eb183d,
1951 fidl::encoding::DynamicFlags::empty(),
1952 ___deadline,
1953 )?;
1954 Ok(_response.map(|x| x))
1955 }
1956
1957 pub fn r#generate_asymmetric_key_with_algorithm(
1963 &self,
1964 mut key_name: &str,
1965 mut key_algorithm: AsymmetricKeyAlgorithm,
1966 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1967 ___deadline: zx::MonotonicInstant,
1968 ) -> Result<KeyManagerGenerateAsymmetricKeyWithAlgorithmResult, fidl::Error> {
1969 let _response = self.client.send_query::<
1970 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
1971 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1972 KeyManagerMarker,
1973 >(
1974 (key_name, key_algorithm, key,),
1975 0x2b9eac3ad0bc8a45,
1976 fidl::encoding::DynamicFlags::empty(),
1977 ___deadline,
1978 )?;
1979 Ok(_response.map(|x| x))
1980 }
1981
1982 pub fn r#import_asymmetric_private_key(
1989 &self,
1990 mut data: &[u8],
1991 mut key_name: &str,
1992 mut key_algorithm: AsymmetricKeyAlgorithm,
1993 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
1994 ___deadline: zx::MonotonicInstant,
1995 ) -> Result<KeyManagerImportAsymmetricPrivateKeyResult, fidl::Error> {
1996 let _response = self.client.send_query::<
1997 KeyManagerImportAsymmetricPrivateKeyRequest,
1998 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1999 KeyManagerMarker,
2000 >(
2001 (data, key_name, key_algorithm, key,),
2002 0x14c78f1ebb4eee71,
2003 fidl::encoding::DynamicFlags::empty(),
2004 ___deadline,
2005 )?;
2006 Ok(_response.map(|x| x))
2007 }
2008
2009 pub fn r#get_asymmetric_private_key(
2014 &self,
2015 mut key_name: &str,
2016 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2017 ___deadline: zx::MonotonicInstant,
2018 ) -> Result<KeyManagerGetAsymmetricPrivateKeyResult, fidl::Error> {
2019 let _response = self.client.send_query::<
2020 KeyManagerGetAsymmetricPrivateKeyRequest,
2021 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2022 KeyManagerMarker,
2023 >(
2024 (key_name, key,),
2025 0x3a257fc6b6ccc5cd,
2026 fidl::encoding::DynamicFlags::empty(),
2027 ___deadline,
2028 )?;
2029 Ok(_response.map(|x| x))
2030 }
2031
2032 pub fn r#delete_key(
2038 &self,
2039 mut key_name: &str,
2040 ___deadline: zx::MonotonicInstant,
2041 ) -> Result<KeyManagerDeleteKeyResult, fidl::Error> {
2042 let _response = self.client.send_query::<
2043 KeyManagerDeleteKeyRequest,
2044 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2045 KeyManagerMarker,
2046 >(
2047 (key_name,),
2048 0x55521e617d023aad,
2049 fidl::encoding::DynamicFlags::empty(),
2050 ___deadline,
2051 )?;
2052 Ok(_response.map(|x| x))
2053 }
2054}
2055
2056#[cfg(target_os = "fuchsia")]
2057impl From<KeyManagerSynchronousProxy> for zx::NullableHandle {
2058 fn from(value: KeyManagerSynchronousProxy) -> Self {
2059 value.into_channel().into()
2060 }
2061}
2062
2063#[cfg(target_os = "fuchsia")]
2064impl From<fidl::Channel> for KeyManagerSynchronousProxy {
2065 fn from(value: fidl::Channel) -> Self {
2066 Self::new(value)
2067 }
2068}
2069
2070#[cfg(target_os = "fuchsia")]
2071impl fidl::endpoints::FromClient for KeyManagerSynchronousProxy {
2072 type Protocol = KeyManagerMarker;
2073
2074 fn from_client(value: fidl::endpoints::ClientEnd<KeyManagerMarker>) -> Self {
2075 Self::new(value.into_channel())
2076 }
2077}
2078
2079#[derive(Debug, Clone)]
2080pub struct KeyManagerProxy {
2081 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2082}
2083
2084impl fidl::endpoints::Proxy for KeyManagerProxy {
2085 type Protocol = KeyManagerMarker;
2086
2087 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2088 Self::new(inner)
2089 }
2090
2091 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2092 self.client.into_channel().map_err(|client| Self { client })
2093 }
2094
2095 fn as_channel(&self) -> &::fidl::AsyncChannel {
2096 self.client.as_channel()
2097 }
2098}
2099
2100impl KeyManagerProxy {
2101 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2103 let protocol_name = <KeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2104 Self { client: fidl::client::Client::new(channel, protocol_name) }
2105 }
2106
2107 pub fn take_event_stream(&self) -> KeyManagerEventStream {
2113 KeyManagerEventStream { event_receiver: self.client.take_event_receiver() }
2114 }
2115
2116 pub fn r#seal_data(
2121 &self,
2122 mut plain_text: fidl_fuchsia_mem::Buffer,
2123 ) -> fidl::client::QueryResponseFut<
2124 KeyManagerSealDataResult,
2125 fidl::encoding::DefaultFuchsiaResourceDialect,
2126 > {
2127 KeyManagerProxyInterface::r#seal_data(self, plain_text)
2128 }
2129
2130 pub fn r#unseal_data(
2134 &self,
2135 mut cipher_text: fidl_fuchsia_mem::Buffer,
2136 ) -> fidl::client::QueryResponseFut<
2137 KeyManagerUnsealDataResult,
2138 fidl::encoding::DefaultFuchsiaResourceDialect,
2139 > {
2140 KeyManagerProxyInterface::r#unseal_data(self, cipher_text)
2141 }
2142
2143 pub fn r#generate_asymmetric_key(
2150 &self,
2151 mut key_name: &str,
2152 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2153 ) -> fidl::client::QueryResponseFut<
2154 KeyManagerGenerateAsymmetricKeyResult,
2155 fidl::encoding::DefaultFuchsiaResourceDialect,
2156 > {
2157 KeyManagerProxyInterface::r#generate_asymmetric_key(self, key_name, key)
2158 }
2159
2160 pub fn r#generate_asymmetric_key_with_algorithm(
2166 &self,
2167 mut key_name: &str,
2168 mut key_algorithm: AsymmetricKeyAlgorithm,
2169 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2170 ) -> fidl::client::QueryResponseFut<
2171 KeyManagerGenerateAsymmetricKeyWithAlgorithmResult,
2172 fidl::encoding::DefaultFuchsiaResourceDialect,
2173 > {
2174 KeyManagerProxyInterface::r#generate_asymmetric_key_with_algorithm(
2175 self,
2176 key_name,
2177 key_algorithm,
2178 key,
2179 )
2180 }
2181
2182 pub fn r#import_asymmetric_private_key(
2189 &self,
2190 mut data: &[u8],
2191 mut key_name: &str,
2192 mut key_algorithm: AsymmetricKeyAlgorithm,
2193 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2194 ) -> fidl::client::QueryResponseFut<
2195 KeyManagerImportAsymmetricPrivateKeyResult,
2196 fidl::encoding::DefaultFuchsiaResourceDialect,
2197 > {
2198 KeyManagerProxyInterface::r#import_asymmetric_private_key(
2199 self,
2200 data,
2201 key_name,
2202 key_algorithm,
2203 key,
2204 )
2205 }
2206
2207 pub fn r#get_asymmetric_private_key(
2212 &self,
2213 mut key_name: &str,
2214 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2215 ) -> fidl::client::QueryResponseFut<
2216 KeyManagerGetAsymmetricPrivateKeyResult,
2217 fidl::encoding::DefaultFuchsiaResourceDialect,
2218 > {
2219 KeyManagerProxyInterface::r#get_asymmetric_private_key(self, key_name, key)
2220 }
2221
2222 pub fn r#delete_key(
2228 &self,
2229 mut key_name: &str,
2230 ) -> fidl::client::QueryResponseFut<
2231 KeyManagerDeleteKeyResult,
2232 fidl::encoding::DefaultFuchsiaResourceDialect,
2233 > {
2234 KeyManagerProxyInterface::r#delete_key(self, key_name)
2235 }
2236}
2237
2238impl KeyManagerProxyInterface for KeyManagerProxy {
2239 type SealDataResponseFut = fidl::client::QueryResponseFut<
2240 KeyManagerSealDataResult,
2241 fidl::encoding::DefaultFuchsiaResourceDialect,
2242 >;
2243 fn r#seal_data(&self, mut plain_text: fidl_fuchsia_mem::Buffer) -> Self::SealDataResponseFut {
2244 fn _decode(
2245 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2246 ) -> Result<KeyManagerSealDataResult, fidl::Error> {
2247 let _response = fidl::client::decode_transaction_body::<
2248 fidl::encoding::ResultType<KeyManagerSealDataResponse, Error>,
2249 fidl::encoding::DefaultFuchsiaResourceDialect,
2250 0x3d2fcd85d11c96bb,
2251 >(_buf?)?;
2252 Ok(_response.map(|x| x.cipher_text))
2253 }
2254 self.client.send_query_and_decode::<KeyManagerSealDataRequest, KeyManagerSealDataResult>(
2255 (&mut plain_text,),
2256 0x3d2fcd85d11c96bb,
2257 fidl::encoding::DynamicFlags::empty(),
2258 _decode,
2259 )
2260 }
2261
2262 type UnsealDataResponseFut = fidl::client::QueryResponseFut<
2263 KeyManagerUnsealDataResult,
2264 fidl::encoding::DefaultFuchsiaResourceDialect,
2265 >;
2266 fn r#unseal_data(
2267 &self,
2268 mut cipher_text: fidl_fuchsia_mem::Buffer,
2269 ) -> Self::UnsealDataResponseFut {
2270 fn _decode(
2271 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2272 ) -> Result<KeyManagerUnsealDataResult, fidl::Error> {
2273 let _response = fidl::client::decode_transaction_body::<
2274 fidl::encoding::ResultType<KeyManagerUnsealDataResponse, Error>,
2275 fidl::encoding::DefaultFuchsiaResourceDialect,
2276 0x72dafc3131c1bca6,
2277 >(_buf?)?;
2278 Ok(_response.map(|x| x.plain_text))
2279 }
2280 self.client
2281 .send_query_and_decode::<KeyManagerUnsealDataRequest, KeyManagerUnsealDataResult>(
2282 (&mut cipher_text,),
2283 0x72dafc3131c1bca6,
2284 fidl::encoding::DynamicFlags::empty(),
2285 _decode,
2286 )
2287 }
2288
2289 type GenerateAsymmetricKeyResponseFut = fidl::client::QueryResponseFut<
2290 KeyManagerGenerateAsymmetricKeyResult,
2291 fidl::encoding::DefaultFuchsiaResourceDialect,
2292 >;
2293 fn r#generate_asymmetric_key(
2294 &self,
2295 mut key_name: &str,
2296 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2297 ) -> Self::GenerateAsymmetricKeyResponseFut {
2298 fn _decode(
2299 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2300 ) -> Result<KeyManagerGenerateAsymmetricKeyResult, fidl::Error> {
2301 let _response = fidl::client::decode_transaction_body::<
2302 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2303 fidl::encoding::DefaultFuchsiaResourceDialect,
2304 0x66f1aa7ff5eb183d,
2305 >(_buf?)?;
2306 Ok(_response.map(|x| x))
2307 }
2308 self.client.send_query_and_decode::<
2309 KeyManagerGenerateAsymmetricKeyRequest,
2310 KeyManagerGenerateAsymmetricKeyResult,
2311 >(
2312 (key_name, key,),
2313 0x66f1aa7ff5eb183d,
2314 fidl::encoding::DynamicFlags::empty(),
2315 _decode,
2316 )
2317 }
2318
2319 type GenerateAsymmetricKeyWithAlgorithmResponseFut = fidl::client::QueryResponseFut<
2320 KeyManagerGenerateAsymmetricKeyWithAlgorithmResult,
2321 fidl::encoding::DefaultFuchsiaResourceDialect,
2322 >;
2323 fn r#generate_asymmetric_key_with_algorithm(
2324 &self,
2325 mut key_name: &str,
2326 mut key_algorithm: AsymmetricKeyAlgorithm,
2327 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2328 ) -> Self::GenerateAsymmetricKeyWithAlgorithmResponseFut {
2329 fn _decode(
2330 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2331 ) -> Result<KeyManagerGenerateAsymmetricKeyWithAlgorithmResult, fidl::Error> {
2332 let _response = fidl::client::decode_transaction_body::<
2333 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2334 fidl::encoding::DefaultFuchsiaResourceDialect,
2335 0x2b9eac3ad0bc8a45,
2336 >(_buf?)?;
2337 Ok(_response.map(|x| x))
2338 }
2339 self.client.send_query_and_decode::<
2340 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
2341 KeyManagerGenerateAsymmetricKeyWithAlgorithmResult,
2342 >(
2343 (key_name, key_algorithm, key,),
2344 0x2b9eac3ad0bc8a45,
2345 fidl::encoding::DynamicFlags::empty(),
2346 _decode,
2347 )
2348 }
2349
2350 type ImportAsymmetricPrivateKeyResponseFut = fidl::client::QueryResponseFut<
2351 KeyManagerImportAsymmetricPrivateKeyResult,
2352 fidl::encoding::DefaultFuchsiaResourceDialect,
2353 >;
2354 fn r#import_asymmetric_private_key(
2355 &self,
2356 mut data: &[u8],
2357 mut key_name: &str,
2358 mut key_algorithm: AsymmetricKeyAlgorithm,
2359 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2360 ) -> Self::ImportAsymmetricPrivateKeyResponseFut {
2361 fn _decode(
2362 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2363 ) -> Result<KeyManagerImportAsymmetricPrivateKeyResult, fidl::Error> {
2364 let _response = fidl::client::decode_transaction_body::<
2365 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2366 fidl::encoding::DefaultFuchsiaResourceDialect,
2367 0x14c78f1ebb4eee71,
2368 >(_buf?)?;
2369 Ok(_response.map(|x| x))
2370 }
2371 self.client.send_query_and_decode::<
2372 KeyManagerImportAsymmetricPrivateKeyRequest,
2373 KeyManagerImportAsymmetricPrivateKeyResult,
2374 >(
2375 (data, key_name, key_algorithm, key,),
2376 0x14c78f1ebb4eee71,
2377 fidl::encoding::DynamicFlags::empty(),
2378 _decode,
2379 )
2380 }
2381
2382 type GetAsymmetricPrivateKeyResponseFut = fidl::client::QueryResponseFut<
2383 KeyManagerGetAsymmetricPrivateKeyResult,
2384 fidl::encoding::DefaultFuchsiaResourceDialect,
2385 >;
2386 fn r#get_asymmetric_private_key(
2387 &self,
2388 mut key_name: &str,
2389 mut key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2390 ) -> Self::GetAsymmetricPrivateKeyResponseFut {
2391 fn _decode(
2392 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2393 ) -> Result<KeyManagerGetAsymmetricPrivateKeyResult, fidl::Error> {
2394 let _response = fidl::client::decode_transaction_body::<
2395 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2396 fidl::encoding::DefaultFuchsiaResourceDialect,
2397 0x3a257fc6b6ccc5cd,
2398 >(_buf?)?;
2399 Ok(_response.map(|x| x))
2400 }
2401 self.client.send_query_and_decode::<
2402 KeyManagerGetAsymmetricPrivateKeyRequest,
2403 KeyManagerGetAsymmetricPrivateKeyResult,
2404 >(
2405 (key_name, key,),
2406 0x3a257fc6b6ccc5cd,
2407 fidl::encoding::DynamicFlags::empty(),
2408 _decode,
2409 )
2410 }
2411
2412 type DeleteKeyResponseFut = fidl::client::QueryResponseFut<
2413 KeyManagerDeleteKeyResult,
2414 fidl::encoding::DefaultFuchsiaResourceDialect,
2415 >;
2416 fn r#delete_key(&self, mut key_name: &str) -> Self::DeleteKeyResponseFut {
2417 fn _decode(
2418 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2419 ) -> Result<KeyManagerDeleteKeyResult, fidl::Error> {
2420 let _response = fidl::client::decode_transaction_body::<
2421 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
2422 fidl::encoding::DefaultFuchsiaResourceDialect,
2423 0x55521e617d023aad,
2424 >(_buf?)?;
2425 Ok(_response.map(|x| x))
2426 }
2427 self.client.send_query_and_decode::<KeyManagerDeleteKeyRequest, KeyManagerDeleteKeyResult>(
2428 (key_name,),
2429 0x55521e617d023aad,
2430 fidl::encoding::DynamicFlags::empty(),
2431 _decode,
2432 )
2433 }
2434}
2435
2436pub struct KeyManagerEventStream {
2437 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2438}
2439
2440impl std::marker::Unpin for KeyManagerEventStream {}
2441
2442impl futures::stream::FusedStream for KeyManagerEventStream {
2443 fn is_terminated(&self) -> bool {
2444 self.event_receiver.is_terminated()
2445 }
2446}
2447
2448impl futures::Stream for KeyManagerEventStream {
2449 type Item = Result<KeyManagerEvent, fidl::Error>;
2450
2451 fn poll_next(
2452 mut self: std::pin::Pin<&mut Self>,
2453 cx: &mut std::task::Context<'_>,
2454 ) -> std::task::Poll<Option<Self::Item>> {
2455 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2456 &mut self.event_receiver,
2457 cx
2458 )?) {
2459 Some(buf) => std::task::Poll::Ready(Some(KeyManagerEvent::decode(buf))),
2460 None => std::task::Poll::Ready(None),
2461 }
2462 }
2463}
2464
2465#[derive(Debug)]
2466pub enum KeyManagerEvent {}
2467
2468impl KeyManagerEvent {
2469 fn decode(
2471 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2472 ) -> Result<KeyManagerEvent, fidl::Error> {
2473 let (bytes, _handles) = buf.split_mut();
2474 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2475 debug_assert_eq!(tx_header.tx_id, 0);
2476 match tx_header.ordinal {
2477 _ => Err(fidl::Error::UnknownOrdinal {
2478 ordinal: tx_header.ordinal,
2479 protocol_name: <KeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2480 }),
2481 }
2482 }
2483}
2484
2485pub struct KeyManagerRequestStream {
2487 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2488 is_terminated: bool,
2489}
2490
2491impl std::marker::Unpin for KeyManagerRequestStream {}
2492
2493impl futures::stream::FusedStream for KeyManagerRequestStream {
2494 fn is_terminated(&self) -> bool {
2495 self.is_terminated
2496 }
2497}
2498
2499impl fidl::endpoints::RequestStream for KeyManagerRequestStream {
2500 type Protocol = KeyManagerMarker;
2501 type ControlHandle = KeyManagerControlHandle;
2502
2503 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2504 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2505 }
2506
2507 fn control_handle(&self) -> Self::ControlHandle {
2508 KeyManagerControlHandle { inner: self.inner.clone() }
2509 }
2510
2511 fn into_inner(
2512 self,
2513 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2514 {
2515 (self.inner, self.is_terminated)
2516 }
2517
2518 fn from_inner(
2519 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2520 is_terminated: bool,
2521 ) -> Self {
2522 Self { inner, is_terminated }
2523 }
2524}
2525
2526impl futures::Stream for KeyManagerRequestStream {
2527 type Item = Result<KeyManagerRequest, fidl::Error>;
2528
2529 fn poll_next(
2530 mut self: std::pin::Pin<&mut Self>,
2531 cx: &mut std::task::Context<'_>,
2532 ) -> std::task::Poll<Option<Self::Item>> {
2533 let this = &mut *self;
2534 if this.inner.check_shutdown(cx) {
2535 this.is_terminated = true;
2536 return std::task::Poll::Ready(None);
2537 }
2538 if this.is_terminated {
2539 panic!("polled KeyManagerRequestStream after completion");
2540 }
2541 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2542 |bytes, handles| {
2543 match this.inner.channel().read_etc(cx, bytes, handles) {
2544 std::task::Poll::Ready(Ok(())) => {}
2545 std::task::Poll::Pending => return std::task::Poll::Pending,
2546 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2547 this.is_terminated = true;
2548 return std::task::Poll::Ready(None);
2549 }
2550 std::task::Poll::Ready(Err(e)) => {
2551 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2552 e.into(),
2553 ))));
2554 }
2555 }
2556
2557 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2559
2560 std::task::Poll::Ready(Some(match header.ordinal {
2561 0x3d2fcd85d11c96bb => {
2562 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2563 let mut req = fidl::new_empty!(
2564 KeyManagerSealDataRequest,
2565 fidl::encoding::DefaultFuchsiaResourceDialect
2566 );
2567 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerSealDataRequest>(&header, _body_bytes, handles, &mut req)?;
2568 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2569 Ok(KeyManagerRequest::SealData {
2570 plain_text: req.plain_text,
2571
2572 responder: KeyManagerSealDataResponder {
2573 control_handle: std::mem::ManuallyDrop::new(control_handle),
2574 tx_id: header.tx_id,
2575 },
2576 })
2577 }
2578 0x72dafc3131c1bca6 => {
2579 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2580 let mut req = fidl::new_empty!(
2581 KeyManagerUnsealDataRequest,
2582 fidl::encoding::DefaultFuchsiaResourceDialect
2583 );
2584 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerUnsealDataRequest>(&header, _body_bytes, handles, &mut req)?;
2585 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2586 Ok(KeyManagerRequest::UnsealData {
2587 cipher_text: req.cipher_text,
2588
2589 responder: KeyManagerUnsealDataResponder {
2590 control_handle: std::mem::ManuallyDrop::new(control_handle),
2591 tx_id: header.tx_id,
2592 },
2593 })
2594 }
2595 0x66f1aa7ff5eb183d => {
2596 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2597 let mut req = fidl::new_empty!(
2598 KeyManagerGenerateAsymmetricKeyRequest,
2599 fidl::encoding::DefaultFuchsiaResourceDialect
2600 );
2601 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerGenerateAsymmetricKeyRequest>(&header, _body_bytes, handles, &mut req)?;
2602 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2603 Ok(KeyManagerRequest::GenerateAsymmetricKey {
2604 key_name: req.key_name,
2605 key: req.key,
2606
2607 responder: KeyManagerGenerateAsymmetricKeyResponder {
2608 control_handle: std::mem::ManuallyDrop::new(control_handle),
2609 tx_id: header.tx_id,
2610 },
2611 })
2612 }
2613 0x2b9eac3ad0bc8a45 => {
2614 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2615 let mut req = fidl::new_empty!(
2616 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
2617 fidl::encoding::DefaultFuchsiaResourceDialect
2618 );
2619 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest>(&header, _body_bytes, handles, &mut req)?;
2620 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2621 Ok(KeyManagerRequest::GenerateAsymmetricKeyWithAlgorithm {
2622 key_name: req.key_name,
2623 key_algorithm: req.key_algorithm,
2624 key: req.key,
2625
2626 responder: KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder {
2627 control_handle: std::mem::ManuallyDrop::new(control_handle),
2628 tx_id: header.tx_id,
2629 },
2630 })
2631 }
2632 0x14c78f1ebb4eee71 => {
2633 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2634 let mut req = fidl::new_empty!(
2635 KeyManagerImportAsymmetricPrivateKeyRequest,
2636 fidl::encoding::DefaultFuchsiaResourceDialect
2637 );
2638 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerImportAsymmetricPrivateKeyRequest>(&header, _body_bytes, handles, &mut req)?;
2639 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2640 Ok(KeyManagerRequest::ImportAsymmetricPrivateKey {
2641 data: req.data,
2642 key_name: req.key_name,
2643 key_algorithm: req.key_algorithm,
2644 key: req.key,
2645
2646 responder: KeyManagerImportAsymmetricPrivateKeyResponder {
2647 control_handle: std::mem::ManuallyDrop::new(control_handle),
2648 tx_id: header.tx_id,
2649 },
2650 })
2651 }
2652 0x3a257fc6b6ccc5cd => {
2653 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2654 let mut req = fidl::new_empty!(
2655 KeyManagerGetAsymmetricPrivateKeyRequest,
2656 fidl::encoding::DefaultFuchsiaResourceDialect
2657 );
2658 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerGetAsymmetricPrivateKeyRequest>(&header, _body_bytes, handles, &mut req)?;
2659 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2660 Ok(KeyManagerRequest::GetAsymmetricPrivateKey {
2661 key_name: req.key_name,
2662 key: req.key,
2663
2664 responder: KeyManagerGetAsymmetricPrivateKeyResponder {
2665 control_handle: std::mem::ManuallyDrop::new(control_handle),
2666 tx_id: header.tx_id,
2667 },
2668 })
2669 }
2670 0x55521e617d023aad => {
2671 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2672 let mut req = fidl::new_empty!(
2673 KeyManagerDeleteKeyRequest,
2674 fidl::encoding::DefaultFuchsiaResourceDialect
2675 );
2676 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<KeyManagerDeleteKeyRequest>(&header, _body_bytes, handles, &mut req)?;
2677 let control_handle = KeyManagerControlHandle { inner: this.inner.clone() };
2678 Ok(KeyManagerRequest::DeleteKey {
2679 key_name: req.key_name,
2680
2681 responder: KeyManagerDeleteKeyResponder {
2682 control_handle: std::mem::ManuallyDrop::new(control_handle),
2683 tx_id: header.tx_id,
2684 },
2685 })
2686 }
2687 _ => Err(fidl::Error::UnknownOrdinal {
2688 ordinal: header.ordinal,
2689 protocol_name:
2690 <KeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2691 }),
2692 }))
2693 },
2694 )
2695 }
2696}
2697
2698#[derive(Debug)]
2699pub enum KeyManagerRequest {
2700 SealData { plain_text: fidl_fuchsia_mem::Buffer, responder: KeyManagerSealDataResponder },
2705 UnsealData { cipher_text: fidl_fuchsia_mem::Buffer, responder: KeyManagerUnsealDataResponder },
2709 GenerateAsymmetricKey {
2716 key_name: String,
2717 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2718 responder: KeyManagerGenerateAsymmetricKeyResponder,
2719 },
2720 GenerateAsymmetricKeyWithAlgorithm {
2726 key_name: String,
2727 key_algorithm: AsymmetricKeyAlgorithm,
2728 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2729 responder: KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder,
2730 },
2731 ImportAsymmetricPrivateKey {
2738 data: Vec<u8>,
2739 key_name: String,
2740 key_algorithm: AsymmetricKeyAlgorithm,
2741 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2742 responder: KeyManagerImportAsymmetricPrivateKeyResponder,
2743 },
2744 GetAsymmetricPrivateKey {
2749 key_name: String,
2750 key: fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2751 responder: KeyManagerGetAsymmetricPrivateKeyResponder,
2752 },
2753 DeleteKey { key_name: String, responder: KeyManagerDeleteKeyResponder },
2759}
2760
2761impl KeyManagerRequest {
2762 #[allow(irrefutable_let_patterns)]
2763 pub fn into_seal_data(self) -> Option<(fidl_fuchsia_mem::Buffer, KeyManagerSealDataResponder)> {
2764 if let KeyManagerRequest::SealData { plain_text, responder } = self {
2765 Some((plain_text, responder))
2766 } else {
2767 None
2768 }
2769 }
2770
2771 #[allow(irrefutable_let_patterns)]
2772 pub fn into_unseal_data(
2773 self,
2774 ) -> Option<(fidl_fuchsia_mem::Buffer, KeyManagerUnsealDataResponder)> {
2775 if let KeyManagerRequest::UnsealData { cipher_text, responder } = self {
2776 Some((cipher_text, responder))
2777 } else {
2778 None
2779 }
2780 }
2781
2782 #[allow(irrefutable_let_patterns)]
2783 pub fn into_generate_asymmetric_key(
2784 self,
2785 ) -> Option<(
2786 String,
2787 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2788 KeyManagerGenerateAsymmetricKeyResponder,
2789 )> {
2790 if let KeyManagerRequest::GenerateAsymmetricKey { key_name, key, responder } = self {
2791 Some((key_name, key, responder))
2792 } else {
2793 None
2794 }
2795 }
2796
2797 #[allow(irrefutable_let_patterns)]
2798 pub fn into_generate_asymmetric_key_with_algorithm(
2799 self,
2800 ) -> Option<(
2801 String,
2802 AsymmetricKeyAlgorithm,
2803 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2804 KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder,
2805 )> {
2806 if let KeyManagerRequest::GenerateAsymmetricKeyWithAlgorithm {
2807 key_name,
2808 key_algorithm,
2809 key,
2810 responder,
2811 } = self
2812 {
2813 Some((key_name, key_algorithm, key, responder))
2814 } else {
2815 None
2816 }
2817 }
2818
2819 #[allow(irrefutable_let_patterns)]
2820 pub fn into_import_asymmetric_private_key(
2821 self,
2822 ) -> Option<(
2823 Vec<u8>,
2824 String,
2825 AsymmetricKeyAlgorithm,
2826 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2827 KeyManagerImportAsymmetricPrivateKeyResponder,
2828 )> {
2829 if let KeyManagerRequest::ImportAsymmetricPrivateKey {
2830 data,
2831 key_name,
2832 key_algorithm,
2833 key,
2834 responder,
2835 } = self
2836 {
2837 Some((data, key_name, key_algorithm, key, responder))
2838 } else {
2839 None
2840 }
2841 }
2842
2843 #[allow(irrefutable_let_patterns)]
2844 pub fn into_get_asymmetric_private_key(
2845 self,
2846 ) -> Option<(
2847 String,
2848 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
2849 KeyManagerGetAsymmetricPrivateKeyResponder,
2850 )> {
2851 if let KeyManagerRequest::GetAsymmetricPrivateKey { key_name, key, responder } = self {
2852 Some((key_name, key, responder))
2853 } else {
2854 None
2855 }
2856 }
2857
2858 #[allow(irrefutable_let_patterns)]
2859 pub fn into_delete_key(self) -> Option<(String, KeyManagerDeleteKeyResponder)> {
2860 if let KeyManagerRequest::DeleteKey { key_name, responder } = self {
2861 Some((key_name, responder))
2862 } else {
2863 None
2864 }
2865 }
2866
2867 pub fn method_name(&self) -> &'static str {
2869 match *self {
2870 KeyManagerRequest::SealData { .. } => "seal_data",
2871 KeyManagerRequest::UnsealData { .. } => "unseal_data",
2872 KeyManagerRequest::GenerateAsymmetricKey { .. } => "generate_asymmetric_key",
2873 KeyManagerRequest::GenerateAsymmetricKeyWithAlgorithm { .. } => {
2874 "generate_asymmetric_key_with_algorithm"
2875 }
2876 KeyManagerRequest::ImportAsymmetricPrivateKey { .. } => "import_asymmetric_private_key",
2877 KeyManagerRequest::GetAsymmetricPrivateKey { .. } => "get_asymmetric_private_key",
2878 KeyManagerRequest::DeleteKey { .. } => "delete_key",
2879 }
2880 }
2881}
2882
2883#[derive(Debug, Clone)]
2884pub struct KeyManagerControlHandle {
2885 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2886}
2887
2888impl KeyManagerControlHandle {
2889 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2890 self.inner.shutdown_with_epitaph(status.into())
2891 }
2892}
2893
2894impl fidl::endpoints::ControlHandle for KeyManagerControlHandle {
2895 fn shutdown(&self) {
2896 self.inner.shutdown()
2897 }
2898
2899 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2900 self.inner.shutdown_with_epitaph(status)
2901 }
2902
2903 fn is_closed(&self) -> bool {
2904 self.inner.channel().is_closed()
2905 }
2906 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2907 self.inner.channel().on_closed()
2908 }
2909
2910 #[cfg(target_os = "fuchsia")]
2911 fn signal_peer(
2912 &self,
2913 clear_mask: zx::Signals,
2914 set_mask: zx::Signals,
2915 ) -> Result<(), zx_status::Status> {
2916 use fidl::Peered;
2917 self.inner.channel().signal_peer(clear_mask, set_mask)
2918 }
2919}
2920
2921impl KeyManagerControlHandle {}
2922
2923#[must_use = "FIDL methods require a response to be sent"]
2924#[derive(Debug)]
2925pub struct KeyManagerSealDataResponder {
2926 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
2927 tx_id: u32,
2928}
2929
2930impl std::ops::Drop for KeyManagerSealDataResponder {
2934 fn drop(&mut self) {
2935 self.control_handle.shutdown();
2936 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2938 }
2939}
2940
2941impl fidl::endpoints::Responder for KeyManagerSealDataResponder {
2942 type ControlHandle = KeyManagerControlHandle;
2943
2944 fn control_handle(&self) -> &KeyManagerControlHandle {
2945 &self.control_handle
2946 }
2947
2948 fn drop_without_shutdown(mut self) {
2949 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2951 std::mem::forget(self);
2953 }
2954}
2955
2956impl KeyManagerSealDataResponder {
2957 pub fn send(
2961 self,
2962 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
2963 ) -> Result<(), fidl::Error> {
2964 let _result = self.send_raw(result);
2965 if _result.is_err() {
2966 self.control_handle.shutdown();
2967 }
2968 self.drop_without_shutdown();
2969 _result
2970 }
2971
2972 pub fn send_no_shutdown_on_err(
2974 self,
2975 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
2976 ) -> Result<(), fidl::Error> {
2977 let _result = self.send_raw(result);
2978 self.drop_without_shutdown();
2979 _result
2980 }
2981
2982 fn send_raw(
2983 &self,
2984 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
2985 ) -> Result<(), fidl::Error> {
2986 self.control_handle
2987 .inner
2988 .send::<fidl::encoding::ResultType<KeyManagerSealDataResponse, Error>>(
2989 result.as_mut().map_err(|e| *e).map(|cipher_text| (cipher_text,)),
2990 self.tx_id,
2991 0x3d2fcd85d11c96bb,
2992 fidl::encoding::DynamicFlags::empty(),
2993 )
2994 }
2995}
2996
2997#[must_use = "FIDL methods require a response to be sent"]
2998#[derive(Debug)]
2999pub struct KeyManagerUnsealDataResponder {
3000 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3001 tx_id: u32,
3002}
3003
3004impl std::ops::Drop for KeyManagerUnsealDataResponder {
3008 fn drop(&mut self) {
3009 self.control_handle.shutdown();
3010 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3012 }
3013}
3014
3015impl fidl::endpoints::Responder for KeyManagerUnsealDataResponder {
3016 type ControlHandle = KeyManagerControlHandle;
3017
3018 fn control_handle(&self) -> &KeyManagerControlHandle {
3019 &self.control_handle
3020 }
3021
3022 fn drop_without_shutdown(mut self) {
3023 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3025 std::mem::forget(self);
3027 }
3028}
3029
3030impl KeyManagerUnsealDataResponder {
3031 pub fn send(
3035 self,
3036 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
3037 ) -> Result<(), fidl::Error> {
3038 let _result = self.send_raw(result);
3039 if _result.is_err() {
3040 self.control_handle.shutdown();
3041 }
3042 self.drop_without_shutdown();
3043 _result
3044 }
3045
3046 pub fn send_no_shutdown_on_err(
3048 self,
3049 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
3050 ) -> Result<(), fidl::Error> {
3051 let _result = self.send_raw(result);
3052 self.drop_without_shutdown();
3053 _result
3054 }
3055
3056 fn send_raw(
3057 &self,
3058 mut result: Result<fidl_fuchsia_mem::Buffer, Error>,
3059 ) -> Result<(), fidl::Error> {
3060 self.control_handle
3061 .inner
3062 .send::<fidl::encoding::ResultType<KeyManagerUnsealDataResponse, Error>>(
3063 result.as_mut().map_err(|e| *e).map(|plain_text| (plain_text,)),
3064 self.tx_id,
3065 0x72dafc3131c1bca6,
3066 fidl::encoding::DynamicFlags::empty(),
3067 )
3068 }
3069}
3070
3071#[must_use = "FIDL methods require a response to be sent"]
3072#[derive(Debug)]
3073pub struct KeyManagerGenerateAsymmetricKeyResponder {
3074 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3075 tx_id: u32,
3076}
3077
3078impl std::ops::Drop for KeyManagerGenerateAsymmetricKeyResponder {
3082 fn drop(&mut self) {
3083 self.control_handle.shutdown();
3084 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3086 }
3087}
3088
3089impl fidl::endpoints::Responder for KeyManagerGenerateAsymmetricKeyResponder {
3090 type ControlHandle = KeyManagerControlHandle;
3091
3092 fn control_handle(&self) -> &KeyManagerControlHandle {
3093 &self.control_handle
3094 }
3095
3096 fn drop_without_shutdown(mut self) {
3097 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3099 std::mem::forget(self);
3101 }
3102}
3103
3104impl KeyManagerGenerateAsymmetricKeyResponder {
3105 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3109 let _result = self.send_raw(result);
3110 if _result.is_err() {
3111 self.control_handle.shutdown();
3112 }
3113 self.drop_without_shutdown();
3114 _result
3115 }
3116
3117 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3119 let _result = self.send_raw(result);
3120 self.drop_without_shutdown();
3121 _result
3122 }
3123
3124 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3125 self.control_handle
3126 .inner
3127 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
3128 result,
3129 self.tx_id,
3130 0x66f1aa7ff5eb183d,
3131 fidl::encoding::DynamicFlags::empty(),
3132 )
3133 }
3134}
3135
3136#[must_use = "FIDL methods require a response to be sent"]
3137#[derive(Debug)]
3138pub struct KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder {
3139 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3140 tx_id: u32,
3141}
3142
3143impl std::ops::Drop for KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder {
3147 fn drop(&mut self) {
3148 self.control_handle.shutdown();
3149 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3151 }
3152}
3153
3154impl fidl::endpoints::Responder for KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder {
3155 type ControlHandle = KeyManagerControlHandle;
3156
3157 fn control_handle(&self) -> &KeyManagerControlHandle {
3158 &self.control_handle
3159 }
3160
3161 fn drop_without_shutdown(mut self) {
3162 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3164 std::mem::forget(self);
3166 }
3167}
3168
3169impl KeyManagerGenerateAsymmetricKeyWithAlgorithmResponder {
3170 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3174 let _result = self.send_raw(result);
3175 if _result.is_err() {
3176 self.control_handle.shutdown();
3177 }
3178 self.drop_without_shutdown();
3179 _result
3180 }
3181
3182 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3184 let _result = self.send_raw(result);
3185 self.drop_without_shutdown();
3186 _result
3187 }
3188
3189 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3190 self.control_handle
3191 .inner
3192 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
3193 result,
3194 self.tx_id,
3195 0x2b9eac3ad0bc8a45,
3196 fidl::encoding::DynamicFlags::empty(),
3197 )
3198 }
3199}
3200
3201#[must_use = "FIDL methods require a response to be sent"]
3202#[derive(Debug)]
3203pub struct KeyManagerImportAsymmetricPrivateKeyResponder {
3204 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3205 tx_id: u32,
3206}
3207
3208impl std::ops::Drop for KeyManagerImportAsymmetricPrivateKeyResponder {
3212 fn drop(&mut self) {
3213 self.control_handle.shutdown();
3214 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3216 }
3217}
3218
3219impl fidl::endpoints::Responder for KeyManagerImportAsymmetricPrivateKeyResponder {
3220 type ControlHandle = KeyManagerControlHandle;
3221
3222 fn control_handle(&self) -> &KeyManagerControlHandle {
3223 &self.control_handle
3224 }
3225
3226 fn drop_without_shutdown(mut self) {
3227 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3229 std::mem::forget(self);
3231 }
3232}
3233
3234impl KeyManagerImportAsymmetricPrivateKeyResponder {
3235 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3239 let _result = self.send_raw(result);
3240 if _result.is_err() {
3241 self.control_handle.shutdown();
3242 }
3243 self.drop_without_shutdown();
3244 _result
3245 }
3246
3247 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3249 let _result = self.send_raw(result);
3250 self.drop_without_shutdown();
3251 _result
3252 }
3253
3254 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3255 self.control_handle
3256 .inner
3257 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
3258 result,
3259 self.tx_id,
3260 0x14c78f1ebb4eee71,
3261 fidl::encoding::DynamicFlags::empty(),
3262 )
3263 }
3264}
3265
3266#[must_use = "FIDL methods require a response to be sent"]
3267#[derive(Debug)]
3268pub struct KeyManagerGetAsymmetricPrivateKeyResponder {
3269 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3270 tx_id: u32,
3271}
3272
3273impl std::ops::Drop for KeyManagerGetAsymmetricPrivateKeyResponder {
3277 fn drop(&mut self) {
3278 self.control_handle.shutdown();
3279 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3281 }
3282}
3283
3284impl fidl::endpoints::Responder for KeyManagerGetAsymmetricPrivateKeyResponder {
3285 type ControlHandle = KeyManagerControlHandle;
3286
3287 fn control_handle(&self) -> &KeyManagerControlHandle {
3288 &self.control_handle
3289 }
3290
3291 fn drop_without_shutdown(mut self) {
3292 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3294 std::mem::forget(self);
3296 }
3297}
3298
3299impl KeyManagerGetAsymmetricPrivateKeyResponder {
3300 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3304 let _result = self.send_raw(result);
3305 if _result.is_err() {
3306 self.control_handle.shutdown();
3307 }
3308 self.drop_without_shutdown();
3309 _result
3310 }
3311
3312 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3314 let _result = self.send_raw(result);
3315 self.drop_without_shutdown();
3316 _result
3317 }
3318
3319 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3320 self.control_handle
3321 .inner
3322 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
3323 result,
3324 self.tx_id,
3325 0x3a257fc6b6ccc5cd,
3326 fidl::encoding::DynamicFlags::empty(),
3327 )
3328 }
3329}
3330
3331#[must_use = "FIDL methods require a response to be sent"]
3332#[derive(Debug)]
3333pub struct KeyManagerDeleteKeyResponder {
3334 control_handle: std::mem::ManuallyDrop<KeyManagerControlHandle>,
3335 tx_id: u32,
3336}
3337
3338impl std::ops::Drop for KeyManagerDeleteKeyResponder {
3342 fn drop(&mut self) {
3343 self.control_handle.shutdown();
3344 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3346 }
3347}
3348
3349impl fidl::endpoints::Responder for KeyManagerDeleteKeyResponder {
3350 type ControlHandle = KeyManagerControlHandle;
3351
3352 fn control_handle(&self) -> &KeyManagerControlHandle {
3353 &self.control_handle
3354 }
3355
3356 fn drop_without_shutdown(mut self) {
3357 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3359 std::mem::forget(self);
3361 }
3362}
3363
3364impl KeyManagerDeleteKeyResponder {
3365 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3369 let _result = self.send_raw(result);
3370 if _result.is_err() {
3371 self.control_handle.shutdown();
3372 }
3373 self.drop_without_shutdown();
3374 _result
3375 }
3376
3377 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3379 let _result = self.send_raw(result);
3380 self.drop_without_shutdown();
3381 _result
3382 }
3383
3384 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3385 self.control_handle
3386 .inner
3387 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
3388 result,
3389 self.tx_id,
3390 0x55521e617d023aad,
3391 fidl::encoding::DynamicFlags::empty(),
3392 )
3393 }
3394}
3395
3396#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3397pub struct StatelessKeyManagerMarker;
3398
3399impl fidl::endpoints::ProtocolMarker for StatelessKeyManagerMarker {
3400 type Proxy = StatelessKeyManagerProxy;
3401 type RequestStream = StatelessKeyManagerRequestStream;
3402 #[cfg(target_os = "fuchsia")]
3403 type SynchronousProxy = StatelessKeyManagerSynchronousProxy;
3404
3405 const DEBUG_NAME: &'static str = "fuchsia.kms.StatelessKeyManager";
3406}
3407impl fidl::endpoints::DiscoverableProtocolMarker for StatelessKeyManagerMarker {}
3408pub type StatelessKeyManagerGetHardwareDerivedKeyResult = Result<Vec<u8>, Error>;
3409
3410pub trait StatelessKeyManagerProxyInterface: Send + Sync {
3411 type GetHardwareDerivedKeyResponseFut: std::future::Future<
3412 Output = Result<StatelessKeyManagerGetHardwareDerivedKeyResult, fidl::Error>,
3413 > + Send;
3414 fn r#get_hardware_derived_key(&self, key_info: &[u8])
3415 -> Self::GetHardwareDerivedKeyResponseFut;
3416}
3417#[derive(Debug)]
3418#[cfg(target_os = "fuchsia")]
3419pub struct StatelessKeyManagerSynchronousProxy {
3420 client: fidl::client::sync::Client,
3421}
3422
3423#[cfg(target_os = "fuchsia")]
3424impl fidl::endpoints::SynchronousProxy for StatelessKeyManagerSynchronousProxy {
3425 type Proxy = StatelessKeyManagerProxy;
3426 type Protocol = StatelessKeyManagerMarker;
3427
3428 fn from_channel(inner: fidl::Channel) -> Self {
3429 Self::new(inner)
3430 }
3431
3432 fn into_channel(self) -> fidl::Channel {
3433 self.client.into_channel()
3434 }
3435
3436 fn as_channel(&self) -> &fidl::Channel {
3437 self.client.as_channel()
3438 }
3439}
3440
3441#[cfg(target_os = "fuchsia")]
3442impl StatelessKeyManagerSynchronousProxy {
3443 pub fn new(channel: fidl::Channel) -> Self {
3444 Self { client: fidl::client::sync::Client::new(channel) }
3445 }
3446
3447 pub fn into_channel(self) -> fidl::Channel {
3448 self.client.into_channel()
3449 }
3450
3451 pub fn wait_for_event(
3454 &self,
3455 deadline: zx::MonotonicInstant,
3456 ) -> Result<StatelessKeyManagerEvent, fidl::Error> {
3457 StatelessKeyManagerEvent::decode(
3458 self.client.wait_for_event::<StatelessKeyManagerMarker>(deadline)?,
3459 )
3460 }
3461
3462 pub fn r#get_hardware_derived_key(
3469 &self,
3470 mut key_info: &[u8],
3471 ___deadline: zx::MonotonicInstant,
3472 ) -> Result<StatelessKeyManagerGetHardwareDerivedKeyResult, fidl::Error> {
3473 let _response = self.client.send_query::<
3474 StatelessKeyManagerGetHardwareDerivedKeyRequest,
3475 fidl::encoding::ResultType<StatelessKeyManagerGetHardwareDerivedKeyResponse, Error>,
3476 StatelessKeyManagerMarker,
3477 >(
3478 (key_info,),
3479 0x685043d9e68d5f86,
3480 fidl::encoding::DynamicFlags::empty(),
3481 ___deadline,
3482 )?;
3483 Ok(_response.map(|x| x.derived_key))
3484 }
3485}
3486
3487#[cfg(target_os = "fuchsia")]
3488impl From<StatelessKeyManagerSynchronousProxy> for zx::NullableHandle {
3489 fn from(value: StatelessKeyManagerSynchronousProxy) -> Self {
3490 value.into_channel().into()
3491 }
3492}
3493
3494#[cfg(target_os = "fuchsia")]
3495impl From<fidl::Channel> for StatelessKeyManagerSynchronousProxy {
3496 fn from(value: fidl::Channel) -> Self {
3497 Self::new(value)
3498 }
3499}
3500
3501#[cfg(target_os = "fuchsia")]
3502impl fidl::endpoints::FromClient for StatelessKeyManagerSynchronousProxy {
3503 type Protocol = StatelessKeyManagerMarker;
3504
3505 fn from_client(value: fidl::endpoints::ClientEnd<StatelessKeyManagerMarker>) -> Self {
3506 Self::new(value.into_channel())
3507 }
3508}
3509
3510#[derive(Debug, Clone)]
3511pub struct StatelessKeyManagerProxy {
3512 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3513}
3514
3515impl fidl::endpoints::Proxy for StatelessKeyManagerProxy {
3516 type Protocol = StatelessKeyManagerMarker;
3517
3518 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3519 Self::new(inner)
3520 }
3521
3522 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3523 self.client.into_channel().map_err(|client| Self { client })
3524 }
3525
3526 fn as_channel(&self) -> &::fidl::AsyncChannel {
3527 self.client.as_channel()
3528 }
3529}
3530
3531impl StatelessKeyManagerProxy {
3532 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3534 let protocol_name =
3535 <StatelessKeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3536 Self { client: fidl::client::Client::new(channel, protocol_name) }
3537 }
3538
3539 pub fn take_event_stream(&self) -> StatelessKeyManagerEventStream {
3545 StatelessKeyManagerEventStream { event_receiver: self.client.take_event_receiver() }
3546 }
3547
3548 pub fn r#get_hardware_derived_key(
3555 &self,
3556 mut key_info: &[u8],
3557 ) -> fidl::client::QueryResponseFut<
3558 StatelessKeyManagerGetHardwareDerivedKeyResult,
3559 fidl::encoding::DefaultFuchsiaResourceDialect,
3560 > {
3561 StatelessKeyManagerProxyInterface::r#get_hardware_derived_key(self, key_info)
3562 }
3563}
3564
3565impl StatelessKeyManagerProxyInterface for StatelessKeyManagerProxy {
3566 type GetHardwareDerivedKeyResponseFut = fidl::client::QueryResponseFut<
3567 StatelessKeyManagerGetHardwareDerivedKeyResult,
3568 fidl::encoding::DefaultFuchsiaResourceDialect,
3569 >;
3570 fn r#get_hardware_derived_key(
3571 &self,
3572 mut key_info: &[u8],
3573 ) -> Self::GetHardwareDerivedKeyResponseFut {
3574 fn _decode(
3575 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3576 ) -> Result<StatelessKeyManagerGetHardwareDerivedKeyResult, fidl::Error> {
3577 let _response = fidl::client::decode_transaction_body::<
3578 fidl::encoding::ResultType<StatelessKeyManagerGetHardwareDerivedKeyResponse, Error>,
3579 fidl::encoding::DefaultFuchsiaResourceDialect,
3580 0x685043d9e68d5f86,
3581 >(_buf?)?;
3582 Ok(_response.map(|x| x.derived_key))
3583 }
3584 self.client.send_query_and_decode::<
3585 StatelessKeyManagerGetHardwareDerivedKeyRequest,
3586 StatelessKeyManagerGetHardwareDerivedKeyResult,
3587 >(
3588 (key_info,),
3589 0x685043d9e68d5f86,
3590 fidl::encoding::DynamicFlags::empty(),
3591 _decode,
3592 )
3593 }
3594}
3595
3596pub struct StatelessKeyManagerEventStream {
3597 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3598}
3599
3600impl std::marker::Unpin for StatelessKeyManagerEventStream {}
3601
3602impl futures::stream::FusedStream for StatelessKeyManagerEventStream {
3603 fn is_terminated(&self) -> bool {
3604 self.event_receiver.is_terminated()
3605 }
3606}
3607
3608impl futures::Stream for StatelessKeyManagerEventStream {
3609 type Item = Result<StatelessKeyManagerEvent, fidl::Error>;
3610
3611 fn poll_next(
3612 mut self: std::pin::Pin<&mut Self>,
3613 cx: &mut std::task::Context<'_>,
3614 ) -> std::task::Poll<Option<Self::Item>> {
3615 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3616 &mut self.event_receiver,
3617 cx
3618 )?) {
3619 Some(buf) => std::task::Poll::Ready(Some(StatelessKeyManagerEvent::decode(buf))),
3620 None => std::task::Poll::Ready(None),
3621 }
3622 }
3623}
3624
3625#[derive(Debug)]
3626pub enum StatelessKeyManagerEvent {}
3627
3628impl StatelessKeyManagerEvent {
3629 fn decode(
3631 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3632 ) -> Result<StatelessKeyManagerEvent, fidl::Error> {
3633 let (bytes, _handles) = buf.split_mut();
3634 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3635 debug_assert_eq!(tx_header.tx_id, 0);
3636 match tx_header.ordinal {
3637 _ => Err(fidl::Error::UnknownOrdinal {
3638 ordinal: tx_header.ordinal,
3639 protocol_name:
3640 <StatelessKeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3641 }),
3642 }
3643 }
3644}
3645
3646pub struct StatelessKeyManagerRequestStream {
3648 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3649 is_terminated: bool,
3650}
3651
3652impl std::marker::Unpin for StatelessKeyManagerRequestStream {}
3653
3654impl futures::stream::FusedStream for StatelessKeyManagerRequestStream {
3655 fn is_terminated(&self) -> bool {
3656 self.is_terminated
3657 }
3658}
3659
3660impl fidl::endpoints::RequestStream for StatelessKeyManagerRequestStream {
3661 type Protocol = StatelessKeyManagerMarker;
3662 type ControlHandle = StatelessKeyManagerControlHandle;
3663
3664 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3665 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3666 }
3667
3668 fn control_handle(&self) -> Self::ControlHandle {
3669 StatelessKeyManagerControlHandle { inner: self.inner.clone() }
3670 }
3671
3672 fn into_inner(
3673 self,
3674 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3675 {
3676 (self.inner, self.is_terminated)
3677 }
3678
3679 fn from_inner(
3680 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3681 is_terminated: bool,
3682 ) -> Self {
3683 Self { inner, is_terminated }
3684 }
3685}
3686
3687impl futures::Stream for StatelessKeyManagerRequestStream {
3688 type Item = Result<StatelessKeyManagerRequest, fidl::Error>;
3689
3690 fn poll_next(
3691 mut self: std::pin::Pin<&mut Self>,
3692 cx: &mut std::task::Context<'_>,
3693 ) -> std::task::Poll<Option<Self::Item>> {
3694 let this = &mut *self;
3695 if this.inner.check_shutdown(cx) {
3696 this.is_terminated = true;
3697 return std::task::Poll::Ready(None);
3698 }
3699 if this.is_terminated {
3700 panic!("polled StatelessKeyManagerRequestStream after completion");
3701 }
3702 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3703 |bytes, handles| {
3704 match this.inner.channel().read_etc(cx, bytes, handles) {
3705 std::task::Poll::Ready(Ok(())) => {}
3706 std::task::Poll::Pending => return std::task::Poll::Pending,
3707 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3708 this.is_terminated = true;
3709 return std::task::Poll::Ready(None);
3710 }
3711 std::task::Poll::Ready(Err(e)) => {
3712 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3713 e.into(),
3714 ))));
3715 }
3716 }
3717
3718 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3720
3721 std::task::Poll::Ready(Some(match header.ordinal {
3722 0x685043d9e68d5f86 => {
3723 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3724 let mut req = fidl::new_empty!(StatelessKeyManagerGetHardwareDerivedKeyRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
3725 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<StatelessKeyManagerGetHardwareDerivedKeyRequest>(&header, _body_bytes, handles, &mut req)?;
3726 let control_handle = StatelessKeyManagerControlHandle {
3727 inner: this.inner.clone(),
3728 };
3729 Ok(StatelessKeyManagerRequest::GetHardwareDerivedKey {key_info: req.key_info,
3730
3731 responder: StatelessKeyManagerGetHardwareDerivedKeyResponder {
3732 control_handle: std::mem::ManuallyDrop::new(control_handle),
3733 tx_id: header.tx_id,
3734 },
3735 })
3736 }
3737 _ => Err(fidl::Error::UnknownOrdinal {
3738 ordinal: header.ordinal,
3739 protocol_name: <StatelessKeyManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3740 }),
3741 }))
3742 },
3743 )
3744 }
3745}
3746
3747#[derive(Debug)]
3748pub enum StatelessKeyManagerRequest {
3749 GetHardwareDerivedKey {
3756 key_info: Vec<u8>,
3757 responder: StatelessKeyManagerGetHardwareDerivedKeyResponder,
3758 },
3759}
3760
3761impl StatelessKeyManagerRequest {
3762 #[allow(irrefutable_let_patterns)]
3763 pub fn into_get_hardware_derived_key(
3764 self,
3765 ) -> Option<(Vec<u8>, StatelessKeyManagerGetHardwareDerivedKeyResponder)> {
3766 if let StatelessKeyManagerRequest::GetHardwareDerivedKey { key_info, responder } = self {
3767 Some((key_info, responder))
3768 } else {
3769 None
3770 }
3771 }
3772
3773 pub fn method_name(&self) -> &'static str {
3775 match *self {
3776 StatelessKeyManagerRequest::GetHardwareDerivedKey { .. } => "get_hardware_derived_key",
3777 }
3778 }
3779}
3780
3781#[derive(Debug, Clone)]
3782pub struct StatelessKeyManagerControlHandle {
3783 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3784}
3785
3786impl StatelessKeyManagerControlHandle {
3787 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3788 self.inner.shutdown_with_epitaph(status.into())
3789 }
3790}
3791
3792impl fidl::endpoints::ControlHandle for StatelessKeyManagerControlHandle {
3793 fn shutdown(&self) {
3794 self.inner.shutdown()
3795 }
3796
3797 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3798 self.inner.shutdown_with_epitaph(status)
3799 }
3800
3801 fn is_closed(&self) -> bool {
3802 self.inner.channel().is_closed()
3803 }
3804 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3805 self.inner.channel().on_closed()
3806 }
3807
3808 #[cfg(target_os = "fuchsia")]
3809 fn signal_peer(
3810 &self,
3811 clear_mask: zx::Signals,
3812 set_mask: zx::Signals,
3813 ) -> Result<(), zx_status::Status> {
3814 use fidl::Peered;
3815 self.inner.channel().signal_peer(clear_mask, set_mask)
3816 }
3817}
3818
3819impl StatelessKeyManagerControlHandle {}
3820
3821#[must_use = "FIDL methods require a response to be sent"]
3822#[derive(Debug)]
3823pub struct StatelessKeyManagerGetHardwareDerivedKeyResponder {
3824 control_handle: std::mem::ManuallyDrop<StatelessKeyManagerControlHandle>,
3825 tx_id: u32,
3826}
3827
3828impl std::ops::Drop for StatelessKeyManagerGetHardwareDerivedKeyResponder {
3832 fn drop(&mut self) {
3833 self.control_handle.shutdown();
3834 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3836 }
3837}
3838
3839impl fidl::endpoints::Responder for StatelessKeyManagerGetHardwareDerivedKeyResponder {
3840 type ControlHandle = StatelessKeyManagerControlHandle;
3841
3842 fn control_handle(&self) -> &StatelessKeyManagerControlHandle {
3843 &self.control_handle
3844 }
3845
3846 fn drop_without_shutdown(mut self) {
3847 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3849 std::mem::forget(self);
3851 }
3852}
3853
3854impl StatelessKeyManagerGetHardwareDerivedKeyResponder {
3855 pub fn send(self, mut result: Result<&[u8], Error>) -> Result<(), fidl::Error> {
3859 let _result = self.send_raw(result);
3860 if _result.is_err() {
3861 self.control_handle.shutdown();
3862 }
3863 self.drop_without_shutdown();
3864 _result
3865 }
3866
3867 pub fn send_no_shutdown_on_err(
3869 self,
3870 mut result: Result<&[u8], Error>,
3871 ) -> Result<(), fidl::Error> {
3872 let _result = self.send_raw(result);
3873 self.drop_without_shutdown();
3874 _result
3875 }
3876
3877 fn send_raw(&self, mut result: Result<&[u8], Error>) -> Result<(), fidl::Error> {
3878 self.control_handle.inner.send::<fidl::encoding::ResultType<
3879 StatelessKeyManagerGetHardwareDerivedKeyResponse,
3880 Error,
3881 >>(
3882 result.map(|derived_key| (derived_key,)),
3883 self.tx_id,
3884 0x685043d9e68d5f86,
3885 fidl::encoding::DynamicFlags::empty(),
3886 )
3887 }
3888}
3889
3890mod internal {
3891 use super::*;
3892
3893 impl fidl::encoding::ResourceTypeMarker for AsymmetricPrivateKeySignRequest {
3894 type Borrowed<'a> = &'a mut Self;
3895 fn take_or_borrow<'a>(
3896 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3897 ) -> Self::Borrowed<'a> {
3898 value
3899 }
3900 }
3901
3902 unsafe impl fidl::encoding::TypeMarker for AsymmetricPrivateKeySignRequest {
3903 type Owned = Self;
3904
3905 #[inline(always)]
3906 fn inline_align(_context: fidl::encoding::Context) -> usize {
3907 8
3908 }
3909
3910 #[inline(always)]
3911 fn inline_size(_context: fidl::encoding::Context) -> usize {
3912 16
3913 }
3914 }
3915
3916 unsafe impl
3917 fidl::encoding::Encode<
3918 AsymmetricPrivateKeySignRequest,
3919 fidl::encoding::DefaultFuchsiaResourceDialect,
3920 > for &mut AsymmetricPrivateKeySignRequest
3921 {
3922 #[inline]
3923 unsafe fn encode(
3924 self,
3925 encoder: &mut fidl::encoding::Encoder<
3926 '_,
3927 fidl::encoding::DefaultFuchsiaResourceDialect,
3928 >,
3929 offset: usize,
3930 _depth: fidl::encoding::Depth,
3931 ) -> fidl::Result<()> {
3932 encoder.debug_check_bounds::<AsymmetricPrivateKeySignRequest>(offset);
3933 fidl::encoding::Encode::<
3935 AsymmetricPrivateKeySignRequest,
3936 fidl::encoding::DefaultFuchsiaResourceDialect,
3937 >::encode(
3938 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3939 &mut self.data,
3940 ),),
3941 encoder,
3942 offset,
3943 _depth,
3944 )
3945 }
3946 }
3947 unsafe impl<
3948 T0: fidl::encoding::Encode<
3949 fidl_fuchsia_mem::Buffer,
3950 fidl::encoding::DefaultFuchsiaResourceDialect,
3951 >,
3952 >
3953 fidl::encoding::Encode<
3954 AsymmetricPrivateKeySignRequest,
3955 fidl::encoding::DefaultFuchsiaResourceDialect,
3956 > for (T0,)
3957 {
3958 #[inline]
3959 unsafe fn encode(
3960 self,
3961 encoder: &mut fidl::encoding::Encoder<
3962 '_,
3963 fidl::encoding::DefaultFuchsiaResourceDialect,
3964 >,
3965 offset: usize,
3966 depth: fidl::encoding::Depth,
3967 ) -> fidl::Result<()> {
3968 encoder.debug_check_bounds::<AsymmetricPrivateKeySignRequest>(offset);
3969 self.0.encode(encoder, offset + 0, depth)?;
3973 Ok(())
3974 }
3975 }
3976
3977 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3978 for AsymmetricPrivateKeySignRequest
3979 {
3980 #[inline(always)]
3981 fn new_empty() -> Self {
3982 Self {
3983 data: fidl::new_empty!(
3984 fidl_fuchsia_mem::Buffer,
3985 fidl::encoding::DefaultFuchsiaResourceDialect
3986 ),
3987 }
3988 }
3989
3990 #[inline]
3991 unsafe fn decode(
3992 &mut self,
3993 decoder: &mut fidl::encoding::Decoder<
3994 '_,
3995 fidl::encoding::DefaultFuchsiaResourceDialect,
3996 >,
3997 offset: usize,
3998 _depth: fidl::encoding::Depth,
3999 ) -> fidl::Result<()> {
4000 decoder.debug_check_bounds::<Self>(offset);
4001 fidl::decode!(
4003 fidl_fuchsia_mem::Buffer,
4004 fidl::encoding::DefaultFuchsiaResourceDialect,
4005 &mut self.data,
4006 decoder,
4007 offset + 0,
4008 _depth
4009 )?;
4010 Ok(())
4011 }
4012 }
4013
4014 impl fidl::encoding::ResourceTypeMarker for KeyManagerGenerateAsymmetricKeyRequest {
4015 type Borrowed<'a> = &'a mut Self;
4016 fn take_or_borrow<'a>(
4017 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4018 ) -> Self::Borrowed<'a> {
4019 value
4020 }
4021 }
4022
4023 unsafe impl fidl::encoding::TypeMarker for KeyManagerGenerateAsymmetricKeyRequest {
4024 type Owned = Self;
4025
4026 #[inline(always)]
4027 fn inline_align(_context: fidl::encoding::Context) -> usize {
4028 8
4029 }
4030
4031 #[inline(always)]
4032 fn inline_size(_context: fidl::encoding::Context) -> usize {
4033 24
4034 }
4035 }
4036
4037 unsafe impl
4038 fidl::encoding::Encode<
4039 KeyManagerGenerateAsymmetricKeyRequest,
4040 fidl::encoding::DefaultFuchsiaResourceDialect,
4041 > for &mut KeyManagerGenerateAsymmetricKeyRequest
4042 {
4043 #[inline]
4044 unsafe fn encode(
4045 self,
4046 encoder: &mut fidl::encoding::Encoder<
4047 '_,
4048 fidl::encoding::DefaultFuchsiaResourceDialect,
4049 >,
4050 offset: usize,
4051 _depth: fidl::encoding::Depth,
4052 ) -> fidl::Result<()> {
4053 encoder.debug_check_bounds::<KeyManagerGenerateAsymmetricKeyRequest>(offset);
4054 fidl::encoding::Encode::<
4056 KeyManagerGenerateAsymmetricKeyRequest,
4057 fidl::encoding::DefaultFuchsiaResourceDialect,
4058 >::encode(
4059 (
4060 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(
4061 &self.key_name,
4062 ),
4063 <fidl::encoding::Endpoint<
4064 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4065 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4066 &mut self.key
4067 ),
4068 ),
4069 encoder,
4070 offset,
4071 _depth,
4072 )
4073 }
4074 }
4075 unsafe impl<
4076 T0: fidl::encoding::Encode<
4077 fidl::encoding::BoundedString<32>,
4078 fidl::encoding::DefaultFuchsiaResourceDialect,
4079 >,
4080 T1: fidl::encoding::Encode<
4081 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4082 fidl::encoding::DefaultFuchsiaResourceDialect,
4083 >,
4084 >
4085 fidl::encoding::Encode<
4086 KeyManagerGenerateAsymmetricKeyRequest,
4087 fidl::encoding::DefaultFuchsiaResourceDialect,
4088 > for (T0, T1)
4089 {
4090 #[inline]
4091 unsafe fn encode(
4092 self,
4093 encoder: &mut fidl::encoding::Encoder<
4094 '_,
4095 fidl::encoding::DefaultFuchsiaResourceDialect,
4096 >,
4097 offset: usize,
4098 depth: fidl::encoding::Depth,
4099 ) -> fidl::Result<()> {
4100 encoder.debug_check_bounds::<KeyManagerGenerateAsymmetricKeyRequest>(offset);
4101 unsafe {
4104 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4105 (ptr as *mut u64).write_unaligned(0);
4106 }
4107 self.0.encode(encoder, offset + 0, depth)?;
4109 self.1.encode(encoder, offset + 16, depth)?;
4110 Ok(())
4111 }
4112 }
4113
4114 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4115 for KeyManagerGenerateAsymmetricKeyRequest
4116 {
4117 #[inline(always)]
4118 fn new_empty() -> Self {
4119 Self {
4120 key_name: fidl::new_empty!(
4121 fidl::encoding::BoundedString<32>,
4122 fidl::encoding::DefaultFuchsiaResourceDialect
4123 ),
4124 key: fidl::new_empty!(
4125 fidl::encoding::Endpoint<
4126 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4127 >,
4128 fidl::encoding::DefaultFuchsiaResourceDialect
4129 ),
4130 }
4131 }
4132
4133 #[inline]
4134 unsafe fn decode(
4135 &mut self,
4136 decoder: &mut fidl::encoding::Decoder<
4137 '_,
4138 fidl::encoding::DefaultFuchsiaResourceDialect,
4139 >,
4140 offset: usize,
4141 _depth: fidl::encoding::Depth,
4142 ) -> fidl::Result<()> {
4143 decoder.debug_check_bounds::<Self>(offset);
4144 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4146 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4147 let mask = 0xffffffff00000000u64;
4148 let maskedval = padval & mask;
4149 if maskedval != 0 {
4150 return Err(fidl::Error::NonZeroPadding {
4151 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4152 });
4153 }
4154 fidl::decode!(
4155 fidl::encoding::BoundedString<32>,
4156 fidl::encoding::DefaultFuchsiaResourceDialect,
4157 &mut self.key_name,
4158 decoder,
4159 offset + 0,
4160 _depth
4161 )?;
4162 fidl::decode!(
4163 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4164 fidl::encoding::DefaultFuchsiaResourceDialect,
4165 &mut self.key,
4166 decoder,
4167 offset + 16,
4168 _depth
4169 )?;
4170 Ok(())
4171 }
4172 }
4173
4174 impl fidl::encoding::ResourceTypeMarker for KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest {
4175 type Borrowed<'a> = &'a mut Self;
4176 fn take_or_borrow<'a>(
4177 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4178 ) -> Self::Borrowed<'a> {
4179 value
4180 }
4181 }
4182
4183 unsafe impl fidl::encoding::TypeMarker for KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest {
4184 type Owned = Self;
4185
4186 #[inline(always)]
4187 fn inline_align(_context: fidl::encoding::Context) -> usize {
4188 8
4189 }
4190
4191 #[inline(always)]
4192 fn inline_size(_context: fidl::encoding::Context) -> usize {
4193 24
4194 }
4195 }
4196
4197 unsafe impl
4198 fidl::encoding::Encode<
4199 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
4200 fidl::encoding::DefaultFuchsiaResourceDialect,
4201 > for &mut KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest
4202 {
4203 #[inline]
4204 unsafe fn encode(
4205 self,
4206 encoder: &mut fidl::encoding::Encoder<
4207 '_,
4208 fidl::encoding::DefaultFuchsiaResourceDialect,
4209 >,
4210 offset: usize,
4211 _depth: fidl::encoding::Depth,
4212 ) -> fidl::Result<()> {
4213 encoder
4214 .debug_check_bounds::<KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest>(offset);
4215 fidl::encoding::Encode::<
4217 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
4218 fidl::encoding::DefaultFuchsiaResourceDialect,
4219 >::encode(
4220 (
4221 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(
4222 &self.key_name,
4223 ),
4224 <AsymmetricKeyAlgorithm as fidl::encoding::ValueTypeMarker>::borrow(
4225 &self.key_algorithm,
4226 ),
4227 <fidl::encoding::Endpoint<
4228 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4229 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4230 &mut self.key
4231 ),
4232 ),
4233 encoder,
4234 offset,
4235 _depth,
4236 )
4237 }
4238 }
4239 unsafe impl<
4240 T0: fidl::encoding::Encode<
4241 fidl::encoding::BoundedString<32>,
4242 fidl::encoding::DefaultFuchsiaResourceDialect,
4243 >,
4244 T1: fidl::encoding::Encode<
4245 AsymmetricKeyAlgorithm,
4246 fidl::encoding::DefaultFuchsiaResourceDialect,
4247 >,
4248 T2: fidl::encoding::Encode<
4249 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4250 fidl::encoding::DefaultFuchsiaResourceDialect,
4251 >,
4252 >
4253 fidl::encoding::Encode<
4254 KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest,
4255 fidl::encoding::DefaultFuchsiaResourceDialect,
4256 > for (T0, T1, T2)
4257 {
4258 #[inline]
4259 unsafe fn encode(
4260 self,
4261 encoder: &mut fidl::encoding::Encoder<
4262 '_,
4263 fidl::encoding::DefaultFuchsiaResourceDialect,
4264 >,
4265 offset: usize,
4266 depth: fidl::encoding::Depth,
4267 ) -> fidl::Result<()> {
4268 encoder
4269 .debug_check_bounds::<KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest>(offset);
4270 self.0.encode(encoder, offset + 0, depth)?;
4274 self.1.encode(encoder, offset + 16, depth)?;
4275 self.2.encode(encoder, offset + 20, depth)?;
4276 Ok(())
4277 }
4278 }
4279
4280 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4281 for KeyManagerGenerateAsymmetricKeyWithAlgorithmRequest
4282 {
4283 #[inline(always)]
4284 fn new_empty() -> Self {
4285 Self {
4286 key_name: fidl::new_empty!(
4287 fidl::encoding::BoundedString<32>,
4288 fidl::encoding::DefaultFuchsiaResourceDialect
4289 ),
4290 key_algorithm: fidl::new_empty!(
4291 AsymmetricKeyAlgorithm,
4292 fidl::encoding::DefaultFuchsiaResourceDialect
4293 ),
4294 key: fidl::new_empty!(
4295 fidl::encoding::Endpoint<
4296 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4297 >,
4298 fidl::encoding::DefaultFuchsiaResourceDialect
4299 ),
4300 }
4301 }
4302
4303 #[inline]
4304 unsafe fn decode(
4305 &mut self,
4306 decoder: &mut fidl::encoding::Decoder<
4307 '_,
4308 fidl::encoding::DefaultFuchsiaResourceDialect,
4309 >,
4310 offset: usize,
4311 _depth: fidl::encoding::Depth,
4312 ) -> fidl::Result<()> {
4313 decoder.debug_check_bounds::<Self>(offset);
4314 fidl::decode!(
4316 fidl::encoding::BoundedString<32>,
4317 fidl::encoding::DefaultFuchsiaResourceDialect,
4318 &mut self.key_name,
4319 decoder,
4320 offset + 0,
4321 _depth
4322 )?;
4323 fidl::decode!(
4324 AsymmetricKeyAlgorithm,
4325 fidl::encoding::DefaultFuchsiaResourceDialect,
4326 &mut self.key_algorithm,
4327 decoder,
4328 offset + 16,
4329 _depth
4330 )?;
4331 fidl::decode!(
4332 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4333 fidl::encoding::DefaultFuchsiaResourceDialect,
4334 &mut self.key,
4335 decoder,
4336 offset + 20,
4337 _depth
4338 )?;
4339 Ok(())
4340 }
4341 }
4342
4343 impl fidl::encoding::ResourceTypeMarker for KeyManagerGetAsymmetricPrivateKeyRequest {
4344 type Borrowed<'a> = &'a mut Self;
4345 fn take_or_borrow<'a>(
4346 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4347 ) -> Self::Borrowed<'a> {
4348 value
4349 }
4350 }
4351
4352 unsafe impl fidl::encoding::TypeMarker for KeyManagerGetAsymmetricPrivateKeyRequest {
4353 type Owned = Self;
4354
4355 #[inline(always)]
4356 fn inline_align(_context: fidl::encoding::Context) -> usize {
4357 8
4358 }
4359
4360 #[inline(always)]
4361 fn inline_size(_context: fidl::encoding::Context) -> usize {
4362 24
4363 }
4364 }
4365
4366 unsafe impl
4367 fidl::encoding::Encode<
4368 KeyManagerGetAsymmetricPrivateKeyRequest,
4369 fidl::encoding::DefaultFuchsiaResourceDialect,
4370 > for &mut KeyManagerGetAsymmetricPrivateKeyRequest
4371 {
4372 #[inline]
4373 unsafe fn encode(
4374 self,
4375 encoder: &mut fidl::encoding::Encoder<
4376 '_,
4377 fidl::encoding::DefaultFuchsiaResourceDialect,
4378 >,
4379 offset: usize,
4380 _depth: fidl::encoding::Depth,
4381 ) -> fidl::Result<()> {
4382 encoder.debug_check_bounds::<KeyManagerGetAsymmetricPrivateKeyRequest>(offset);
4383 fidl::encoding::Encode::<
4385 KeyManagerGetAsymmetricPrivateKeyRequest,
4386 fidl::encoding::DefaultFuchsiaResourceDialect,
4387 >::encode(
4388 (
4389 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(
4390 &self.key_name,
4391 ),
4392 <fidl::encoding::Endpoint<
4393 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4394 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4395 &mut self.key
4396 ),
4397 ),
4398 encoder,
4399 offset,
4400 _depth,
4401 )
4402 }
4403 }
4404 unsafe impl<
4405 T0: fidl::encoding::Encode<
4406 fidl::encoding::BoundedString<32>,
4407 fidl::encoding::DefaultFuchsiaResourceDialect,
4408 >,
4409 T1: fidl::encoding::Encode<
4410 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4411 fidl::encoding::DefaultFuchsiaResourceDialect,
4412 >,
4413 >
4414 fidl::encoding::Encode<
4415 KeyManagerGetAsymmetricPrivateKeyRequest,
4416 fidl::encoding::DefaultFuchsiaResourceDialect,
4417 > for (T0, T1)
4418 {
4419 #[inline]
4420 unsafe fn encode(
4421 self,
4422 encoder: &mut fidl::encoding::Encoder<
4423 '_,
4424 fidl::encoding::DefaultFuchsiaResourceDialect,
4425 >,
4426 offset: usize,
4427 depth: fidl::encoding::Depth,
4428 ) -> fidl::Result<()> {
4429 encoder.debug_check_bounds::<KeyManagerGetAsymmetricPrivateKeyRequest>(offset);
4430 unsafe {
4433 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4434 (ptr as *mut u64).write_unaligned(0);
4435 }
4436 self.0.encode(encoder, offset + 0, depth)?;
4438 self.1.encode(encoder, offset + 16, depth)?;
4439 Ok(())
4440 }
4441 }
4442
4443 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4444 for KeyManagerGetAsymmetricPrivateKeyRequest
4445 {
4446 #[inline(always)]
4447 fn new_empty() -> Self {
4448 Self {
4449 key_name: fidl::new_empty!(
4450 fidl::encoding::BoundedString<32>,
4451 fidl::encoding::DefaultFuchsiaResourceDialect
4452 ),
4453 key: fidl::new_empty!(
4454 fidl::encoding::Endpoint<
4455 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4456 >,
4457 fidl::encoding::DefaultFuchsiaResourceDialect
4458 ),
4459 }
4460 }
4461
4462 #[inline]
4463 unsafe fn decode(
4464 &mut self,
4465 decoder: &mut fidl::encoding::Decoder<
4466 '_,
4467 fidl::encoding::DefaultFuchsiaResourceDialect,
4468 >,
4469 offset: usize,
4470 _depth: fidl::encoding::Depth,
4471 ) -> fidl::Result<()> {
4472 decoder.debug_check_bounds::<Self>(offset);
4473 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4475 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4476 let mask = 0xffffffff00000000u64;
4477 let maskedval = padval & mask;
4478 if maskedval != 0 {
4479 return Err(fidl::Error::NonZeroPadding {
4480 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4481 });
4482 }
4483 fidl::decode!(
4484 fidl::encoding::BoundedString<32>,
4485 fidl::encoding::DefaultFuchsiaResourceDialect,
4486 &mut self.key_name,
4487 decoder,
4488 offset + 0,
4489 _depth
4490 )?;
4491 fidl::decode!(
4492 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4493 fidl::encoding::DefaultFuchsiaResourceDialect,
4494 &mut self.key,
4495 decoder,
4496 offset + 16,
4497 _depth
4498 )?;
4499 Ok(())
4500 }
4501 }
4502
4503 impl fidl::encoding::ResourceTypeMarker for KeyManagerImportAsymmetricPrivateKeyRequest {
4504 type Borrowed<'a> = &'a mut Self;
4505 fn take_or_borrow<'a>(
4506 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4507 ) -> Self::Borrowed<'a> {
4508 value
4509 }
4510 }
4511
4512 unsafe impl fidl::encoding::TypeMarker for KeyManagerImportAsymmetricPrivateKeyRequest {
4513 type Owned = Self;
4514
4515 #[inline(always)]
4516 fn inline_align(_context: fidl::encoding::Context) -> usize {
4517 8
4518 }
4519
4520 #[inline(always)]
4521 fn inline_size(_context: fidl::encoding::Context) -> usize {
4522 40
4523 }
4524 }
4525
4526 unsafe impl
4527 fidl::encoding::Encode<
4528 KeyManagerImportAsymmetricPrivateKeyRequest,
4529 fidl::encoding::DefaultFuchsiaResourceDialect,
4530 > for &mut KeyManagerImportAsymmetricPrivateKeyRequest
4531 {
4532 #[inline]
4533 unsafe fn encode(
4534 self,
4535 encoder: &mut fidl::encoding::Encoder<
4536 '_,
4537 fidl::encoding::DefaultFuchsiaResourceDialect,
4538 >,
4539 offset: usize,
4540 _depth: fidl::encoding::Depth,
4541 ) -> fidl::Result<()> {
4542 encoder.debug_check_bounds::<KeyManagerImportAsymmetricPrivateKeyRequest>(offset);
4543 fidl::encoding::Encode::<KeyManagerImportAsymmetricPrivateKeyRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4545 (
4546 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4547 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(&self.key_name),
4548 <AsymmetricKeyAlgorithm as fidl::encoding::ValueTypeMarker>::borrow(&self.key_algorithm),
4549 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.key),
4550 ),
4551 encoder, offset, _depth
4552 )
4553 }
4554 }
4555 unsafe impl<
4556 T0: fidl::encoding::Encode<
4557 fidl::encoding::UnboundedVector<u8>,
4558 fidl::encoding::DefaultFuchsiaResourceDialect,
4559 >,
4560 T1: fidl::encoding::Encode<
4561 fidl::encoding::BoundedString<32>,
4562 fidl::encoding::DefaultFuchsiaResourceDialect,
4563 >,
4564 T2: fidl::encoding::Encode<
4565 AsymmetricKeyAlgorithm,
4566 fidl::encoding::DefaultFuchsiaResourceDialect,
4567 >,
4568 T3: fidl::encoding::Encode<
4569 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4570 fidl::encoding::DefaultFuchsiaResourceDialect,
4571 >,
4572 >
4573 fidl::encoding::Encode<
4574 KeyManagerImportAsymmetricPrivateKeyRequest,
4575 fidl::encoding::DefaultFuchsiaResourceDialect,
4576 > for (T0, T1, T2, T3)
4577 {
4578 #[inline]
4579 unsafe fn encode(
4580 self,
4581 encoder: &mut fidl::encoding::Encoder<
4582 '_,
4583 fidl::encoding::DefaultFuchsiaResourceDialect,
4584 >,
4585 offset: usize,
4586 depth: fidl::encoding::Depth,
4587 ) -> fidl::Result<()> {
4588 encoder.debug_check_bounds::<KeyManagerImportAsymmetricPrivateKeyRequest>(offset);
4589 self.0.encode(encoder, offset + 0, depth)?;
4593 self.1.encode(encoder, offset + 16, depth)?;
4594 self.2.encode(encoder, offset + 32, depth)?;
4595 self.3.encode(encoder, offset + 36, depth)?;
4596 Ok(())
4597 }
4598 }
4599
4600 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4601 for KeyManagerImportAsymmetricPrivateKeyRequest
4602 {
4603 #[inline(always)]
4604 fn new_empty() -> Self {
4605 Self {
4606 data: fidl::new_empty!(
4607 fidl::encoding::UnboundedVector<u8>,
4608 fidl::encoding::DefaultFuchsiaResourceDialect
4609 ),
4610 key_name: fidl::new_empty!(
4611 fidl::encoding::BoundedString<32>,
4612 fidl::encoding::DefaultFuchsiaResourceDialect
4613 ),
4614 key_algorithm: fidl::new_empty!(
4615 AsymmetricKeyAlgorithm,
4616 fidl::encoding::DefaultFuchsiaResourceDialect
4617 ),
4618 key: fidl::new_empty!(
4619 fidl::encoding::Endpoint<
4620 fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>,
4621 >,
4622 fidl::encoding::DefaultFuchsiaResourceDialect
4623 ),
4624 }
4625 }
4626
4627 #[inline]
4628 unsafe fn decode(
4629 &mut self,
4630 decoder: &mut fidl::encoding::Decoder<
4631 '_,
4632 fidl::encoding::DefaultFuchsiaResourceDialect,
4633 >,
4634 offset: usize,
4635 _depth: fidl::encoding::Depth,
4636 ) -> fidl::Result<()> {
4637 decoder.debug_check_bounds::<Self>(offset);
4638 fidl::decode!(
4640 fidl::encoding::UnboundedVector<u8>,
4641 fidl::encoding::DefaultFuchsiaResourceDialect,
4642 &mut self.data,
4643 decoder,
4644 offset + 0,
4645 _depth
4646 )?;
4647 fidl::decode!(
4648 fidl::encoding::BoundedString<32>,
4649 fidl::encoding::DefaultFuchsiaResourceDialect,
4650 &mut self.key_name,
4651 decoder,
4652 offset + 16,
4653 _depth
4654 )?;
4655 fidl::decode!(
4656 AsymmetricKeyAlgorithm,
4657 fidl::encoding::DefaultFuchsiaResourceDialect,
4658 &mut self.key_algorithm,
4659 decoder,
4660 offset + 32,
4661 _depth
4662 )?;
4663 fidl::decode!(
4664 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<AsymmetricPrivateKeyMarker>>,
4665 fidl::encoding::DefaultFuchsiaResourceDialect,
4666 &mut self.key,
4667 decoder,
4668 offset + 36,
4669 _depth
4670 )?;
4671 Ok(())
4672 }
4673 }
4674
4675 impl fidl::encoding::ResourceTypeMarker for KeyManagerSealDataRequest {
4676 type Borrowed<'a> = &'a mut Self;
4677 fn take_or_borrow<'a>(
4678 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4679 ) -> Self::Borrowed<'a> {
4680 value
4681 }
4682 }
4683
4684 unsafe impl fidl::encoding::TypeMarker for KeyManagerSealDataRequest {
4685 type Owned = Self;
4686
4687 #[inline(always)]
4688 fn inline_align(_context: fidl::encoding::Context) -> usize {
4689 8
4690 }
4691
4692 #[inline(always)]
4693 fn inline_size(_context: fidl::encoding::Context) -> usize {
4694 16
4695 }
4696 }
4697
4698 unsafe impl
4699 fidl::encoding::Encode<
4700 KeyManagerSealDataRequest,
4701 fidl::encoding::DefaultFuchsiaResourceDialect,
4702 > for &mut KeyManagerSealDataRequest
4703 {
4704 #[inline]
4705 unsafe fn encode(
4706 self,
4707 encoder: &mut fidl::encoding::Encoder<
4708 '_,
4709 fidl::encoding::DefaultFuchsiaResourceDialect,
4710 >,
4711 offset: usize,
4712 _depth: fidl::encoding::Depth,
4713 ) -> fidl::Result<()> {
4714 encoder.debug_check_bounds::<KeyManagerSealDataRequest>(offset);
4715 fidl::encoding::Encode::<
4717 KeyManagerSealDataRequest,
4718 fidl::encoding::DefaultFuchsiaResourceDialect,
4719 >::encode(
4720 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4721 &mut self.plain_text,
4722 ),),
4723 encoder,
4724 offset,
4725 _depth,
4726 )
4727 }
4728 }
4729 unsafe impl<
4730 T0: fidl::encoding::Encode<
4731 fidl_fuchsia_mem::Buffer,
4732 fidl::encoding::DefaultFuchsiaResourceDialect,
4733 >,
4734 >
4735 fidl::encoding::Encode<
4736 KeyManagerSealDataRequest,
4737 fidl::encoding::DefaultFuchsiaResourceDialect,
4738 > for (T0,)
4739 {
4740 #[inline]
4741 unsafe fn encode(
4742 self,
4743 encoder: &mut fidl::encoding::Encoder<
4744 '_,
4745 fidl::encoding::DefaultFuchsiaResourceDialect,
4746 >,
4747 offset: usize,
4748 depth: fidl::encoding::Depth,
4749 ) -> fidl::Result<()> {
4750 encoder.debug_check_bounds::<KeyManagerSealDataRequest>(offset);
4751 self.0.encode(encoder, offset + 0, depth)?;
4755 Ok(())
4756 }
4757 }
4758
4759 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4760 for KeyManagerSealDataRequest
4761 {
4762 #[inline(always)]
4763 fn new_empty() -> Self {
4764 Self {
4765 plain_text: fidl::new_empty!(
4766 fidl_fuchsia_mem::Buffer,
4767 fidl::encoding::DefaultFuchsiaResourceDialect
4768 ),
4769 }
4770 }
4771
4772 #[inline]
4773 unsafe fn decode(
4774 &mut self,
4775 decoder: &mut fidl::encoding::Decoder<
4776 '_,
4777 fidl::encoding::DefaultFuchsiaResourceDialect,
4778 >,
4779 offset: usize,
4780 _depth: fidl::encoding::Depth,
4781 ) -> fidl::Result<()> {
4782 decoder.debug_check_bounds::<Self>(offset);
4783 fidl::decode!(
4785 fidl_fuchsia_mem::Buffer,
4786 fidl::encoding::DefaultFuchsiaResourceDialect,
4787 &mut self.plain_text,
4788 decoder,
4789 offset + 0,
4790 _depth
4791 )?;
4792 Ok(())
4793 }
4794 }
4795
4796 impl fidl::encoding::ResourceTypeMarker for KeyManagerUnsealDataRequest {
4797 type Borrowed<'a> = &'a mut Self;
4798 fn take_or_borrow<'a>(
4799 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4800 ) -> Self::Borrowed<'a> {
4801 value
4802 }
4803 }
4804
4805 unsafe impl fidl::encoding::TypeMarker for KeyManagerUnsealDataRequest {
4806 type Owned = Self;
4807
4808 #[inline(always)]
4809 fn inline_align(_context: fidl::encoding::Context) -> usize {
4810 8
4811 }
4812
4813 #[inline(always)]
4814 fn inline_size(_context: fidl::encoding::Context) -> usize {
4815 16
4816 }
4817 }
4818
4819 unsafe impl
4820 fidl::encoding::Encode<
4821 KeyManagerUnsealDataRequest,
4822 fidl::encoding::DefaultFuchsiaResourceDialect,
4823 > for &mut KeyManagerUnsealDataRequest
4824 {
4825 #[inline]
4826 unsafe fn encode(
4827 self,
4828 encoder: &mut fidl::encoding::Encoder<
4829 '_,
4830 fidl::encoding::DefaultFuchsiaResourceDialect,
4831 >,
4832 offset: usize,
4833 _depth: fidl::encoding::Depth,
4834 ) -> fidl::Result<()> {
4835 encoder.debug_check_bounds::<KeyManagerUnsealDataRequest>(offset);
4836 fidl::encoding::Encode::<
4838 KeyManagerUnsealDataRequest,
4839 fidl::encoding::DefaultFuchsiaResourceDialect,
4840 >::encode(
4841 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4842 &mut self.cipher_text,
4843 ),),
4844 encoder,
4845 offset,
4846 _depth,
4847 )
4848 }
4849 }
4850 unsafe impl<
4851 T0: fidl::encoding::Encode<
4852 fidl_fuchsia_mem::Buffer,
4853 fidl::encoding::DefaultFuchsiaResourceDialect,
4854 >,
4855 >
4856 fidl::encoding::Encode<
4857 KeyManagerUnsealDataRequest,
4858 fidl::encoding::DefaultFuchsiaResourceDialect,
4859 > for (T0,)
4860 {
4861 #[inline]
4862 unsafe fn encode(
4863 self,
4864 encoder: &mut fidl::encoding::Encoder<
4865 '_,
4866 fidl::encoding::DefaultFuchsiaResourceDialect,
4867 >,
4868 offset: usize,
4869 depth: fidl::encoding::Depth,
4870 ) -> fidl::Result<()> {
4871 encoder.debug_check_bounds::<KeyManagerUnsealDataRequest>(offset);
4872 self.0.encode(encoder, offset + 0, depth)?;
4876 Ok(())
4877 }
4878 }
4879
4880 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4881 for KeyManagerUnsealDataRequest
4882 {
4883 #[inline(always)]
4884 fn new_empty() -> Self {
4885 Self {
4886 cipher_text: fidl::new_empty!(
4887 fidl_fuchsia_mem::Buffer,
4888 fidl::encoding::DefaultFuchsiaResourceDialect
4889 ),
4890 }
4891 }
4892
4893 #[inline]
4894 unsafe fn decode(
4895 &mut self,
4896 decoder: &mut fidl::encoding::Decoder<
4897 '_,
4898 fidl::encoding::DefaultFuchsiaResourceDialect,
4899 >,
4900 offset: usize,
4901 _depth: fidl::encoding::Depth,
4902 ) -> fidl::Result<()> {
4903 decoder.debug_check_bounds::<Self>(offset);
4904 fidl::decode!(
4906 fidl_fuchsia_mem::Buffer,
4907 fidl::encoding::DefaultFuchsiaResourceDialect,
4908 &mut self.cipher_text,
4909 decoder,
4910 offset + 0,
4911 _depth
4912 )?;
4913 Ok(())
4914 }
4915 }
4916
4917 impl fidl::encoding::ResourceTypeMarker for KeyManagerSealDataResponse {
4918 type Borrowed<'a> = &'a mut Self;
4919 fn take_or_borrow<'a>(
4920 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4921 ) -> Self::Borrowed<'a> {
4922 value
4923 }
4924 }
4925
4926 unsafe impl fidl::encoding::TypeMarker for KeyManagerSealDataResponse {
4927 type Owned = Self;
4928
4929 #[inline(always)]
4930 fn inline_align(_context: fidl::encoding::Context) -> usize {
4931 8
4932 }
4933
4934 #[inline(always)]
4935 fn inline_size(_context: fidl::encoding::Context) -> usize {
4936 16
4937 }
4938 }
4939
4940 unsafe impl
4941 fidl::encoding::Encode<
4942 KeyManagerSealDataResponse,
4943 fidl::encoding::DefaultFuchsiaResourceDialect,
4944 > for &mut KeyManagerSealDataResponse
4945 {
4946 #[inline]
4947 unsafe fn encode(
4948 self,
4949 encoder: &mut fidl::encoding::Encoder<
4950 '_,
4951 fidl::encoding::DefaultFuchsiaResourceDialect,
4952 >,
4953 offset: usize,
4954 _depth: fidl::encoding::Depth,
4955 ) -> fidl::Result<()> {
4956 encoder.debug_check_bounds::<KeyManagerSealDataResponse>(offset);
4957 fidl::encoding::Encode::<
4959 KeyManagerSealDataResponse,
4960 fidl::encoding::DefaultFuchsiaResourceDialect,
4961 >::encode(
4962 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4963 &mut self.cipher_text,
4964 ),),
4965 encoder,
4966 offset,
4967 _depth,
4968 )
4969 }
4970 }
4971 unsafe impl<
4972 T0: fidl::encoding::Encode<
4973 fidl_fuchsia_mem::Buffer,
4974 fidl::encoding::DefaultFuchsiaResourceDialect,
4975 >,
4976 >
4977 fidl::encoding::Encode<
4978 KeyManagerSealDataResponse,
4979 fidl::encoding::DefaultFuchsiaResourceDialect,
4980 > for (T0,)
4981 {
4982 #[inline]
4983 unsafe fn encode(
4984 self,
4985 encoder: &mut fidl::encoding::Encoder<
4986 '_,
4987 fidl::encoding::DefaultFuchsiaResourceDialect,
4988 >,
4989 offset: usize,
4990 depth: fidl::encoding::Depth,
4991 ) -> fidl::Result<()> {
4992 encoder.debug_check_bounds::<KeyManagerSealDataResponse>(offset);
4993 self.0.encode(encoder, offset + 0, depth)?;
4997 Ok(())
4998 }
4999 }
5000
5001 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5002 for KeyManagerSealDataResponse
5003 {
5004 #[inline(always)]
5005 fn new_empty() -> Self {
5006 Self {
5007 cipher_text: fidl::new_empty!(
5008 fidl_fuchsia_mem::Buffer,
5009 fidl::encoding::DefaultFuchsiaResourceDialect
5010 ),
5011 }
5012 }
5013
5014 #[inline]
5015 unsafe fn decode(
5016 &mut self,
5017 decoder: &mut fidl::encoding::Decoder<
5018 '_,
5019 fidl::encoding::DefaultFuchsiaResourceDialect,
5020 >,
5021 offset: usize,
5022 _depth: fidl::encoding::Depth,
5023 ) -> fidl::Result<()> {
5024 decoder.debug_check_bounds::<Self>(offset);
5025 fidl::decode!(
5027 fidl_fuchsia_mem::Buffer,
5028 fidl::encoding::DefaultFuchsiaResourceDialect,
5029 &mut self.cipher_text,
5030 decoder,
5031 offset + 0,
5032 _depth
5033 )?;
5034 Ok(())
5035 }
5036 }
5037
5038 impl fidl::encoding::ResourceTypeMarker for KeyManagerUnsealDataResponse {
5039 type Borrowed<'a> = &'a mut Self;
5040 fn take_or_borrow<'a>(
5041 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5042 ) -> Self::Borrowed<'a> {
5043 value
5044 }
5045 }
5046
5047 unsafe impl fidl::encoding::TypeMarker for KeyManagerUnsealDataResponse {
5048 type Owned = Self;
5049
5050 #[inline(always)]
5051 fn inline_align(_context: fidl::encoding::Context) -> usize {
5052 8
5053 }
5054
5055 #[inline(always)]
5056 fn inline_size(_context: fidl::encoding::Context) -> usize {
5057 16
5058 }
5059 }
5060
5061 unsafe impl
5062 fidl::encoding::Encode<
5063 KeyManagerUnsealDataResponse,
5064 fidl::encoding::DefaultFuchsiaResourceDialect,
5065 > for &mut KeyManagerUnsealDataResponse
5066 {
5067 #[inline]
5068 unsafe fn encode(
5069 self,
5070 encoder: &mut fidl::encoding::Encoder<
5071 '_,
5072 fidl::encoding::DefaultFuchsiaResourceDialect,
5073 >,
5074 offset: usize,
5075 _depth: fidl::encoding::Depth,
5076 ) -> fidl::Result<()> {
5077 encoder.debug_check_bounds::<KeyManagerUnsealDataResponse>(offset);
5078 fidl::encoding::Encode::<
5080 KeyManagerUnsealDataResponse,
5081 fidl::encoding::DefaultFuchsiaResourceDialect,
5082 >::encode(
5083 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5084 &mut self.plain_text,
5085 ),),
5086 encoder,
5087 offset,
5088 _depth,
5089 )
5090 }
5091 }
5092 unsafe impl<
5093 T0: fidl::encoding::Encode<
5094 fidl_fuchsia_mem::Buffer,
5095 fidl::encoding::DefaultFuchsiaResourceDialect,
5096 >,
5097 >
5098 fidl::encoding::Encode<
5099 KeyManagerUnsealDataResponse,
5100 fidl::encoding::DefaultFuchsiaResourceDialect,
5101 > for (T0,)
5102 {
5103 #[inline]
5104 unsafe fn encode(
5105 self,
5106 encoder: &mut fidl::encoding::Encoder<
5107 '_,
5108 fidl::encoding::DefaultFuchsiaResourceDialect,
5109 >,
5110 offset: usize,
5111 depth: fidl::encoding::Depth,
5112 ) -> fidl::Result<()> {
5113 encoder.debug_check_bounds::<KeyManagerUnsealDataResponse>(offset);
5114 self.0.encode(encoder, offset + 0, depth)?;
5118 Ok(())
5119 }
5120 }
5121
5122 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5123 for KeyManagerUnsealDataResponse
5124 {
5125 #[inline(always)]
5126 fn new_empty() -> Self {
5127 Self {
5128 plain_text: fidl::new_empty!(
5129 fidl_fuchsia_mem::Buffer,
5130 fidl::encoding::DefaultFuchsiaResourceDialect
5131 ),
5132 }
5133 }
5134
5135 #[inline]
5136 unsafe fn decode(
5137 &mut self,
5138 decoder: &mut fidl::encoding::Decoder<
5139 '_,
5140 fidl::encoding::DefaultFuchsiaResourceDialect,
5141 >,
5142 offset: usize,
5143 _depth: fidl::encoding::Depth,
5144 ) -> fidl::Result<()> {
5145 decoder.debug_check_bounds::<Self>(offset);
5146 fidl::decode!(
5148 fidl_fuchsia_mem::Buffer,
5149 fidl::encoding::DefaultFuchsiaResourceDialect,
5150 &mut self.plain_text,
5151 decoder,
5152 offset + 0,
5153 _depth
5154 )?;
5155 Ok(())
5156 }
5157 }
5158}