alts_grpc_record_protocol_test.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 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 
20 
21 #include <grpc/support/alloc.h>
22 #include <grpc/support/log.h>
23 
31 
32 constexpr size_t kMaxSliceLength = 256;
33 constexpr size_t kMaxSlices = 10;
34 constexpr size_t kSealRepeatTimes = 5;
35 constexpr size_t kTagLength = 16;
36 
37 /* Test fixtures for each test cases. */
43 };
44 
45 /* Test input variables for protect/unprotect operations. */
47  size_t header_length;
48  size_t tag_length;
53 };
54 
55 /* --- Test utility functions. --- */
56 
58  GPR_ASSERT(sb != nullptr);
59  size_t slice_count = gsec_test_bias_random_uint32(kMaxSlices) + 1;
60  for (size_t i = 0; i < slice_count; i++) {
61  size_t slice_length = gsec_test_bias_random_uint32(kMaxSliceLength) + 1;
62  grpc_slice slice = GRPC_SLICE_MALLOC(slice_length);
65  }
66 }
67 
69  GPR_ASSERT(sb != nullptr);
70  GPR_ASSERT(index < sb->length);
71  for (size_t i = 0; i < sb->count; i++) {
72  if (index < GRPC_SLICE_LENGTH(sb->slices[i])) {
73  return GRPC_SLICE_START_PTR(sb->slices[i]) + index;
74  } else {
76  }
77  }
78  return nullptr;
79 }
80 
81 /* Checks if two slice buffer contents are the same. It is not super efficient,
82  * but OK for testing. */
85  GPR_ASSERT(first != nullptr);
86  GPR_ASSERT(second != nullptr);
87  if (first->length != second->length) {
88  return false;
89  }
90  for (size_t i = 0; i < first->length; i++) {
91  uint8_t* first_ptr = pointer_to_nth_byte(first, i);
92  uint8_t* second_ptr = pointer_to_nth_byte(second, i);
93  GPR_ASSERT(first_ptr != nullptr);
94  GPR_ASSERT(second_ptr != nullptr);
95  if ((*first_ptr) != (*second_ptr)) {
96  return false;
97  }
98  }
99  return true;
100 }
101 
103  GPR_ASSERT(sb != nullptr);
104  if (sb->length == 0) {
105  return;
106  }
107  uint32_t offset =
108  gsec_test_bias_random_uint32(static_cast<uint32_t>(sb->length));
110  (*ptr)++;
111 }
112 
114 test_fixture_integrity_only_create(bool rekey, bool extra_copy) {
118  size_t key_length = rekey ? kAes128GcmRekeyKeyLength : kAes128GcmKeyLength;
119  uint8_t* key;
120  gsec_test_random_array(&key, key_length);
121  gsec_aead_crypter* crypter = nullptr;
122 
123  /* Create client record protocol for protect. */
125  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
126  &crypter, nullptr) == GRPC_STATUS_OK);
128  crypter, 8, /*is_client=*/true, /*is_protect=*/true,
129  extra_copy, &fixture->client_protect) == TSI_OK);
130  /* Create client record protocol for unprotect. */
132  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
133  &crypter, nullptr) == GRPC_STATUS_OK);
135  crypter, 8, /*is_client=*/true, /*is_protect=*/false,
136  extra_copy, &fixture->client_unprotect) == TSI_OK);
137  /* Create server record protocol for protect. */
139  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
140  &crypter, nullptr) == GRPC_STATUS_OK);
142  crypter, 8, /*is_client=*/false, /*is_protect=*/true,
143  extra_copy, &fixture->server_protect) == TSI_OK);
144  /* Create server record protocol for unprotect. */
146  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
147  &crypter, nullptr) == GRPC_STATUS_OK);
149  crypter, 8, /*is_client=*/false, /*is_protect=*/false,
150  extra_copy, &fixture->server_unprotect) == TSI_OK);
151 
152  gpr_free(key);
153  return fixture;
154 }
155 
158  return test_fixture_integrity_only_create(false, false);
159 }
160 
163  return test_fixture_integrity_only_create(true, false);
164 }
165 
168  return test_fixture_integrity_only_create(false, true);
169 }
170 
176  size_t key_length = rekey ? kAes128GcmRekeyKeyLength : kAes128GcmKeyLength;
177  uint8_t* key;
178  gsec_test_random_array(&key, key_length);
179  gsec_aead_crypter* crypter = nullptr;
180 
181  /* Create client record protocol for protect. */
183  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
184  &crypter, nullptr) == GRPC_STATUS_OK);
186  crypter, 8, /*is_client=*/true, /*is_protect=*/true,
187  &fixture->client_protect) == TSI_OK);
188  /* Create client record protocol for unprotect. */
190  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
191  &crypter, nullptr) == GRPC_STATUS_OK);
193  crypter, 8, /*is_client=*/true, /*is_protect=*/false,
194  &fixture->client_unprotect) == TSI_OK);
195  /* Create server record protocol for protect. */
197  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
198  &crypter, nullptr) == GRPC_STATUS_OK);
200  crypter, 8, /*is_client=*/false, /*is_protect=*/true,
201  &fixture->server_protect) == TSI_OK);
202  /* Create server record protocol for unprotect. */
204  key, key_length, kAesGcmNonceLength, kAesGcmTagLength, rekey,
205  &crypter, nullptr) == GRPC_STATUS_OK);
207  crypter, 8, /*is_client=*/false, /*is_protect=*/false,
208  &fixture->server_unprotect) == TSI_OK);
209 
210  gpr_free(key);
211  return fixture;
212 }
213 
217 }
218 
222 }
223 
226  if (fixture == nullptr) {
227  return;
228  }
231  alts_grpc_record_protocol_destroy(fixture->client_unprotect);
233  alts_grpc_record_protocol_destroy(fixture->server_unprotect);
235  gpr_free(fixture);
236 }
237 
244  var->tag_length = kTagLength;
245  /* Initialized slice buffers. */
250  /* Randomly sets content of original_sb, and copies into duplicate_sb. */
252  for (size_t i = 0; i < var->original_sb.count; i++) {
255  }
256  return var;
257 }
258 
261  if (var == nullptr) {
262  return;
263  }
268  gpr_free(var);
269 }
270 
271 /* --- alts grpc record protocol tests. --- */
272 
274  alts_grpc_record_protocol* receiver) {
276  for (size_t i = 0; i < kSealRepeatTimes; i++) {
279  /* Seals and then unseals. */
280  size_t data_length = var->original_sb.length;
282  sender, &var->original_sb, &var->protected_sb);
285  data_length + var->header_length + var->tag_length);
287  &var->unprotected_sb);
289  GPR_ASSERT(
292  }
294 }
295 
297  alts_grpc_record_protocol* receiver) {
299  for (size_t i = 0; i < kSealRepeatTimes; i++) {
302  /* Seals and then unseals empty payload. */
306  sender, &var->original_sb, &var->protected_sb);
309  var->header_length + var->tag_length);
311  &var->unprotected_sb);
313  GPR_ASSERT(
316  }
318 }
319 
321  alts_grpc_record_protocol* receiver) {
326  /* Seals once. */
328  &var->protected_sb);
331  /* Seals again. */
333  &var->protected_sb);
335  /* Unseals the second frame. */
337  &var->unprotected_sb);
341 }
342 
344  alts_grpc_record_protocol* receiver) {
349  /* Seals once. */
351  &var->protected_sb);
353  /* Corrupts one byte in protected_sb and tries to unprotect. */
356  &var->unprotected_sb);
360 }
361 
367  /* Protects with nullptr input. */
372  /* Unprotects with nullptr input. */
374  &var->protected_sb);
376  status =
381  /* Unprotects on a temporary slice buffer which length is smaller than header
382  * length plus tag length. */
383  grpc_slice_buffer temp_sb;
384  grpc_slice_buffer_init(&temp_sb);
386  &var->protected_sb, var->header_length + var->tag_length - 1, &temp_sb);
387  status =
393 }
394 
395 /* --- Test cases. --- */
396 
399  random_seal_unseal(fixture->client_protect, fixture->server_unprotect);
400  random_seal_unseal(fixture->server_protect, fixture->client_unprotect);
401 }
402 
405  empty_seal_unseal(fixture->client_protect, fixture->server_unprotect);
406  empty_seal_unseal(fixture->server_protect, fixture->client_unprotect);
407 }
408 
411  unsync_seal_unseal(fixture->client_protect, fixture->server_unprotect);
412  unsync_seal_unseal(fixture->server_protect, fixture->client_unprotect);
413 }
414 
417  corrupted_data(fixture->client_protect, fixture->server_unprotect);
418  corrupted_data(fixture->server_protect, fixture->client_unprotect);
419 }
420 
423  input_check(fixture->client_protect);
424 }
425 
427  alts_grpc_record_protocol_test_fixture* (*fixture_create)()) {
428  auto* fixture_1 = fixture_create();
431 
432  auto* fixture_2 = fixture_create();
435 
436  auto* fixture_3 = fixture_create();
439 
440  auto* fixture_4 = fixture_create();
443 
444  auto* fixture_5 = fixture_create();
447 }
448 
449 int main(int argc, char** argv) {
450  grpc::testing::TestEnvironment env(&argc, argv);
451  grpc_init();
460  grpc_shutdown();
461  return 0;
462 }
ptr
char * ptr
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:45
create_random_slice_buffer
static void create_random_slice_buffer(grpc_slice_buffer *sb)
Definition: alts_grpc_record_protocol_test.cc:57
log.h
gsec_test_bias_random_uint32
uint32_t gsec_test_bias_random_uint32(uint32_t max_length)
Definition: gsec_test_util.cc:43
generate.env
env
Definition: generate.py:37
alter_random_byte
static void alter_random_byte(grpc_slice_buffer *sb)
Definition: alts_grpc_record_protocol_test.cc:102
alts_grpc_record_protocol_test_fixture::server_protect
alts_grpc_record_protocol * server_protect
Definition: alts_grpc_record_protocol_test.cc:41
alts_grpc_record_protocol_test_var
Definition: alts_grpc_record_protocol_test.cc:46
TSI_INTERNAL_ERROR
@ TSI_INTERNAL_ERROR
Definition: transport_security_interface.h:39
alts_grpc_record_protocol_test_var::tag_length
size_t tag_length
Definition: alts_grpc_record_protocol_test.cc:48
alts_grpc_record_protocol_test_fixture::client_unprotect
alts_grpc_record_protocol * client_unprotect
Definition: alts_grpc_record_protocol_test.cc:40
alts_grpc_record_protocol_destroy
void alts_grpc_record_protocol_destroy(alts_grpc_record_protocol *self)
Definition: alts_grpc_record_protocol_common.cc:151
alts_grpc_record_protocol
Definition: alts_grpc_record_protocol_common.h:47
grpc_slice_buffer::slices
grpc_slice * slices
Definition: include/grpc/impl/codegen/slice.h:89
gpr_free
GPRAPI void gpr_free(void *ptr)
Definition: alloc.cc:51
GRPC_SLICE_MALLOC
#define GRPC_SLICE_MALLOC(len)
Definition: include/grpc/slice.h:70
kTagLength
constexpr size_t kTagLength
Definition: alts_grpc_record_protocol_test.cc:35
alts_grpc_record_protocol_corrupted_data_tests
static void alts_grpc_record_protocol_corrupted_data_tests(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:415
gsec_test_random_array
void gsec_test_random_array(uint8_t **bytes, size_t length)
Definition: gsec_test_util.cc:33
test_fixture_integrity_only_rekey_create
static alts_grpc_record_protocol_test_fixture * test_fixture_integrity_only_rekey_create()
Definition: alts_grpc_record_protocol_test.cc:162
status
absl::Status status
Definition: rls.cc:251
test_fixture_integrity_only_create
static alts_grpc_record_protocol_test_fixture * test_fixture_integrity_only_create(bool rekey, bool extra_copy)
Definition: alts_grpc_record_protocol_test.cc:114
kSealRepeatTimes
constexpr size_t kSealRepeatTimes
Definition: alts_grpc_record_protocol_test.cc:34
gsec_aes_gcm_aead_crypter_create
grpc_status_code gsec_aes_gcm_aead_crypter_create(const uint8_t *key, size_t key_length, size_t nonce_length, size_t tag_length, bool rekey, gsec_aead_crypter **crypter, char **error_details)
Definition: aes_gcm.cc:633
second
StrT second
Definition: cxa_demangle.cpp:4885
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
alts_grpc_record_protocol_tests
static void alts_grpc_record_protocol_tests(alts_grpc_record_protocol_test_fixture *(*fixture_create)())
Definition: alts_grpc_record_protocol_test.cc:426
kMaxSliceLength
constexpr size_t kMaxSliceLength
Definition: alts_grpc_record_protocol_test.cc:32
alts_iovec_record_protocol.h
corrupted_data
static void corrupted_data(alts_grpc_record_protocol *sender, alts_grpc_record_protocol *receiver)
Definition: alts_grpc_record_protocol_test.cc:343
test_fixture_privacy_integrity_no_rekey_create
static alts_grpc_record_protocol_test_fixture * test_fixture_privacy_integrity_no_rekey_create()
Definition: alts_grpc_record_protocol_test.cc:215
gpr_zalloc
GPRAPI void * gpr_zalloc(size_t size)
Definition: alloc.cc:40
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
alts_grpc_record_protocol_test_var::header_length
size_t header_length
Definition: alts_grpc_record_protocol_test.cc:47
alts_grpc_integrity_only_record_protocol_create
tsi_result alts_grpc_integrity_only_record_protocol_create(gsec_aead_crypter *crypter, size_t overflow_size, bool is_client, bool is_protect, bool enable_extra_copy, alts_grpc_record_protocol **rp)
Definition: alts_grpc_integrity_only_record_protocol.cc:198
TSI_OK
@ TSI_OK
Definition: transport_security_interface.h:32
kAesGcmNonceLength
const size_t kAesGcmNonceLength
Definition: gsec.h:47
GRPC_STATUS_OK
@ GRPC_STATUS_OK
Definition: include/grpc/impl/codegen/status.h:30
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
test_fixture_privacy_integrity_rekey_create
static alts_grpc_record_protocol_test_fixture * test_fixture_privacy_integrity_rekey_create()
Definition: alts_grpc_record_protocol_test.cc:220
alts_grpc_privacy_integrity_record_protocol.h
fixture
static const char fixture[]
Definition: test-fs-copyfile.c:36
kAes128GcmRekeyKeyLength
const size_t kAes128GcmRekeyKeyLength
Definition: gsec.h:54
unsync_seal_unseal
static void unsync_seal_unseal(alts_grpc_record_protocol *sender, alts_grpc_record_protocol *receiver)
Definition: alts_grpc_record_protocol_test.cc:320
grpc_core::ExecCtx::Flush
bool Flush()
Definition: exec_ctx.cc:69
grpc_slice_buffer::count
size_t count
Definition: include/grpc/impl/codegen/slice.h:91
slice
grpc_slice slice
Definition: src/core/lib/surface/server.cc:467
alts_grpc_record_protocol_protect
tsi_result alts_grpc_record_protocol_protect(alts_grpc_record_protocol *self, grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices)
Definition: alts_grpc_record_protocol_common.cc:123
gsec_test_util.h
tsi_result
tsi_result
Definition: transport_security_interface.h:31
grpc_slice_buffer::length
size_t length
Definition: include/grpc/impl/codegen/slice.h:96
GRPC_SLICE_START_PTR
#define GRPC_SLICE_START_PTR(slice)
Definition: include/grpc/impl/codegen/slice.h:101
grpc_slice
Definition: include/grpc/impl/codegen/slice.h:65
alts_iovec_record_protocol_get_header_length
size_t alts_iovec_record_protocol_get_header_length()
Definition: alts_iovec_record_protocol.cc:165
alts_grpc_record_protocol_test_fixture
Definition: alts_grpc_record_protocol_test.cc:38
alts_grpc_record_protocol_test_fixture::client_protect
alts_grpc_record_protocol * client_protect
Definition: alts_grpc_record_protocol_test.cc:39
input_check
static void input_check(alts_grpc_record_protocol *rp)
Definition: alts_grpc_record_protocol_test.cc:362
pointer_to_nth_byte
static uint8_t * pointer_to_nth_byte(grpc_slice_buffer *sb, size_t index)
Definition: alts_grpc_record_protocol_test.cc:68
slice_internal.h
alts_grpc_record_protocol_unsync_seal_unseal_tests
static void alts_grpc_record_protocol_unsync_seal_unseal_tests(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:409
alts_grpc_record_protocol_test_var::protected_sb
grpc_slice_buffer protected_sb
Definition: alts_grpc_record_protocol_test.cc:51
grpc_core::ExecCtx
Definition: exec_ctx.h:97
grpc_slice_buffer_init
GPRAPI void grpc_slice_buffer_init(grpc_slice_buffer *sb)
Definition: slice/slice_buffer.cc:116
alts_grpc_record_protocol_test_var_destroy
static void alts_grpc_record_protocol_test_var_destroy(alts_grpc_record_protocol_test_var *var)
Definition: alts_grpc_record_protocol_test.cc:259
alts_grpc_privacy_integrity_record_protocol_create
tsi_result alts_grpc_privacy_integrity_record_protocol_create(gsec_aead_crypter *crypter, size_t overflow_size, bool is_client, bool is_protect, alts_grpc_record_protocol **rp)
Definition: alts_grpc_privacy_integrity_record_protocol.cc:123
GRPC_SLICE_LENGTH
#define GRPC_SLICE_LENGTH(slice)
Definition: include/grpc/impl/codegen/slice.h:104
alts_grpc_record_protocol_random_seal_unseal_tests
static void alts_grpc_record_protocol_random_seal_unseal_tests(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:397
test_config.h
grpc_slice_buffer_add
GPRAPI void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice slice)
Definition: slice/slice_buffer.cc:170
key
const char * key
Definition: hpack_parser_table.cc:164
empty_seal_unseal
static void empty_seal_unseal(alts_grpc_record_protocol *sender, alts_grpc_record_protocol *receiver)
Definition: alts_grpc_record_protocol_test.cc:296
exec_ctx
grpc_core::ExecCtx exec_ctx
Definition: end2end_binder_transport_test.cc:75
index
int index
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:1184
alts_grpc_record_protocol.h
alloc.h
first
StrT first
Definition: cxa_demangle.cpp:4884
grpc::testing::TestEnvironment
Definition: test/core/util/test_config.h:54
alts_grpc_record_protocol_empty_seal_unseal_tests
static void alts_grpc_record_protocol_empty_seal_unseal_tests(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:403
TSI_INVALID_ARGUMENT
@ TSI_INVALID_ARGUMENT
Definition: transport_security_interface.h:34
alts_grpc_record_protocol_test_fixture::server_unprotect
alts_grpc_record_protocol * server_unprotect
Definition: alts_grpc_record_protocol_test.cc:42
test_fixture_integrity_only_extra_copy_create
static alts_grpc_record_protocol_test_fixture * test_fixture_integrity_only_extra_copy_create()
Definition: alts_grpc_record_protocol_test.cc:167
exec_ctx.h
test_fixture_privacy_integrity_create
static alts_grpc_record_protocol_test_fixture * test_fixture_privacy_integrity_create(bool rekey)
Definition: alts_grpc_record_protocol_test.cc:172
alts_grpc_record_protocol_test_var::unprotected_sb
grpc_slice_buffer unprotected_sb
Definition: alts_grpc_record_protocol_test.cc:52
grpc_slice_buffer_move_first
GPRAPI void grpc_slice_buffer_move_first(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst)
Definition: slice/slice_buffer.cc:348
alts_grpc_record_protocol_test_fixture_destroy
static void alts_grpc_record_protocol_test_fixture_destroy(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:224
alts_grpc_record_protocol_test_var::original_sb
grpc_slice_buffer original_sb
Definition: alts_grpc_record_protocol_test.cc:49
grpc_slice_buffer_destroy_internal
void grpc_slice_buffer_destroy_internal(grpc_slice_buffer *sb)
Definition: slice/slice_buffer.cc:123
gsec_aead_crypter
Definition: gsec.h:178
gsec_test_random_bytes
void gsec_test_random_bytes(uint8_t *bytes, size_t length)
Definition: gsec_test_util.cc:25
grpc_slice_buffer
Definition: include/grpc/impl/codegen/slice.h:83
grpc_init
GRPCAPI void grpc_init(void)
Definition: init.cc:146
kMaxSlices
constexpr size_t kMaxSlices
Definition: alts_grpc_record_protocol_test.cc:33
are_slice_buffers_equal
static bool are_slice_buffers_equal(grpc_slice_buffer *first, grpc_slice_buffer *second)
Definition: alts_grpc_record_protocol_test.cc:83
length
std::size_t length
Definition: abseil-cpp/absl/time/internal/test_util.cc:57
alts_grpc_integrity_only_record_protocol.h
kAes128GcmKeyLength
const size_t kAes128GcmKeyLength
Definition: gsec.h:49
grpc_shutdown
GRPCAPI void grpc_shutdown(void)
Definition: init.cc:209
alts_grpc_record_protocol_unprotect
tsi_result alts_grpc_record_protocol_unprotect(alts_grpc_record_protocol *self, grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices)
Definition: alts_grpc_record_protocol_common.cc:137
alts_grpc_record_protocol_input_check_tests
static void alts_grpc_record_protocol_input_check_tests(alts_grpc_record_protocol_test_fixture *fixture)
Definition: alts_grpc_record_protocol_test.cc:421
grpc_slice_buffer_reset_and_unref_internal
void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer *sb)
Definition: slice/slice_buffer.cc:238
alts_grpc_record_protocol_test_var::duplicate_sb
grpc_slice_buffer duplicate_sb
Definition: alts_grpc_record_protocol_test.cc:50
grpc_core::ExecCtx::Get
static ExecCtx * Get()
Definition: exec_ctx.h:205
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
main
int main(int argc, char **argv)
Definition: alts_grpc_record_protocol_test.cc:449
offset
voidpf uLong offset
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:142
test_fixture_integrity_only_no_rekey_no_extra_copy_create
static alts_grpc_record_protocol_test_fixture * test_fixture_integrity_only_no_rekey_no_extra_copy_create()
Definition: alts_grpc_record_protocol_test.cc:157
kAesGcmTagLength
const size_t kAesGcmTagLength
Definition: gsec.h:48
grpc_slice_ref
GPRAPI grpc_slice grpc_slice_ref(grpc_slice s)
Definition: slice_api.cc:27
random_seal_unseal
static void random_seal_unseal(alts_grpc_record_protocol *sender, alts_grpc_record_protocol *receiver)
Definition: alts_grpc_record_protocol_test.cc:273
alts_grpc_record_protocol_test_var_create
static alts_grpc_record_protocol_test_var * alts_grpc_record_protocol_test_var_create()
Definition: alts_grpc_record_protocol_test.cc:239


grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:40