Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

OneWire_Masters/ISha256MacCoprocessor.hpp

Committer:
IanBenzMaxim
Date:
2016-03-21
Revision:
21:00c94aeb533e
Child:
33:a4c015046956

File content as of revision 21:00c94aeb533e:

#ifndef ISHA256MACCOPROCESSOR_H
#define ISHA256MACCOPROCESSOR_H

#include <cstddef>
#include <cstdint>

class ISha256MacCoprocessor
{
public:
  enum CmdResult
  {
    Success,
    OperationFailure
  };

  static const std::size_t devicePage_len = 32;
  static const std::size_t deviceScratchpad_len = 32;
  static const std::size_t secret_len = 32;
  
  static const std::size_t mac_len = 32;
  
  static const std::size_t WriteMAC_data_len = 20;
  static const std::size_t AuthMAC_data_len = 12;
  static const std::size_t SSecret_data_len = 12;
  
  virtual CmdResult setMasterSecret(const std::uint8_t (&secret)[secret_len]) = 0;
  
  virtual CmdResult ComputeAndRead_WriteMAC(const std::uint8_t (&WriteMAC_data)[WriteMAC_data_len], std::uint8_t (&mac)[mac_len]) const = 0;
  virtual CmdResult ComputeAndRead_AuthMAC(const std::uint8_t (&devicePage)[devicePage_len], const std::uint8_t (&challenge)[deviceScratchpad_len],
                                      const std::uint8_t (&AuthMAC_data)[AuthMAC_data_len], std::uint8_t (&mac)[mac_len]) const = 0;
  virtual CmdResult Compute_SSecret(const std::uint8_t (&devicePage)[devicePage_len],
                               const std::uint8_t (&deviceScratchpad)[deviceScratchpad_len], const std::uint8_t (&SSecret_data)[SSecret_data_len]) = 0;
};

#endif