iPXE
rsa_aes_cbc_sha1.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 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/sha1.h>
30 #include <ipxe/sha256.h>
31 #include <ipxe/tls.h>
32 
33 /** TLS_RSA_WITH_AES_128_CBC_SHA cipher suite */
34 struct tls_cipher_suite
35 tls_rsa_with_aes_128_cbc_sha __tls_cipher_suite ( 25 ) = {
37  .key_len = ( 128 / 8 ),
38  .fixed_iv_len = 0,
46 };
47 
48 /** TLS_RSA_WITH_AES_256_CBC_SHA cipher suite */
49 struct tls_cipher_suite
50 tls_rsa_with_aes_256_cbc_sha __tls_cipher_suite ( 26 ) = {
52  .key_len = ( 256 / 8 ),
53  .fixed_iv_len = 0,
61 };
Transport Layer Security Protocol.
struct tls_cipher_suite tls_rsa_with_aes_128_cbc_sha __tls_cipher_suite(25)
TLS_RSA_WITH_AES_128_CBC_SHA cipher suite.
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 tls_key_exchange_algorithm tls_pubkey_exchange_algorithm
Public key exchange algorithm.
Definition: tls.c:1447
struct pubkey_algorithm * pubkey
Public-key encryption algorithm.
Definition: tls.h:191
static void struct digest_algorithm * digest
HMAC-MD5 digest.
Definition: crypto.h:308
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
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
#define TLS_RSA_WITH_AES_256_CBC_SHA
Definition: tls.h:89
struct cipher_algorithm aes_cbc_algorithm
RSA public-key cryptography.
struct digest_algorithm sha256_algorithm
SHA-256 algorithm.
Definition: sha256.c:264
#define TLS_RSA_WITH_AES_128_CBC_SHA
Definition: tls.h:87
#define SHA1_DIGEST_SIZE
Definition: Tpm20.h:25
SHA-1 algorithm.
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
struct cipher_algorithm * cipher
Bulk encryption cipher algorithm.
Definition: tls.h:193
#define AES_BLOCKSIZE
AES blocksize.
Definition: aes.h:15
SHA-256 algorithm.
#define htons(value)
Definition: byteswap.h:135
uint16_t code
Numeric code (in network-endian order)
Definition: tls.h:199
struct digest_algorithm sha1_algorithm
SHA-1 algorithm.
Definition: sha1.c:257