GRPC Core  9.0.0
transport_security_grpc.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_TSI_TRANSPORT_SECURITY_GRPC_H
20 #define GRPC_CORE_TSI_TRANSPORT_SECURITY_GRPC_H
21 
23 
24 #include <grpc/slice_buffer.h>
26 
27 /* This method creates a tsi_zero_copy_grpc_protector object. It return TSI_OK
28  assuming there is no fatal error.
29  The caller is responsible for destroying the protector. */
31  const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
32  tsi_zero_copy_grpc_protector** protector);
33 
34 /* -- tsi_zero_copy_grpc_protector object -- */
35 
36 /* Outputs protected frames.
37  - unprotected_slices is the unprotected data to be protected.
38  - protected_slices is the protected output frames. One or more frames
39  may be produced in this protect function.
40  - This method returns TSI_OK in case of success or a specific error code in
41  case of failure. */
43  tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* unprotected_slices,
44  grpc_slice_buffer* protected_slices);
45 
46 /* Outputs unprotected bytes.
47  - protected_slices is the bytes of protected frames.
48  - unprotected_slices is the unprotected output data.
49  - This method returns TSI_OK in case of success. Success includes cases where
50  there is not enough data to output in which case unprotected_slices has 0
51  bytes. */
53  tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
54  grpc_slice_buffer* unprotected_slices);
55 
56 /* Destroys the tsi_zero_copy_grpc_protector object. */
58 
59 /* Returns value of max protected frame size. Useful for testing. */
61  tsi_zero_copy_grpc_protector* self, size_t& max_frame_size);
62 
63 /* Base for tsi_zero_copy_grpc_protector implementations. */
64 typedef struct {
66  grpc_slice_buffer* unprotected_slices,
67  grpc_slice_buffer* protected_slices);
69  grpc_slice_buffer* protected_slices,
70  grpc_slice_buffer* unprotected_slices);
71  void (*destroy)(tsi_zero_copy_grpc_protector* self);
72  tsi_result (*max_frame_size)(tsi_zero_copy_grpc_protector* self,
73  size_t& max_frame_size);
75 
78 };
79 
80 #endif /* GRPC_CORE_TSI_TRANSPORT_SECURITY_GRPC_H */
tsi_result tsi_zero_copy_grpc_protector_protect(tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices)
Definition: transport_security_grpc.cc:41
tsi_result tsi_zero_copy_grpc_protector_unprotect(tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices)
Definition: transport_security_grpc.cc:52
Definition: transport_security.h:109
tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector(const tsi_handshaker_result *self, size_t *max_output_protected_frame_size, tsi_zero_copy_grpc_protector **protector)
Definition: transport_security_grpc.cc:24
Represents an expandable array of slices, to be interpreted as a single item.
Definition: slice.h:78
tsi_result
Definition: transport_security_interface.h:31
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector *self)
Definition: transport_security_grpc.cc:63
Definition: transport_security_grpc.h:76
Definition: transport_security_grpc.h:64
const tsi_zero_copy_grpc_protector_vtable * vtable
Definition: transport_security_grpc.h:77
tsi_result tsi_zero_copy_grpc_protector_max_frame_size(tsi_zero_copy_grpc_protector *self, size_t &max_frame_size)
Definition: transport_security_grpc.cc:68