123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- #ifndef UA_PLUGIN_SECURITYPOLICY_H_
- #define UA_PLUGIN_SECURITYPOLICY_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "ua_types.h"
- #include "ua_types_generated.h"
- #include "ua_plugin_log.h"
- extern const UA_ByteString UA_SECURITY_POLICY_NONE_URI;
- struct UA_SecurityPolicy;
- typedef struct UA_SecurityPolicy UA_SecurityPolicy;
- typedef struct {
- UA_String signatureAlgorithmUri;
-
- UA_StatusCode (*verify)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext, const UA_ByteString *message,
- const UA_ByteString *signature) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*sign)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext, const UA_ByteString *message,
- UA_ByteString *signature) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- size_t (*getLocalSignatureSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemoteSignatureSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
- UA_String encryptionAlgorithmUri;
-
- UA_StatusCode(*encrypt)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext,
- UA_ByteString *data) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode(*decrypt)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext,
- UA_ByteString *data) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- size_t (*getLocalEncryptionKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemoteEncryptionKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
- } UA_SecurityPolicyCryptoModule;
- typedef struct {
-
- UA_StatusCode (*makeCertificateThumbprint)(const UA_SecurityPolicy *securityPolicy,
- const UA_ByteString *certificate,
- UA_ByteString *thumbprint)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*compareCertificateThumbprint)(const UA_SecurityPolicy *securityPolicy,
- const UA_ByteString *certificateThumbprint)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
- UA_SecurityPolicyCryptoModule cryptoModule;
- } UA_SecurityPolicyAsymmetricModule;
- typedef struct {
-
- UA_StatusCode (*generateKey)(const UA_SecurityPolicy *securityPolicy,
- const UA_ByteString *secret,
- const UA_ByteString *seed, UA_ByteString *out)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*generateNonce)(const UA_SecurityPolicy *securityPolicy,
- UA_ByteString *out)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
- UA_SecurityPolicyCryptoModule cryptoModule;
- size_t encryptionBlockSize;
- size_t signingKeyLength;
- } UA_SecurityPolicySymmetricModule;
- typedef struct {
-
- UA_StatusCode (*newContext)(const UA_SecurityPolicy *securityPolicy,
- const UA_ByteString *remoteCertificate,
- void **channelContext)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- void (*deleteContext)(void *channelContext);
-
- UA_StatusCode (*setLocalSymEncryptingKey)(void *channelContext,
- const UA_ByteString *key)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*setLocalSymSigningKey)(void *channelContext,
- const UA_ByteString *key)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*setLocalSymIv)(void *channelContext,
- const UA_ByteString *iv)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*setRemoteSymEncryptingKey)(void *channelContext,
- const UA_ByteString *key)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*setRemoteSymSigningKey)(void *channelContext,
- const UA_ByteString *key)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*setRemoteSymIv)(void *channelContext,
- const UA_ByteString *iv)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*compareCertificate)(const void *channelContext,
- const UA_ByteString *certificate)
- UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- size_t (*getRemoteAsymPlainTextBlockSize)(const void *channelContext);
-
- size_t (*getRemoteAsymEncryptionBufferLengthOverhead)(const void *channelContext,
- size_t maxEncryptionLength);
- } UA_SecurityPolicyChannelModule;
- struct UA_SecurityPolicy {
-
- void *policyContext;
-
- UA_ByteString policyUri;
-
- UA_ByteString localCertificate;
-
- UA_SecurityPolicyAsymmetricModule asymmetricModule;
- UA_SecurityPolicySymmetricModule symmetricModule;
- UA_SecurityPolicyChannelModule channelModule;
- UA_Logger logger;
-
- void (*deleteMembers)(UA_SecurityPolicy *policy);
- };
- typedef struct {
- UA_SecurityPolicy securityPolicy;
- UA_EndpointDescription endpointDescription;
- } UA_Endpoint;
- #ifdef __cplusplus
- }
- #endif
- #endif
|