libiec61850  1.5.3
iso_connection_parameters.h
Go to the documentation of this file.
1 /*
2  * iso_connection_parameters.h
3  *
4  * Copyright 2013-2018 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef ISO_CONNECTION_PARAMETERS_H_
25 #define ISO_CONNECTION_PARAMETERS_H_
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #include "tls_config.h"
32 
42 typedef enum
43 {
46 
49 
52 
54  ACSE_AUTH_TLS = 3
56 
57 
58 typedef struct sAcseAuthenticationParameter* AcseAuthenticationParameter;
59 
61 {
63 
64  union
65  {
66  struct
67  {
68  uint8_t* octetString;
70  } password; /* for mechanism = ACSE_AUTH_PASSWORD */
71 
72  struct
73  {
74  uint8_t* buf;
75  int length;
76  } certificate; /* for mechanism = ACSE_AUTH_CERTIFICATE or ACSE_AUTH_TLS */
77 
78  } value;
79 };
80 
81 LIB61850_API AcseAuthenticationParameter
83 
84 LIB61850_API void
85 AcseAuthenticationParameter_destroy(AcseAuthenticationParameter self);
86 
87 LIB61850_API void
89 
90 LIB61850_API void
91 AcseAuthenticationParameter_setPassword(AcseAuthenticationParameter self, char* password);
92 
93 
104 typedef bool
105 (*AcseAuthenticator)(void* parameter, AcseAuthenticationParameter authParameter, void** securityToken, IsoApplicationReference* appReference);
106 
112 typedef struct {
113  uint8_t size;
114  uint8_t value[4];
115 } TSelector;
116 
122 typedef struct {
123  uint8_t size;
124  uint8_t value[16];
125 } SSelector;
126 
132 typedef struct {
133  uint8_t size;
134  uint8_t value[16];
135 } PSelector;
136 
138 {
139  AcseAuthenticationParameter acseAuthParameter;
140 
141 #if (CONFIG_MMS_SUPPORT_TLS == 1)
142  TLSConfiguration tlsConfiguration;
143 #endif
144 
145  const char* hostname;
146  int tcpPort;
147 
148  const char* localIpAddress;
150 
151  uint8_t remoteApTitle[10];
157 
158 
159  uint8_t localApTitle[10];
165 
166 };
167 
168 typedef struct sIsoConnectionParameters* IsoConnectionParameters;
169 
178 LIB61850_API IsoConnectionParameters
180 
189 LIB61850_API void
190 IsoConnectionParameters_destroy(IsoConnectionParameters self);
191 
192 
193 LIB61850_API void
194 IsoConnectionParameters_setTlsConfiguration(IsoConnectionParameters self, TLSConfiguration tlsConfig);
195 
204 LIB61850_API void
206  AcseAuthenticationParameter acseAuthParameter);
207 
218 LIB61850_API void
219 IsoConnectionParameters_setTcpParameters(IsoConnectionParameters self, const char* hostname, int tcpPort);
220 
231 LIB61850_API void
232 IsoConnectionParameters_setLocalTcpParameters(IsoConnectionParameters self, const char* localIpAddress, int localTcpPort);
233 
234 
247 LIB61850_API void
248 IsoConnectionParameters_setRemoteApTitle(IsoConnectionParameters self, const char* apTitle, int aeQualifier);
249 
262 LIB61850_API void
263 IsoConnectionParameters_setRemoteAddresses(IsoConnectionParameters self, PSelector pSelector, SSelector sSelector, TSelector tSelector);
264 
277 LIB61850_API void
278 IsoConnectionParameters_setLocalApTitle(IsoConnectionParameters self, const char* apTitle, int aeQualifier);
279 
292 LIB61850_API void
293 IsoConnectionParameters_setLocalAddresses(IsoConnectionParameters self, PSelector pSelector, SSelector sSelector, TSelector tSelector);
294 
297 #ifdef __cplusplus
298 }
299 #endif
300 
301 #endif /* ISO_CONNECTION_PARAMETERS_H_ */
LIB61850_API void IsoConnectionParameters_destroy(IsoConnectionParameters self)
Destroy an IsoConnectionParameters instance (FOR LIBRARY INTERNAL USE)
LIB61850_API void IsoConnectionParameters_setTcpParameters(IsoConnectionParameters self, const char *hostname, int tcpPort)
Set TCP parameters (FOR LIBRARY INTERNAL USE)
LIB61850_API void IsoConnectionParameters_setLocalAddresses(IsoConnectionParameters self, PSelector pSelector, SSelector sSelector, TSelector tSelector)
set local addresses for the lower layers
bool(* AcseAuthenticator)(void *parameter, AcseAuthenticationParameter authParameter, void **securityToken, IsoApplicationReference *appReference)
Callback function to authenticate a client.
Definition: iso_connection_parameters.h:105
LIB61850_API AcseAuthenticationParameter AcseAuthenticationParameter_create(void)
LIB61850_API void AcseAuthenticationParameter_setPassword(AcseAuthenticationParameter self, char *password)
LIB61850_API void AcseAuthenticationParameter_setAuthMechanism(AcseAuthenticationParameter self, AcseAuthenticationMechanism mechanism)
LIB61850_API void IsoConnectionParameters_setRemoteApTitle(IsoConnectionParameters self, const char *apTitle, int aeQualifier)
set the remote AP-Title and AE-Qualifier
LIB61850_API void IsoConnectionParameters_setAcseAuthenticationParameter(IsoConnectionParameters self, AcseAuthenticationParameter acseAuthParameter)
set the authentication parameter
LIB61850_API IsoConnectionParameters IsoConnectionParameters_create(void)
create a new IsoConnectionParameters instance (FOR LIBRARY INTERNAL USE)
LIB61850_API void IsoConnectionParameters_setRemoteAddresses(IsoConnectionParameters self, PSelector pSelector, SSelector sSelector, TSelector tSelector)
set remote addresses for the lower layers
AcseAuthenticationMechanism
authentication mechanism used by AcseAuthenticator
Definition: iso_connection_parameters.h:43
LIB61850_API void IsoConnectionParameters_setLocalApTitle(IsoConnectionParameters self, const char *apTitle, int aeQualifier)
set the local AP-Title and AE-Qualifier
LIB61850_API void IsoConnectionParameters_setLocalTcpParameters(IsoConnectionParameters self, const char *localIpAddress, int localTcpPort)
Set Local TCP parameters (FOR LIBRARY INTERNAL USE)
LIB61850_API void AcseAuthenticationParameter_destroy(AcseAuthenticationParameter self)
LIB61850_API void IsoConnectionParameters_setTlsConfiguration(IsoConnectionParameters self, TLSConfiguration tlsConfig)
@ ACSE_AUTH_NONE
Definition: iso_connection_parameters.h:45
@ ACSE_AUTH_PASSWORD
Definition: iso_connection_parameters.h:48
@ ACSE_AUTH_CERTIFICATE
Definition: iso_connection_parameters.h:51
@ ACSE_AUTH_TLS
Definition: iso_connection_parameters.h:54
ISO application reference (specifies an ISO application endpoint)
Definition: mms_common.h:169
OSI presentation (P) selector.
Definition: iso_connection_parameters.h:132
uint8_t size
Definition: iso_connection_parameters.h:133
OSI session selector.
Definition: iso_connection_parameters.h:122
uint8_t size
Definition: iso_connection_parameters.h:123
COTP T selector.
Definition: iso_connection_parameters.h:112
uint8_t size
Definition: iso_connection_parameters.h:113
Definition: iso_connection_parameters.h:61
struct sAcseAuthenticationParameter::@0::@2 certificate
int length
Definition: iso_connection_parameters.h:75
struct sAcseAuthenticationParameter::@0::@1 password
AcseAuthenticationMechanism mechanism
Definition: iso_connection_parameters.h:62
uint8_t * buf
Definition: iso_connection_parameters.h:74
int passwordLength
Definition: iso_connection_parameters.h:69
uint8_t * octetString
Definition: iso_connection_parameters.h:68
union sAcseAuthenticationParameter::@0 value
Definition: iso_connection_parameters.h:138
SSelector remoteSSelector
Definition: iso_connection_parameters.h:155
int tcpPort
Definition: iso_connection_parameters.h:146
PSelector localPSelector
Definition: iso_connection_parameters.h:162
SSelector localSSelector
Definition: iso_connection_parameters.h:163
AcseAuthenticationParameter acseAuthParameter
Definition: iso_connection_parameters.h:139
int remoteAEQualifier
Definition: iso_connection_parameters.h:153
TSelector localTSelector
Definition: iso_connection_parameters.h:164
TSelector remoteTSelector
Definition: iso_connection_parameters.h:156
const char * hostname
Definition: iso_connection_parameters.h:145
int localTcpPort
Definition: iso_connection_parameters.h:149
uint8_t remoteApTitle[10]
Definition: iso_connection_parameters.h:151
int remoteApTitleLen
Definition: iso_connection_parameters.h:152
const char * localIpAddress
Definition: iso_connection_parameters.h:148
uint8_t localApTitle[10]
Definition: iso_connection_parameters.h:159
int localAEQualifier
Definition: iso_connection_parameters.h:161
PSelector remotePSelector
Definition: iso_connection_parameters.h:154
int localApTitleLen
Definition: iso_connection_parameters.h:160