19 #ifndef GRPC_CORE_TSI_ALTS_CRYPT_GSEC_H
20 #define GRPC_CORE_TSI_ALTS_CRYPT_GSEC_H
33 #ifndef GRPC_EVENT_ENGINE_POSIX
150 const struct iovec* aad_vec,
size_t aad_vec_length,
151 const struct iovec* plaintext_vec,
size_t plaintext_vec_length,
152 struct iovec ciphertext_vec, size_t* ciphertext_bytes_written,
153 char** error_details);
156 const struct iovec* aad_vec,
size_t aad_vec_length,
157 const struct iovec* ciphertext_vec,
size_t ciphertext_vec_length,
158 struct iovec plaintext_vec, size_t* plaintext_bytes_written,
159 char** error_details);
162 size_t* max_ciphertext_and_tag_length_to_return,
char** error_details);
165 size_t* max_plaintext_length_to_return,
char** error_details);
167 size_t* nonce_length_to_return,
168 char** error_details);
170 size_t* key_length_to_return,
171 char** error_details);
173 size_t* tag_length_to_return,
174 char** error_details);
218 const uint8_t* aad,
size_t aad_length,
const uint8_t* plaintext,
219 size_t plaintext_length, uint8_t* ciphertext_and_tag,
220 size_t ciphertext_and_tag_length,
size_t* bytes_written,
221 char** error_details);
251 const struct iovec* aad_vec,
size_t aad_vec_length,
252 const struct iovec* plaintext_vec,
size_t plaintext_vec_length,
253 struct iovec ciphertext_vec,
size_t* ciphertext_bytes_written,
254 char** error_details);
289 const uint8_t* aad,
size_t aad_length,
const uint8_t* ciphertext_and_tag,
290 size_t ciphertext_and_tag_length, uint8_t* plaintext,
291 size_t plaintext_length,
size_t* bytes_written,
char** error_details);
319 const struct iovec* aad_vec,
size_t aad_vec_length,
320 const struct iovec* ciphertext_vec,
size_t ciphertext_vec_length,
321 struct iovec plaintext_vec,
size_t* plaintext_bytes_written,
322 char** error_details);
344 size_t* max_ciphertext_and_tag_length_to_return,
char** error_details);
366 size_t* max_plaintext_length_to_return,
char** error_details);
385 char** error_details);
403 size_t* key_length_to_return,
404 char** error_details);
421 size_t* tag_length_to_return,
422 char** error_details);
458 char** error_details);
grpc_status_code gsec_aead_crypter_decrypt(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const uint8_t *aad, size_t aad_length, const uint8_t *ciphertext_and_tag, size_t ciphertext_and_tag_length, uint8_t *plaintext, size_t plaintext_length, size_t *bytes_written, char **error_details)
This method performs an AEAD decrypt operation.
Definition: gsec.cc:78
grpc_status_code gsec_aead_crypter_key_length(const gsec_aead_crypter *crypter, size_t *key_length_to_return, char **error_details)
This method returns a valid size of key array used at the construction of AEAD crypter instance.
Definition: gsec.cc:157
grpc_status_code gsec_aead_crypter_max_ciphertext_and_tag_length(const gsec_aead_crypter *crypter, size_t plaintext_length, size_t *max_ciphertext_and_tag_length_to_return, char **error_details)
This method computes the size of ciphertext+tag buffer that must be passed to gsec_aead_crypter_encry...
Definition: gsec.cc:116
grpc_status_code gsec_aead_crypter_decrypt_iovec(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const struct iovec *aad_vec, size_t aad_vec_length, const struct iovec *ciphertext_vec, size_t ciphertext_vec_length, struct iovec plaintext_vec, size_t *plaintext_bytes_written, char **error_details)
This method performs an AEAD decrypt operation.
Definition: gsec.cc:98
const size_t kAes128GcmRekeyKeyLength
Definition: gsec.h:55
grpc_status_code gsec_aead_crypter_encrypt_iovec(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const struct iovec *aad_vec, size_t aad_vec_length, const struct iovec *plaintext_vec, size_t plaintext_vec_length, struct iovec ciphertext_vec, size_t *ciphertext_bytes_written, char **error_details)
This method performs an AEAD encrypt operation.
Definition: gsec.cc:60
struct gsec_aead_crypter_vtable gsec_aead_crypter_vtable
The gsec_aead_crypter is an API for different AEAD implementations such as AES_GCM.
grpc_status_code gsec_aead_crypter_nonce_length(const gsec_aead_crypter *crypter, size_t *nonce_length_to_return, char **error_details)
This method returns a valid size of nonce array used at the construction of AEAD crypter instance.
Definition: gsec.cc:144
const size_t kAesGcmTagLength
Definition: gsec.h:49
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)
This method creates an AEAD crypter instance of AES-GCM encryption scheme which supports 16 and 32 by...
Definition: aes_gcm.cc:630
const size_t kAes256GcmKeyLength
Definition: gsec.h:51
grpc_status_code gsec_aead_crypter_tag_length(const gsec_aead_crypter *crypter, size_t *tag_length_to_return, char **error_details)
This method returns a valid size of tag array used at the construction of AEAD crypter instance.
Definition: gsec.cc:170
const size_t kAes128GcmKeyLength
Definition: gsec.h:50
grpc_status_code gsec_aead_crypter_max_plaintext_length(const gsec_aead_crypter *crypter, size_t ciphertext_and_tag_length, size_t *max_plaintext_length_to_return, char **error_details)
This method computes the size of plaintext buffer that must be passed to gsec_aead_crypter_decrypt fu...
Definition: gsec.cc:130
grpc_status_code gsec_aead_crypter_encrypt(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const uint8_t *aad, size_t aad_length, const uint8_t *plaintext, size_t plaintext_length, uint8_t *ciphertext_and_tag, size_t ciphertext_and_tag_length, size_t *bytes_written, char **error_details)
This method performs an AEAD encrypt operation.
Definition: gsec.cc:38
void gsec_aead_crypter_destroy(gsec_aead_crypter *crypter)
This method destroys an AEAD crypter instance by de-allocating all of its occupied memory.
Definition: gsec.cc:183
const size_t kAesGcmNonceLength
A gsec interface for AEAD encryption schemes.
Definition: gsec.h:48
grpc_status_code
Definition: status.h:26
The gsec_aead_crypter is an API for different AEAD implementations such as AES_GCM.
Definition: gsec.h:147
grpc_status_code(* max_ciphertext_and_tag_length)(const gsec_aead_crypter *crypter, size_t plaintext_length, size_t *max_ciphertext_and_tag_length_to_return, char **error_details)
Definition: gsec.h:160
grpc_status_code(* encrypt_iovec)(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const struct iovec *aad_vec, size_t aad_vec_length, const struct iovec *plaintext_vec, size_t plaintext_vec_length, struct iovec ciphertext_vec, size_t *ciphertext_bytes_written, char **error_details)
Definition: gsec.h:148
grpc_status_code(* nonce_length)(const gsec_aead_crypter *crypter, size_t *nonce_length_to_return, char **error_details)
Definition: gsec.h:166
void(* destruct)(gsec_aead_crypter *crypter)
Definition: gsec.h:175
grpc_status_code(* tag_length)(const gsec_aead_crypter *crypter, size_t *tag_length_to_return, char **error_details)
Definition: gsec.h:172
grpc_status_code(* decrypt_iovec)(gsec_aead_crypter *crypter, const uint8_t *nonce, size_t nonce_length, const struct iovec *aad_vec, size_t aad_vec_length, const struct iovec *ciphertext_vec, size_t ciphertext_vec_length, struct iovec plaintext_vec, size_t *plaintext_bytes_written, char **error_details)
Definition: gsec.h:154
grpc_status_code(* max_plaintext_length)(const gsec_aead_crypter *crypter, size_t ciphertext_and_tag_length, size_t *max_plaintext_length_to_return, char **error_details)
Definition: gsec.h:163
grpc_status_code(* key_length)(const gsec_aead_crypter *crypter, size_t *key_length_to_return, char **error_details)
Definition: gsec.h:169
const struct gsec_aead_crypter_vtable * vtable
Definition: gsec.h:180
void * iov_base
Definition: gsec.h:35
size_t iov_len
Definition: gsec.h:36