123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- _UA_BEGIN_DECLS
- extern UA_EXPORT const UA_ByteString UA_SECURITY_POLICY_NONE_URI;
- struct UA_SecurityPolicy;
- typedef struct UA_SecurityPolicy UA_SecurityPolicy;
- typedef struct {
- UA_String uri;
-
- UA_StatusCode (*verify)(const UA_SecurityPolicy *securityPolicy,
- void *channelContext, const UA_ByteString *message,
- const UA_ByteString *signature) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*sign)(const UA_SecurityPolicy *securityPolicy,
- 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);
-
- size_t (*getLocalKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemoteKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
- } UA_SecurityPolicySignatureAlgorithm;
- typedef struct {
- UA_String uri;
-
- UA_StatusCode (*encrypt)(const UA_SecurityPolicy *securityPolicy,
- void *channelContext,
- UA_ByteString *data) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- UA_StatusCode (*decrypt)(const UA_SecurityPolicy *securityPolicy,
- void *channelContext,
- UA_ByteString *data) UA_FUNC_ATTR_WARN_UNUSED_RESULT;
-
- size_t (*getLocalKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemoteKeyLength)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getLocalBlockSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemoteBlockSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getLocalPlainTextBlockSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
-
- size_t (*getRemotePlainTextBlockSize)(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext);
- } UA_SecurityPolicyEncryptionAlgorithm;
- typedef struct {
-
- UA_SecurityPolicySignatureAlgorithm signatureAlgorithm;
-
- UA_SecurityPolicyEncryptionAlgorithm encryptionAlgorithm;
- } 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;
-
- size_t secureChannelNonceLength;
- UA_SecurityPolicyCryptoModule cryptoModule;
- } 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;
- } UA_SecurityPolicyChannelModule;
- struct UA_SecurityPolicy {
-
- void *policyContext;
-
- UA_ByteString policyUri;
-
- UA_ByteString localCertificate;
-
- UA_SecurityPolicyAsymmetricModule asymmetricModule;
- UA_SecurityPolicySymmetricModule symmetricModule;
- UA_SecurityPolicySignatureAlgorithm certificateSigningAlgorithm;
- UA_SecurityPolicyChannelModule channelModule;
- UA_CertificateVerification *certificateVerification;
- const UA_Logger *logger;
-
- UA_StatusCode (*updateCertificateAndPrivateKey)(UA_SecurityPolicy *policy,
- const UA_ByteString newCertificate,
- const UA_ByteString newPrivateKey);
-
- void (*deleteMembers)(UA_SecurityPolicy *policy);
- };
- size_t
- UA_SecurityPolicy_getRemoteAsymEncryptionBufferLengthOverhead(const UA_SecurityPolicy *securityPolicy,
- const void *channelContext,
- size_t maxEncryptionLength);
- UA_SecurityPolicy *
- UA_SecurityPolicy_getSecurityPolicyByUri(const UA_Server *server,
- const UA_ByteString *securityPolicyUri);
- _UA_END_DECLS
|