OpenZWave Library 1.6.1914
Security.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2//
3// Security.h
4//
5// Implementation of the Z-Wave COMMAND_CLASS_Security
6//
7// Copyright (c) 2010 Mal Lansell <openzwave@lansell.org>
8//
9// SOFTWARE NOTICE AND LICENSE
10//
11// This file is part of OpenZWave.
12//
13// OpenZWave is free software: you can redistribute it and/or modify
14// it under the terms of the GNU Lesser General Public License as published
15// by the Free Software Foundation, either version 3 of the License,
16// or (at your option) any later version.
17//
18// OpenZWave is distributed in the hope that it will be useful,
19// but WITHOUT ANY WARRANTY; without even the implied warranty of
20// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21// GNU Lesser General Public License for more details.
22//
23// You should have received a copy of the GNU Lesser General Public License
24// along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
25//
26//-----------------------------------------------------------------------------
27
28#ifndef _Security_H
29#define _Security_H
30
31#include <ctime>
32#include "aes/aescpp.h"
34
35namespace OpenZWave
36{
37 namespace Internal
38 {
39 namespace CC
40 {
41
43 {
55 };
56
58 {
60 };
61
66 class Security: public CommandClass
67 {
68 public:
69 static CommandClass* Create(uint32 const _homeId, uint8 const _nodeId)
70 {
71 return new Security(_homeId, _nodeId);
72 }
73 virtual ~Security();
74
76 {
77 return 0x98;
78 }
79 static string const StaticGetCommandClassName()
80 {
81 return "COMMAND_CLASS_SECURITY";
82 }
83 bool Init(uint32 const _instance = 1);
85 // From CommandClass
86 bool RequestState(uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue) override;
87 bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _instance, Driver::MsgQueue const _queue) override;
88 virtual uint8 const GetCommandClassId() const override
89 {
91 }
92 virtual string const GetCommandClassName() const override
93 {
95 }
96 virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override;
97 void SendMsg(Msg* _msg);
98
99 protected:
100 void CreateVars(uint8 const _instance) override;
101
102 private:
103 Security(uint32 const _homeId, uint8 const _nodeId);
104 bool HandleSupportedReport(uint8 const* _data, uint32 const _length, uint32 const _instance = 1);
105
106 bool m_schemeagreed;
107 bool m_secured[255];
108
109 };
110 } // namespace CC
111 } // namespace Internal
112} // namespace OpenZWave
113
114#endif
115
unsigned short uint16
Definition: Defs.h:88
unsigned int uint32
Definition: Defs.h:91
unsigned char uint8
Definition: Defs.h:85
MsgQueue
Definition: Driver.h:660
Base class for all Z-Wave command classes.
Definition: CommandClass.h:61
void CreateVars()
Definition: CommandClass.cpp:841
Implements COMMAND_CLASS_SECURITY (0x98), a Z-Wave device command class.
Definition: Security.h:67
static CommandClass * Create(uint32 const _homeId, uint8 const _nodeId)
Definition: Security.h:69
virtual bool HandleMsg(uint8 const *_data, uint32 const _length, uint32 const _instance=1) override
Definition: Security.cpp:141
virtual ~Security()
Definition: Security.cpp:62
bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _instance, Driver::MsgQueue const _queue) override
Definition: Security.cpp:121
bool ExchangeNetworkKeys()
Definition: Security.cpp:83
virtual string const GetCommandClassName() const override
Definition: Security.h:92
static string const StaticGetCommandClassName()
Definition: Security.h:79
bool Init(uint32 const _instance=1)
Definition: Security.cpp:66
virtual uint8 const GetCommandClassId() const override
Definition: Security.h:88
static uint8 const StaticGetCommandClassId()
Definition: Security.h:75
bool RequestState(uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue) override
Definition: Security.cpp:105
Message object to be passed to and from devices on the Z-Wave network.
Definition: Msg.h:51
SecurityCmd
Definition: Security.h:43
@ SecurityCmd_MessageEncap
Definition: Security.h:53
@ SecurityCmd_SupportedGet
Definition: Security.h:44
@ SecurityCmd_SchemeReport
Definition: Security.h:47
@ SecurityCmd_SchemeInherit
Definition: Security.h:50
@ SecurityCmd_MessageEncapNonceGet
Definition: Security.h:54
@ SecurityCmd_NetworkKeySet
Definition: Security.h:48
@ SecurityCmd_NonceReport
Definition: Security.h:52
@ SecurityCmd_NonceGet
Definition: Security.h:51
@ SecurityCmd_NetworkKeyVerify
Definition: Security.h:49
@ SecurityCmd_SupportedReport
Definition: Security.h:45
@ SecurityCmd_SchemeGet
Definition: Security.h:46
SecurityScheme
Definition: Security.h:58
@ SecurityScheme_Zero
Definition: Security.h:59
Definition: Bitfield.cpp:31