-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathScpResponseFactory.h
More file actions
140 lines (117 loc) · 3.1 KB
/
Copy pathScpResponseFactory.h
File metadata and controls
140 lines (117 loc) · 3.1 KB
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
secure-control-protocol
This is the header file for the ScpResponseFactory class.
SPDX-License-Identifier: GPL-3.0-or-later
Copyright (C) 2018 Benjamin Schilling
*/
#ifndef ScpResponseFactory_h
#define ScpResponseFactory_h
#include "Arduino.h"
#include "ScpDebug.h"
#include "ScpPassword.h"
#include "ScpCrypto.h"
#define PW_LENGTH 16
class ScpResponseFactory
{
public:
/**
* @brief Construct a new Scp Password object
*
*/
ScpResponseFactory();
// ====== Control Responses ======
/**
* @brief Create a Response Control string
*
* @param deviceID
* @param result
* @return String
*/
String createResponseControl(String deviceID, String action, String result);
/**
* @brief Create a Response Measure string
*
* @param deviceID
* @param value
* @param result
* @return String
*/
String createResponseMeasure(String deviceID, String action, double value, String result);
// ====== Security Responses ======
/**
* @brief Create a Response Security Fetch NVCN string
*
* @param deviceID
* @param ivString
* @return String
*/
String createResponseSecurityFetchNVCN(String deviceID, String nvcnString);
/**
* @brief Create a Response Security Pw Change string
*
* @param deviceID
* @param numberOfPasswordChanges
* @param result
* @return String
*/
String createResponseSecurityPwChange(String deviceID, String numberOfPasswordChanges, String result);
/**
* @brief Create a Response Security Rename string
*
* @param deviceID
* @param deviceName
* @param result
* @return String
*/
String createResponseSecurityRename(String deviceID, String deviceName, String result);
/**
* @brief Create a Response Security Wifi Config string
*
* @param deviceID
* @param result
* @return String
*/
String createResponseSecurityWifiConfig(String deviceID, String result);
/**
* @brief Create a Response Security Reset To Default string
*
* @param result
* @return String
*/
String createResponseSecurityResetToDefault(String deviceID, String result);
/**
* @brief Create a Response Security Restart string
*
* @param result
* @return String
*/
String createResponseSecurityRestart(String deviceID, String result);
// ====== Discovery Responses ======
/**
* @brief Create a Response Discover Hello object
*
* @param deviceID
* @param deviceType
* @param deviceName
* @param controlActions
* @param measureActions
* @param defaultPWresult
* @param hmac
* @return String
*/
String createResponseDiscoverHello(String deviceID, String deviceType, String deviceName, String controlActions, String measureActions, String currentPasswordNumber);
// ====== HMAC SHA512 Responses ======
/**
* @brief Create a response JSON string protected by an HMAC
*
* @param plainTextResponse
* @return String
*/
String createHmacResponse(String plainTextResponse);
private:
ScpDebug scpDebug;
ScpPassword scpPassword;
ScpCrypto scpCrypto;
rBase64generic<250> bigBase64;
};
#endif