/* 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 #if defined(UA_ENABLE_ENCRYPTION_MBEDTLS) || defined(UA_ENABLE_PUBSUB_ENCRYPTION) #include #include #include // MBEDTLS_ENTROPY_HARDWARE_ALT should be defined if your hardware does not supportd platform entropy #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); int UA_mbedTLS_LoadPrivateKey(const UA_ByteString *key, mbedtls_pk_context *target, void *p_rng); UA_StatusCode UA_mbedTLS_LoadLocalCertificate(const UA_ByteString *certData, UA_ByteString *target); UA_ByteString UA_mbedTLS_CopyDataFormatAware(const UA_ByteString *data); _UA_END_DECLS #endif #endif /* UA_SECURITYPOLICY_MBEDTLS_COMMON_H_ */