Implementation of 1-Wire with added Alarm Search Functionality
Dependents: Max32630_One_Wire_Interface
Authenticators/ISha256MacCoproc.h@74:23be10c32fa3, 2016-05-13 (annotated)
- Committer:
- IanBenzMaxim
- Date:
- Fri May 13 07:48:35 2016 -0500
- Revision:
- 74:23be10c32fa3
- Parent:
- 73:2cecc1372acc
- Child:
- 75:8b627804927c
Assimilated indentation and braces.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
IanBenzMaxim | 73:2cecc1372acc | 1 | #ifndef OneWire_Authenticators_ISha256MacCoproc |
IanBenzMaxim | 73:2cecc1372acc | 2 | #define OneWire_Authenticators_ISha256MacCoproc |
IanBenzMaxim | 21:00c94aeb533e | 3 | |
IanBenzMaxim | 73:2cecc1372acc | 4 | #include <stddef.h> |
IanBenzMaxim | 73:2cecc1372acc | 5 | #include <stdint.h> |
IanBenzMaxim | 21:00c94aeb533e | 6 | |
IanBenzMaxim | 73:2cecc1372acc | 7 | #include "array.h" |
IanBenzMaxim | 33:a4c015046956 | 8 | |
IanBenzMaxim | 73:2cecc1372acc | 9 | namespace OneWire |
IanBenzMaxim | 21:00c94aeb533e | 10 | { |
IanBenzMaxim | 74:23be10c32fa3 | 11 | namespace Authenticators |
IanBenzMaxim | 73:2cecc1372acc | 12 | { |
IanBenzMaxim | 74:23be10c32fa3 | 13 | /// Interface for SHA-256 coprocessors compatible with the DS28E15/22/25 family and similar. |
IanBenzMaxim | 74:23be10c32fa3 | 14 | class ISha256MacCoproc |
IanBenzMaxim | 74:23be10c32fa3 | 15 | { |
IanBenzMaxim | 74:23be10c32fa3 | 16 | public: |
IanBenzMaxim | 74:23be10c32fa3 | 17 | enum CmdResult |
IanBenzMaxim | 74:23be10c32fa3 | 18 | { |
IanBenzMaxim | 74:23be10c32fa3 | 19 | Success, |
IanBenzMaxim | 74:23be10c32fa3 | 20 | OperationFailure |
IanBenzMaxim | 74:23be10c32fa3 | 21 | }; |
IanBenzMaxim | 74:23be10c32fa3 | 22 | |
IanBenzMaxim | 74:23be10c32fa3 | 23 | /// Holds the contents of a device memory page. |
IanBenzMaxim | 74:23be10c32fa3 | 24 | typedef array<uint8_t, 32> DevicePage; |
IanBenzMaxim | 74:23be10c32fa3 | 25 | |
IanBenzMaxim | 74:23be10c32fa3 | 26 | /// Holds the contents of a device scratchpad. |
IanBenzMaxim | 74:23be10c32fa3 | 27 | typedef array<uint8_t, 32> DeviceScratchpad; |
IanBenzMaxim | 74:23be10c32fa3 | 28 | |
IanBenzMaxim | 74:23be10c32fa3 | 29 | /// Holds the contents of a device secret. |
IanBenzMaxim | 74:23be10c32fa3 | 30 | typedef array<uint8_t, 32> Secret; |
IanBenzMaxim | 74:23be10c32fa3 | 31 | |
IanBenzMaxim | 74:23be10c32fa3 | 32 | /// Container for a SHA-256 MAC. |
IanBenzMaxim | 74:23be10c32fa3 | 33 | typedef array<uint8_t, 32> Mac; |
IanBenzMaxim | 74:23be10c32fa3 | 34 | |
IanBenzMaxim | 74:23be10c32fa3 | 35 | /// Additional data fields for Compute Write MAC operation. |
IanBenzMaxim | 74:23be10c32fa3 | 36 | typedef array<uint8_t, 20> WriteMacData; |
IanBenzMaxim | 74:23be10c32fa3 | 37 | |
IanBenzMaxim | 74:23be10c32fa3 | 38 | /// Additional data fields for the Compute Auth. MAC operation. |
IanBenzMaxim | 74:23be10c32fa3 | 39 | typedef array<uint8_t, 12> AuthMacData; |
IanBenzMaxim | 21:00c94aeb533e | 40 | |
IanBenzMaxim | 74:23be10c32fa3 | 41 | /// Additional data field for the Compute Slave Secret operation. |
IanBenzMaxim | 74:23be10c32fa3 | 42 | typedef array<uint8_t, 12> SlaveSecretData; |
IanBenzMaxim | 74:23be10c32fa3 | 43 | |
IanBenzMaxim | 74:23be10c32fa3 | 44 | /// Set Master Secret in coprocessor. |
IanBenzMaxim | 74:23be10c32fa3 | 45 | /// @param[in] masterSecret New master secret to set. |
IanBenzMaxim | 74:23be10c32fa3 | 46 | virtual CmdResult setMasterSecret(const Secret & masterSecret) = 0; |
IanBenzMaxim | 74:23be10c32fa3 | 47 | |
IanBenzMaxim | 74:23be10c32fa3 | 48 | /// Compute Slave Secret in the coprocessor. |
IanBenzMaxim | 74:23be10c32fa3 | 49 | /// @note Uses the previously set Master Secret in computation. |
IanBenzMaxim | 74:23be10c32fa3 | 50 | /// @param[in] devicePage Page data stored on device. |
IanBenzMaxim | 74:23be10c32fa3 | 51 | /// @param[in] deviceScratchpad Scratchpad data stored on device. |
IanBenzMaxim | 74:23be10c32fa3 | 52 | /// @param[in] slaveSecretData Additional data fields as specified by device. |
IanBenzMaxim | 74:23be10c32fa3 | 53 | virtual CmdResult computeSlaveSecret(const DevicePage & devicePage, const DeviceScratchpad & deviceScratchpad, const SlaveSecretData & slaveSecretData) = 0; |
IanBenzMaxim | 74:23be10c32fa3 | 54 | |
IanBenzMaxim | 74:23be10c32fa3 | 55 | /// Compute Write MAC |
IanBenzMaxim | 74:23be10c32fa3 | 56 | /// @note Uses the previously computed Slave Secret in computation. |
IanBenzMaxim | 74:23be10c32fa3 | 57 | /// @param[in] writeMacData Additional data fields as specified by device. |
IanBenzMaxim | 74:23be10c32fa3 | 58 | /// @param[out] mac The computed MAC. |
IanBenzMaxim | 74:23be10c32fa3 | 59 | virtual CmdResult computeWriteMac(const WriteMacData & writeMacData, Mac & mac) const = 0; |
IanBenzMaxim | 74:23be10c32fa3 | 60 | |
IanBenzMaxim | 74:23be10c32fa3 | 61 | /// Compute Authentication MAC |
IanBenzMaxim | 74:23be10c32fa3 | 62 | /// @note Uses the previously computed Slave Secret in computation. |
IanBenzMaxim | 74:23be10c32fa3 | 63 | /// @param[in] devicePage Page data stored on device. |
IanBenzMaxim | 74:23be10c32fa3 | 64 | /// @param[in] challege Random challenge for device. |
IanBenzMaxim | 74:23be10c32fa3 | 65 | /// @param[in] authMacData Additional data fields as specified by device. |
IanBenzMaxim | 74:23be10c32fa3 | 66 | /// @param[out] mac The computed MAC. |
IanBenzMaxim | 74:23be10c32fa3 | 67 | virtual CmdResult computeAuthMac(const DevicePage & devicePage, const DeviceScratchpad & challenge, const AuthMacData & authMacData, Mac & mac) const = 0; |
IanBenzMaxim | 74:23be10c32fa3 | 68 | }; |
IanBenzMaxim | 74:23be10c32fa3 | 69 | } |
IanBenzMaxim | 73:2cecc1372acc | 70 | } |
IanBenzMaxim | 21:00c94aeb533e | 71 | |
IanBenzMaxim | 48:6f9208ae280e | 72 | #endif |