blob: 7d7f44dc109e574abd45d2a970c326865e1117a5 [file] [log] [blame]
/* This work is licensed under a Creative Commons CCZero 1.0 Universal License.
* See http://creativecommons.org/publicdomain/zero/1.0/ for more information.
*
* Copyright 2019 (c) Fraunhofer IOSB (Author: Julius Pfrommer)
*/
#ifndef UA_SECURITYPOLICY_MBEDTLS_COMMON_H_
#define UA_SECURITYPOLICY_MBEDTLS_COMMON_H_
#include <open62541/plugin/securitypolicy.h>
#ifdef UA_ENABLE_ENCRYPTION
#include <mbedtls/md.h>
#include <mbedtls/x509_crt.h>
#include <mbedtls/ctr_drbg.h>
#define UA_SHA1_LENGTH 20
_UA_BEGIN_DECLS
void
swapBuffers(UA_ByteString *const bufA, UA_ByteString *const bufB);
void
mbedtls_hmac(mbedtls_md_context_t *context, const UA_ByteString *key,
const UA_ByteString *in, unsigned char *out);
UA_StatusCode
mbedtls_generateKey(mbedtls_md_context_t *context,
const UA_ByteString *secret, const UA_ByteString *seed,
UA_ByteString *out);
UA_StatusCode
mbedtls_verifySig_sha1(mbedtls_x509_crt *certificate, const UA_ByteString *message,
const UA_ByteString *signature);
UA_StatusCode
mbedtls_sign_sha1(mbedtls_pk_context *localPrivateKey,
mbedtls_ctr_drbg_context *drbgContext,
const UA_ByteString *message,
UA_ByteString *signature);
UA_StatusCode
mbedtls_thumbprint_sha1(const UA_ByteString *certificate,
UA_ByteString *thumbprint);
/* Set the hashing scheme before calling
* E.g. mbedtls_rsa_set_padding(context, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA1); */
UA_StatusCode
mbedtls_encrypt_rsaOaep(mbedtls_rsa_context *context,
mbedtls_ctr_drbg_context *drbgContext,
UA_ByteString *data, const size_t plainTextBlockSize);
UA_StatusCode
mbedtls_decrypt_rsaOaep(mbedtls_pk_context *localPrivateKey,
mbedtls_ctr_drbg_context *drbgContext,
UA_ByteString *data);
_UA_END_DECLS
#endif
#endif /* UA_SECURITYPOLICY_MBEDTLS_COMMON_H_ */