A simple library to support serving https.
Dependents: oldheating gps motorhome heating
pki/ser-cer.c@10:e269fd7b9500, 2019-09-24 (annotated)
- Committer:
- andrewboyson
- Date:
- Tue Sep 24 18:11:02 2019 +0000
- Revision:
- 10:e269fd7b9500
- Parent:
- 4:6a1d887f1cad
- Child:
- 21:a6d6e26dd742
Got padlock and some application data through. Now need to use China remainder theorem to speed up decryption and things up and the session id to avoid having to do the decryption.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewboyson | 4:6a1d887f1cad | 1 | #include <stdint.h> |
andrewboyson | 4:6a1d887f1cad | 2 | |
andrewboyson | 0:be515c9019e3 | 3 | #include "base64.h" |
andrewboyson | 0:be515c9019e3 | 4 | #include "log.h" |
andrewboyson | 10:e269fd7b9500 | 5 | #include "led.h" |
andrewboyson | 0:be515c9019e3 | 6 | |
andrewboyson | 4:6a1d887f1cad | 7 | uint8_t SerCerData[1024]; |
andrewboyson | 4:6a1d887f1cad | 8 | int SerCerSize = 0; |
andrewboyson | 0:be515c9019e3 | 9 | |
andrewboyson | 0:be515c9019e3 | 10 | static const char* pNext; |
andrewboyson | 0:be515c9019e3 | 11 | static const char* buffer = |
andrewboyson | 0:be515c9019e3 | 12 | #include "ser-cer.inc" |
andrewboyson | 0:be515c9019e3 | 13 | ; |
andrewboyson | 0:be515c9019e3 | 14 | static char readChar() |
andrewboyson | 0:be515c9019e3 | 15 | { |
andrewboyson | 0:be515c9019e3 | 16 | char c = *pNext; |
andrewboyson | 0:be515c9019e3 | 17 | if (!c) return 0; |
andrewboyson | 0:be515c9019e3 | 18 | pNext++; |
andrewboyson | 0:be515c9019e3 | 19 | return c; |
andrewboyson | 0:be515c9019e3 | 20 | } |
andrewboyson | 0:be515c9019e3 | 21 | static void readData() |
andrewboyson | 0:be515c9019e3 | 22 | { |
andrewboyson | 0:be515c9019e3 | 23 | SerCerSize = 0; |
andrewboyson | 0:be515c9019e3 | 24 | while (true) |
andrewboyson | 0:be515c9019e3 | 25 | { |
andrewboyson | 0:be515c9019e3 | 26 | int c = Base64ReadByte(); |
andrewboyson | 0:be515c9019e3 | 27 | if (c == -1) return; //EOF or an error |
andrewboyson | 0:be515c9019e3 | 28 | SerCerData[SerCerSize] = c; |
andrewboyson | 0:be515c9019e3 | 29 | SerCerSize++; |
andrewboyson | 0:be515c9019e3 | 30 | } |
andrewboyson | 0:be515c9019e3 | 31 | } |
andrewboyson | 0:be515c9019e3 | 32 | void SerCerInit() |
andrewboyson | 0:be515c9019e3 | 33 | { |
andrewboyson | 0:be515c9019e3 | 34 | |
andrewboyson | 0:be515c9019e3 | 35 | pNext = buffer; |
andrewboyson | 0:be515c9019e3 | 36 | Base64ReadNextCharFunctionPointer = readChar; |
andrewboyson | 0:be515c9019e3 | 37 | |
andrewboyson | 0:be515c9019e3 | 38 | int r = Base64SkipLine(); |
andrewboyson | 0:be515c9019e3 | 39 | if (r < 0) return; |
andrewboyson | 0:be515c9019e3 | 40 | |
andrewboyson | 0:be515c9019e3 | 41 | readData(); |
andrewboyson | 0:be515c9019e3 | 42 | |
andrewboyson | 0:be515c9019e3 | 43 | LogF("Server certificate content - %d bytes\r\n", SerCerSize); |
andrewboyson | 0:be515c9019e3 | 44 | LogBytesAsHex(SerCerData, SerCerSize); Log("\n\n"); |
andrewboyson | 0:be515c9019e3 | 45 | } |