summaryrefslogtreecommitdiff
path: root/digital/zigbit/bitcloud/stack/Components/APS/include/private/apsTransportTrustKey.h
blob: 3a7c86267bd4d5698f686c8cca5f92038b78af9b (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
/**************************************************************************//**
  \file apsTransportTrustKey.h

  \brief Interface of transport key from the trust center.

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

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

  \internal
   History:
    2011-05-08 Max Gekk - Created.
   Last change:
    $Id: apsTransportTrustKey.h 17813 2011-07-04 14:11:12Z dloskutnikov $
 ******************************************************************************/
#if !defined _APS_TRANSPORT_TRUST_KEY_H
#define _APS_TRANSPORT_TRUST_KEY_H

#if defined _SECURITY_ && defined _LINK_SECURITY_ 
/******************************************************************************
                                 Includes section
 ******************************************************************************/
#include <apsTransportKey.h>

/******************************************************************************
                                  Types section
 ******************************************************************************/
BEGIN_PACK
/** Type of Transport-Key Command Frame (see ZigBee spec r19, Figure 4.8
 * with trust center master or link key descriptor field (see Figure 4.9). */
typedef struct PACK _ApsTransportTrustKeyFrame_t
{
  /** Common part of APS transport key command frame. */
  ApsTransportKeyCommonFrame_t common;
  /** The key sub-field shall contain the master key that should be used to set
   * up link keys with the Trust Center or link key. */
  uint8_t key[SECURITY_KEY_SIZE];
  /** The destination address sub-field shall contain the address of the device
   * which should use this master or link key. ZigBee spec r19, page 480. */
  uint8_t destinationAddress[sizeof(ExtAddr_t)];
  /** The source address sub-field shall contain the address of the device (for
   * example, the Trust Center) which originally sent this master key.
   * See ZigBee Specification r19, 4.4.9.2.3.1, page 480. */
  uint8_t sourceAddress[sizeof(ExtAddr_t)];
} ApsTransportTrustKeyFrame_t;
END_PACK

/******************************************************************************
                                Prototypes section
 ******************************************************************************/
#if defined _TRUST_CENTRE_
/**************************************************************************//**
  \brief Checks specific parameters of Transport Trust Key request.

  \param[in] req - pointer to parameters of APSME-TRANSPORT-KEY.request.
  \return Pointer to function for preparing and sending APS Transport Key command.
 ******************************************************************************/
APS_PRIVATE ApsTransportKeyCommand_t
apsCheckTransportTrustKeyReq(APS_TransportKeyReq_t *const req);
#endif /* _TRUST_CENTRE_ */

/**************************************************************************//**
  \brief Process an incoming trust link or master key.

  \param[in] commandInd - pointer to received command descriptor.

  \return 'false' if structure commandInd->nwkDataInd is used otherwise 'true'.
 ******************************************************************************/
APS_PRIVATE bool apsTransportTrustKeyInd(const ApsCommandInd_t *const commandInd);

#else
#define apsTransportTrustKeyInd(commandInd) (true)
#endif /* _SECURITY_ and _LINK_SECURITY_ */

#if !(defined _SECURITY_ && defined _LINK_SECURITY_ && defined _TRUST_CENTRE_)

#define apsCheckTransportTrustKeyReq(req) NULL
#endif
#endif /* _APS_TRANSPORT_TRUST_KEY_H */
/* eof apsTransportTrustKey.h */