blob: f86b19ef86b22af8f976a55cc4bcc1aac82d9419 [file] [log] [blame]
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright 2014-2017 (c) Fraunhofer IOSB (Author: Julius Pfrommer)
* Copyright 2014, 2017 (c) Florian Palm
* Copyright 2015 (c) Oleksiy Vasylyev
* Copyright 2017 (c) Stefan Profanter, fortiss GmbH
* Copyright 2017 (c) Mark Giraud, Fraunhofer IOSB
*/
#include "ua_server_internal.h"
#include "ua_services.h"
#include "ua_securechannel_manager.h"
void
Service_OpenSecureChannel(UA_Server *server, UA_SecureChannel *channel,
const UA_OpenSecureChannelRequest *request,
UA_OpenSecureChannelResponse *response) {
if(request->requestType == UA_SECURITYTOKENREQUESTTYPE_RENEW) {
/* Renew the channel */
response->responseHeader.serviceResult =
UA_SecureChannelManager_renew(&server->secureChannelManager,
channel, request, response);
/* Logging */
if(response->responseHeader.serviceResult == UA_STATUSCODE_GOOD) {
UA_LOG_DEBUG_CHANNEL(&server->config.logger, channel,
"SecureChannel renewed");
} else {
UA_LOG_DEBUG_CHANNEL(&server->config.logger, channel,
"Renewing SecureChannel failed");
}
return;
}
/* Must be ISSUE or RENEW */
if(request->requestType != UA_SECURITYTOKENREQUESTTYPE_ISSUE) {
response->responseHeader.serviceResult = UA_STATUSCODE_BADINTERNALERROR;
return;
}
/* Open the channel */
response->responseHeader.serviceResult =
UA_SecureChannelManager_open(&server->secureChannelManager, channel,
request, response);
/* Logging */
if(response->responseHeader.serviceResult == UA_STATUSCODE_GOOD) {
UA_LOG_INFO_CHANNEL(&server->config.logger, channel,
"Opened SecureChannel");
} else {
UA_LOG_INFO_CHANNEL(&server->config.logger, channel,
"Opening a SecureChannel failed");
}
}
/* The server does not send a CloseSecureChannel response */
void
Service_CloseSecureChannel(UA_Server *server, UA_SecureChannel *channel) {
UA_LOG_INFO_CHANNEL(&server->config.logger, channel, "CloseSecureChannel");
UA_SecureChannelManager_close(&server->secureChannelManager,
channel->securityToken.channelId);
}