Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
tls/tls-mac.c@9:f354b4859b0b, 2019-09-11 (annotated)
- Committer:
- andrewboyson
- Date:
- Wed Sep 11 07:24:21 2019 +0000
- Revision:
- 9:f354b4859b0b
- Child:
- 17:93feb2a51d58
Got application data to be returned but not encrypted yet
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| andrewboyson | 9:f354b4859b0b | 1 | #include <stdint.h> |
| andrewboyson | 9:f354b4859b0b | 2 | #include "hmac-sha1.h" |
| andrewboyson | 9:f354b4859b0b | 3 | |
| andrewboyson | 9:f354b4859b0b | 4 | /* |
| andrewboyson | 9:f354b4859b0b | 5 | Calculate the MAC |
| andrewboyson | 9:f354b4859b0b | 6 | seq_num + TLSCompressed.type + TLSCompressed.version + TLSCompressed.length + TLSCompressed.fragment |
| andrewboyson | 9:f354b4859b0b | 7 | sequence='0000000000000000', rechdr='16 03 03', datalen='00 10' |
| andrewboyson | 9:f354b4859b0b | 8 | */ |
| andrewboyson | 9:f354b4859b0b | 9 | |
| andrewboyson | 9:f354b4859b0b | 10 | void TlsMacSha1(int macKeyLength, |
| andrewboyson | 9:f354b4859b0b | 11 | uint8_t* macKey, |
| andrewboyson | 9:f354b4859b0b | 12 | uint64_t sequence, |
| andrewboyson | 9:f354b4859b0b | 13 | uint8_t contentType, |
| andrewboyson | 9:f354b4859b0b | 14 | uint8_t versionH, |
| andrewboyson | 9:f354b4859b0b | 15 | uint8_t versionL, |
| andrewboyson | 9:f354b4859b0b | 16 | int payloadLength, |
| andrewboyson | 9:f354b4859b0b | 17 | uint8_t* payload, |
| andrewboyson | 9:f354b4859b0b | 18 | uint8_t* mac) |
| andrewboyson | 9:f354b4859b0b | 19 | { |
| andrewboyson | 9:f354b4859b0b | 20 | struct HmacSha1Struct md; |
| andrewboyson | 9:f354b4859b0b | 21 | HmacSha1Start (&md, macKey, macKeyLength); |
| andrewboyson | 9:f354b4859b0b | 22 | uint8_t prequel[8 + 5]; |
| andrewboyson | 9:f354b4859b0b | 23 | uint8_t *p = prequel; |
| andrewboyson | 9:f354b4859b0b | 24 | for (int i = 0; i < 7; i++) *p++ = 0; //sequence |
| andrewboyson | 9:f354b4859b0b | 25 | *p++ = sequence; |
| andrewboyson | 9:f354b4859b0b | 26 | *p++ = contentType; |
| andrewboyson | 9:f354b4859b0b | 27 | *p++ = versionH; |
| andrewboyson | 9:f354b4859b0b | 28 | *p++ = versionL; |
| andrewboyson | 9:f354b4859b0b | 29 | *p++ = payloadLength >> 8; |
| andrewboyson | 9:f354b4859b0b | 30 | *p++ = payloadLength; |
| andrewboyson | 9:f354b4859b0b | 31 | HmacSha1Add (&md, prequel, sizeof(prequel)); |
| andrewboyson | 9:f354b4859b0b | 32 | HmacSha1Add (&md, payload, payloadLength); |
| andrewboyson | 9:f354b4859b0b | 33 | HmacSha1Finish(&md, mac); |
| andrewboyson | 9:f354b4859b0b | 34 | } |