Refactor Crypto profiles implementation
The Crypto profile at crypto-lib level (not in user API) uses int/char* value (see src/Common/crypto/sopc_crypto_profiles.h
).
- There is no way to check any consistency in all uses
- The uses (typically in ``) show a highly duplicated code, and really hard to maintain.
- Updates with new profile implies much rework each time and no consistency check is possible. (mistyiping/copy/paste..)
Replace the definitions by:
-#define SOPC_SecurityPolicy_Invalid_ID 0
-#define SOPC_SecurityPolicy_Basic256Sha256_URI "http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256"
-#define SOPC_SecurityPolicy_Basic256Sha256_ID 1
-#define SOPC_SecurityPolicy_Basic256_URI "http://opcfoundation.org/UA/SecurityPolicy#Basic256"
-#define SOPC_SecurityPolicy_Basic256_ID 2
-#define SOPC_SecurityPolicy_None_URI "http://opcfoundation.org/UA/SecurityPolicy#None"
-#define SOPC_SecurityPolicy_None_ID 3
-#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI "http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep"
-#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_ID 5
-#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI "http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss"
-#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_ID 6
+typedef enum SOPC_SecurityPolicy_ID {
+ SOPC_SecurityPolicy_Invalid_ID = 0,
+ SOPC_SecurityPolicy_Basic256Sha256_ID = 1,
+ SOPC_SecurityPolicy_Basic256_ID = 2,
+ SOPC_SecurityPolicy_None_ID = 3,
+ SOPC_SecurityPolicy_PubSub_Aes256_ID = 4,
+ SOPC_SecurityPolicy_Aes128Sha256RsaOaep_ID = 5,
+ SOPC_SecurityPolicy_Aes256Sha256RsaPss_ID = 6,
+ SOPC_SecurityPolicy_Last_ID
+} SOPC_SecurityPolicy_ID;
+
+typedef struct SOPC_SecurityPolicy_Config {
+ const char* uri;
+} SOPC_SecurityPolicy_Config;
+
+/** Table of all parameters specific to every security policy */
+S2OPC_COMMON_EXPORT extern SOPC_SecurityPolicy_Config SOPC_SecurityPolicy_cfg[SOPC_SecurityPolicy_Last_ID];
See examples of use and possible simplifications in branch jch-1184-crypto-abs-layer