iPXE
rsa_aes_gcm_sha384.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2022 Michael Brown <mbrown@fensystems.co.uk>.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of the
7  * License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  * 02110-1301, USA.
18  *
19  * You can also choose to distribute this program under the terms of
20  * the Unmodified Binary Distribution Licence (as given in the file
21  * COPYING.UBDL), provided that you have satisfied its requirements.
22  */
23 
24 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
25 
26 #include <byteswap.h>
27 #include <ipxe/rsa.h>
28 #include <ipxe/aes.h>
29 #include <ipxe/sha512.h>
30 #include <ipxe/tls.h>
31 
32 /** TLS_RSA_WITH_AES_256_GCM_SHA384 cipher suite */
33 struct tls_cipher_suite
34 tls_rsa_with_aes_256_gcm_sha384 __tls_cipher_suite ( 22 ) = {
36  .key_len = ( 256 / 8 ),
37  .fixed_iv_len = 4,
38  .record_iv_len = 8,
39  .mac_len = 0,
45 };
Transport Layer Security Protocol.
struct tls_key_exchange_algorithm * exchange
Key exchange algorithm.
Definition: tls.h:189
uint8_t record_iv_len
Record initialisation vector length.
Definition: tls.h:205
struct cipher_algorithm aes_gcm_algorithm
struct tls_cipher_suite tls_rsa_with_aes_256_gcm_sha384 __tls_cipher_suite(22)
TLS_RSA_WITH_AES_256_GCM_SHA384 cipher suite.
struct tls_key_exchange_algorithm tls_pubkey_exchange_algorithm
Public key exchange algorithm.
Definition: tls.c:1447
struct digest_algorithm sha384_algorithm
SHA-384 algorithm.
Definition: sha384.c:63
struct pubkey_algorithm * pubkey
Public-key encryption algorithm.
Definition: tls.h:191
#define TLS_RSA_WITH_AES_256_GCM_SHA384
Definition: tls.h:96
static void struct digest_algorithm * digest
HMAC-MD5 digest.
Definition: crypto.h:308
uint8_t fixed_iv_len
Fixed initialisation vector length.
Definition: tls.h:203
A TLS cipher suite.
Definition: tls.h:187
AES algorithm.
uint8_t mac_len
MAC length.
Definition: tls.h:207
RSA public-key cryptography.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
struct digest_algorithm * handshake
Handshake digest algorithm (for TLSv1.2 and above)
Definition: tls.h:197
struct pubkey_algorithm rsa_algorithm
RSA public-key algorithm.
Definition: rsa.c:632
SHA-512 algorithm.
struct cipher_algorithm * cipher
Bulk encryption cipher algorithm.
Definition: tls.h:193
#define htons(value)
Definition: byteswap.h:135
uint16_t code
Numeric code (in network-endian order)
Definition: tls.h:199