OpenZWave Library 1.6.1914
Loading...
Searching...
No Matches
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
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