summaryrefslogtreecommitdiffhomepage
path: root/digital/zigbit/bitcloud/stack/Components/Security/ServiceProvider/include/private/sspSkkeHandler.h
blob: c9d881e0ff07d2beab3f7e8643262f38be34d78a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/**************************************************************************//**
  \file sspSkkeHandler.h

  \brief SKKE routine handler header file.

  \author
    Atmel Corporation: http://www.atmel.com \n
    Support email: avr@atmel.com

  Copyright (c) 2008-2011, Atmel Corporation. All rights reserved.
  Licensed under Atmel's Limited License Agreement (BitCloudTM).

  \internal
    History:
      29/11/07 ALuzhetsky - Created.
******************************************************************************/
#ifndef _SSPSKKEHANDLER_H
#define _SSPSKKEHANDLER_H

#ifdef _LINK_SECURITY_ 

/******************************************************************************
                        Includes section.
******************************************************************************/
#include <types.h>
#include <sspManager.h>
#include <sspAesHandler.h>

/******************************************************************************
                        Types section.
******************************************************************************/
typedef enum
{
  SKKE_STATE_IDLE,
  SKKE_STATE_CALCULATE_MACTAG1,
  SKKE_STATE_CALCULATE_MACTAG2,
  SKKE_STATE_CALCULATE_FINAL_MACTAG1,
  SKKE_STATE_CALCULATE_HASH1,
  SKKE_STATE_CALCULATE_HASH2,
} SspSkkeState_t;
/******************************************************************************
  TBD
******************************************************************************/
typedef struct
{
  SspSkkeState_t skkeState;
  uint8_t        macKey[SECURITY_KEY_SIZE];
  BEGIN_PACK
  struct PACK
  {
    volatile uint8_t keyExpander[SECURITY_KEY_SIZE];
    uint8_t macData[MAX_HASH_TEXT_SIZE];
    volatile uint8_t bitsExpander[16];
  };
  END_PACK
  union
  {
    SspKeyedHashMacReq_t keyedHashMacParam;
    SspBcbHashReq_t      bcbHashReqParam;
  };
} SspSkkeHandlerMem_t;

/******************************************************************************
                        Prototypes section.
******************************************************************************/
/*******************************************************************************
  Calculates parameters of Security-Key Key Esteblishment procedure.
  Parameters:
    none.
  Return:
    none.
********************************************************************************/
void sspCalculateSkkeParamsReqHandler(void);

/***************************************************************************\\**
  \brief Copies with mirroring "length" bytes from "src" to "dst".

  \param
    dst - destination memory.
    src - source memory.
    length - number of bytes to copy.
  \return
    none.
********************************************************************************/
INLINE void mirrorMemcpy(uint8_t *dst, uint8_t *src, uint8_t length)
{
  while(length)
    *(dst++) = *(src + --length);
}

#endif // _LINK_SECURITY_ 

#endif //_SSPSKKEHANDLER_H

// eof sspSkkeHandler.h