A simple library to support serving https.
Dependents: oldheating gps motorhome heating
tls/tls-connection.h@17:93feb2a51d58, 2019-10-10 (annotated)
- Committer:
- andrewboyson
- Date:
- Thu Oct 10 07:38:13 2019 +0000
- Revision:
- 17:93feb2a51d58
- Parent:
- 14:03a0b8fd6ddc
- Child:
- 19:f22327e8be7b
Defined a lot of lengths eg 20 -> SHA1_HASH_LENGTH
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewboyson | 6:819c17738dc2 | 1 | #include <stdbool.h> |
andrewboyson | 6:819c17738dc2 | 2 | #include <stdint.h> |
andrewboyson | 6:819c17738dc2 | 3 | |
andrewboyson | 17:93feb2a51d58 | 4 | #include "tls-defs.h" |
andrewboyson | 5:ee5489ee1117 | 5 | #include "sha256.h" |
andrewboyson | 5:ee5489ee1117 | 6 | |
andrewboyson | 5:ee5489ee1117 | 7 | #define DO_WAIT_CLIENT_HELLO 0 |
andrewboyson | 14:03a0b8fd6ddc | 8 | #define DO_SEND_SERVER_HELLO_NEW 1 |
andrewboyson | 14:03a0b8fd6ddc | 9 | #define DO_SEND_SERVER_HELLO_RESUME 2 |
andrewboyson | 14:03a0b8fd6ddc | 10 | #define DO_WAIT_CLIENT_CHANGE 3 |
andrewboyson | 14:03a0b8fd6ddc | 11 | #define DO_WAIT_DECRYPT_MASTER_SECRET 4 |
andrewboyson | 14:03a0b8fd6ddc | 12 | #define DO_SEND_SERVER_CHANGE 5 |
andrewboyson | 14:03a0b8fd6ddc | 13 | #define DO_APPLICATION 6 |
andrewboyson | 14:03a0b8fd6ddc | 14 | #define DO_SEND_ALERT_ILLEGAL_PARAMETER 7 |
andrewboyson | 14:03a0b8fd6ddc | 15 | #define DO_SEND_ALERT_INTERNAL_ERROR 8 |
andrewboyson | 5:ee5489ee1117 | 16 | |
andrewboyson | 8:5e66a6b4b38c | 17 | #define TLS_DEFERRED_CONTENT_SIZE 100 |
andrewboyson | 6:819c17738dc2 | 18 | |
andrewboyson | 5:ee5489ee1117 | 19 | struct TlsConnection |
andrewboyson | 5:ee5489ee1117 | 20 | { |
andrewboyson | 5:ee5489ee1117 | 21 | int id; //An id of zero means the record is empty |
andrewboyson | 5:ee5489ee1117 | 22 | uint32_t lastUsed; |
andrewboyson | 5:ee5489ee1117 | 23 | int toDo; |
andrewboyson | 10:e269fd7b9500 | 24 | uint32_t sessionId; |
andrewboyson | 14:03a0b8fd6ddc | 25 | bool resume; |
andrewboyson | 8:5e66a6b4b38c | 26 | struct Sha256State handshakeSha; |
andrewboyson | 6:819c17738dc2 | 27 | bool clientEncrypted; |
andrewboyson | 6:819c17738dc2 | 28 | bool serverEncrypted; |
andrewboyson | 17:93feb2a51d58 | 29 | uint8_t clientRandom[TLS_LENGTH_RANDOM]; |
andrewboyson | 17:93feb2a51d58 | 30 | uint8_t serverRandom[TLS_LENGTH_RANDOM]; |
andrewboyson | 8:5e66a6b4b38c | 31 | uint8_t clientHandshakeHash[SHA256_HASH_SIZE]; |
andrewboyson | 8:5e66a6b4b38c | 32 | uint8_t deferredContent[TLS_DEFERRED_CONTENT_SIZE]; |
andrewboyson | 8:5e66a6b4b38c | 33 | uint64_t clientSequence; |
andrewboyson | 8:5e66a6b4b38c | 34 | uint64_t serverSequence; |
andrewboyson | 10:e269fd7b9500 | 35 | uint32_t clientPositionInStreamOffset; |
andrewboyson | 10:e269fd7b9500 | 36 | uint32_t serverPositionInStreamOffset; |
andrewboyson | 6:819c17738dc2 | 37 | |
andrewboyson | 14:03a0b8fd6ddc | 38 | int slotPriKeyDecryption; |
andrewboyson | 17:93feb2a51d58 | 39 | uint8_t clientMacKey [TLS_LENGTH_MAC_KEY]; |
andrewboyson | 17:93feb2a51d58 | 40 | uint8_t serverMacKey [TLS_LENGTH_MAC_KEY]; |
andrewboyson | 17:93feb2a51d58 | 41 | uint8_t clientWriteKey[TLS_LENGTH_CIPHER_KEY]; |
andrewboyson | 17:93feb2a51d58 | 42 | uint8_t serverWriteKey[TLS_LENGTH_CIPHER_KEY]; |
andrewboyson | 5:ee5489ee1117 | 43 | }; |
andrewboyson | 5:ee5489ee1117 | 44 | |
andrewboyson | 8:5e66a6b4b38c | 45 | extern struct TlsConnection* TlsConnectionGetNext(void); |
andrewboyson | 8:5e66a6b4b38c | 46 | |
andrewboyson | 10:e269fd7b9500 | 47 | extern struct TlsConnection* TlsConnectionNew (int id); //Never fails so never returns NULL |
andrewboyson | 10:e269fd7b9500 | 48 | extern struct TlsConnection* TlsConnectionOrNull(int id); |
andrewboyson | 10:e269fd7b9500 | 49 | extern void TlsConnectionReset (int id); |