Go to the documentation of this file.
27 #ifndef SOPC_CRYPTO_PROFILES_H_
28 #define SOPC_CRYPTO_PROFILES_H_
47 #define SOPC_SecurityPolicy_Invalid_ID 0
48 #define SOPC_SecurityPolicy_Basic256Sha256_URI "http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256"
49 #define SOPC_SecurityPolicy_Basic256Sha256_ID 1
50 #define SOPC_SecurityPolicy_Basic256_URI "http://opcfoundation.org/UA/SecurityPolicy#Basic256"
51 #define SOPC_SecurityPolicy_Basic256_ID 2
52 #define SOPC_SecurityPolicy_None_URI "http://opcfoundation.org/UA/SecurityPolicy#None"
53 #define SOPC_SecurityPolicy_None_ID 3
54 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI "http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep"
55 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_ID 5
56 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI "http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss"
57 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_ID 6
60 #define SOPC_SecurityPolicy_Basic256Sha256_SymmLen_Block 16
61 #define SOPC_SecurityPolicy_Basic256Sha256_SymmLen_CryptoKey 32
62 #define SOPC_SecurityPolicy_Basic256Sha256_SymmLen_SignKey 32
63 #define SOPC_SecurityPolicy_Basic256Sha256_SymmLen_Signature 32
64 #define SOPC_SecurityPolicy_Basic256Sha256_CertLen_Thumbprint 20
65 #define SOPC_SecurityPolicy_Basic256Sha256_AsymLen_OAEP_Hash 20
66 #define SOPC_SecurityPolicy_Basic256Sha256_AsymLen_KeyMinBits 2048
67 #define SOPC_SecurityPolicy_Basic256Sha256_AsymLen_KeyMaxBits 4096
68 #define SOPC_SecurityPolicy_Basic256Sha256_URI_SignAlgo "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
69 #define SOPC_SecurityPolicy_Basic256Sha256_SecureChannelNonceLength 32
72 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_SymmLen_Block 16
73 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_SymmLen_CryptoKey 16
74 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_SymmLen_SignKey 32
75 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_SymmLen_Signature 32
76 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_CertLen_Thumbprint 20
77 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_AsymLen_OAEP_Hash 20
78 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_AsymLen_KeyMinBits 2048
79 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_AsymLen_KeyMaxBits 4096
80 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI_SignAlgo "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
81 #define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_SecureChannelNonceLength 32
84 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_SymmLen_Block 16
85 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_SymmLen_CryptoKey 32
86 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_SymmLen_SignKey 32
87 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_SymmLen_Signature 32
88 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_CertLen_Thumbprint 20
89 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_AsymLen_OAEP_Hash 32
90 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_AsymLen_KeyMinBits 2048
91 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_AsymLen_KeyMaxBits 4096
92 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI_SignAlgo "http://opcfoundation.org/UA/security/rsa-pss-sha2-256"
93 #define SOPC_SecurityPolicy_Aes256Sha256RsaPss_SecureChannelNonceLength 32
96 #define SOPC_SecurityPolicy_Basic256_SymmLen_Block 16
97 #define SOPC_SecurityPolicy_Basic256_SymmLen_CryptoKey 32
98 #define SOPC_SecurityPolicy_Basic256_SymmLen_SignKey 24
99 #define SOPC_SecurityPolicy_Basic256_SymmLen_Signature 20
100 #define SOPC_SecurityPolicy_Basic256_CertLen_Thumbprint 20
101 #define SOPC_SecurityPolicy_Basic256_AsymLen_OAEP_Hash 20
102 #define SOPC_SecurityPolicy_Basic256_AsymLen_KeyMinBits 1024
103 #define SOPC_SecurityPolicy_Basic256_AsymLen_KeyMaxBits 2048
104 #define SOPC_SecurityPolicy_Basic256_URI_SignAlgo "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
105 #define SOPC_SecurityPolicy_Basic256_SecureChannelNonceLength 32
117 #define SOPC_SecurityPolicy_PubSub_Aes256_URI "http://opcfoundation.org/UA/SecurityPolicy#PubSub-Aes256-CTR"
118 #define SOPC_SecurityPolicy_PubSub_Aes256_ID 4
121 #define SOPC_SecurityPolicy_PubSub_Aes256_SymmLen_CryptoKey 32
122 #define SOPC_SecurityPolicy_PubSub_Aes256_SymmLen_SignKey 32
123 #define SOPC_SecurityPolicy_PubSub_Aes256_SymmLen_Signature 32
124 #define SOPC_SecurityPolicy_PubSub_Aes256_SymmLen_KeyNonce 4
125 #define SOPC_SecurityPolicy_PubSub_Aes256_SymmLen_MessageRandom 4
136 const uint8_t* pInput,
137 uint32_t lenPlainText,
143 const uint8_t* pInput,
144 uint32_t lenCipherText,
150 const uint8_t* pInput,
155 const uint8_t* pInput,
158 const uint8_t* pSignature);
170 const uint8_t* pInput,
171 uint32_t lenPlainText,
175 const uint8_t* pInput,
176 uint32_t lenCipherText,
179 uint32_t* lenWritten);
181 const uint8_t* pInput,
184 uint8_t* pSignature);
186 const uint8_t* pInput,
189 const uint8_t* pSignature);
193 const uint8_t* pInput,
198 uint32_t uSequenceNumber,
SOPC_ReturnStatus FnSymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, const uint8_t *pSignature)
Definition: sopc_crypto_profiles.h:154
#define S2OPC_COMMON_EXPORT
Definition: s2opc_common_export.h:33
FnGenerateRandom *const pFnGenRnd
Definition: sopc_crypto_profiles.h:224
SOPC_ReturnStatus FnGenerateRandom(const SOPC_CryptoProvider *pProvider, SOPC_ExposedBuffer *pData, uint32_t lenData)
Definition: sopc_crypto_profiles.h:159
The signed public key representation, or a chained list of such keys.
Definition: key_manager_lib.h:66
FnAsymmetricEncrypt *const pFnAsymEncrypt
Definition: sopc_crypto_profiles.h:226
const uint32_t SecurityPolicyID
Definition: sopc_crypto_profiles.h:244
SOPC_ReturnStatus FnCertificateVerify(const SOPC_CryptoProvider *pCrypto, const SOPC_CertificateList *pCert)
Definition: sopc_crypto_profiles.h:190
FnSymmetricSign *const pFnSymmSign
Definition: sopc_crypto_profiles.h:246
SOPC_ReturnStatus FnAsymmetricEncrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenPlainText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput)
Definition: sopc_crypto_profiles.h:169
FnDerivePseudoRandomData *const pFnDeriveData
Definition: sopc_crypto_profiles.h:225
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile sopc_g_cpAes256Sha256RsaPss
SOPC_ReturnStatus FnSymmetricDecrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenCipherText, const SOPC_ExposedBuffer *pKey, const SOPC_ExposedBuffer *pIV, uint8_t *pOutput, uint32_t lenOutput)
Definition: sopc_crypto_profiles.h:142
FnAsymmetricVerify *const pFnAsymVerify
Definition: sopc_crypto_profiles.h:229
FnSymmetricEncrypt *const pFnSymmEncrypt
Definition: sopc_crypto_profiles.h:220
Defines the common declarations for the cryptographic objects.
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile sopc_g_cpAes128Sha256RsaOaep
SOPC_ReturnStatus FnSymmetricEncrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenPlainText, const SOPC_ExposedBuffer *pKey, const SOPC_ExposedBuffer *pIV, uint8_t *pOutput, uint32_t lenOutput)
Definition: sopc_crypto_profiles.h:135
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile_PubSub sopc_g_cppsNone
FnSymmetricDecrypt *const pFnSymmDecrypt
Definition: sopc_crypto_profiles.h:221
const uint32_t SecurityPolicyID
Definition: sopc_crypto_profiles.h:219
SOPC_ReturnStatus FnPubSubCrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, const SOPC_ExposedBuffer *pKeyNonce, const SOPC_ExposedBuffer *pRandom, uint32_t uSequenceNumber, uint8_t *pOutput)
Definition: sopc_crypto_profiles.h:192
The SOPC_CryptoProvider context.
Definition: sopc_crypto_provider.h:47
FnGenerateRandom *const pFnGenRnd
Definition: sopc_crypto_profiles.h:248
FnAsymmetricDecrypt *const pFnAsymDecrypt
Definition: sopc_crypto_profiles.h:227
FnPubSubCrypt *const pFnCrypt
Definition: sopc_crypto_profiles.h:245
SOPC_ReturnStatus FnAsymmetricDecrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenCipherText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput, uint32_t *lenWritten)
Definition: sopc_crypto_profiles.h:174
FnAsymmetricSign *const pFnAsymSign
Definition: sopc_crypto_profiles.h:228
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile_PubSub sopc_g_cppsPubSubAes256
const SOPC_CryptoProfile_PubSub * SOPC_CryptoProfile_PubSub_Get(const char *uri)
SOPC_ReturnStatus FnAsymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, const uint8_t *pSignature)
Definition: sopc_crypto_profiles.h:185
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile sopc_g_cpNone
SOPC_ReturnStatus FnSymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, uint8_t *pOutput)
Definition: sopc_crypto_profiles.h:149
FnSymmetricVerify *const pFnSymmVerif
Definition: sopc_crypto_profiles.h:247
The asymmetric key representation.
Definition: key_manager_lib.h:46
SOPC_CryptoProfiles gather pointers to cryptographic functions of the security policies of OPC UA Ser...
Definition: sopc_crypto_profiles.h:218
const SOPC_CryptoProfile * SOPC_CryptoProfile_Get(const char *uri)
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile sopc_g_cpBasic256Sha256
SOPC_CryptoProfiles_PubSub gather pointers to cryptographic functions of the security policies of OPC...
Definition: sopc_crypto_profiles.h:243
FnCertificateVerify *const pFnCertVerify
Definition: sopc_crypto_profiles.h:230
uint8_t SOPC_ExposedBuffer
Definition: sopc_secret_buffer.h:36
SOPC_ReturnStatus FnDerivePseudoRandomData(const SOPC_CryptoProvider *pProvider, const SOPC_ExposedBuffer *pSecret, uint32_t lenSecret, const SOPC_ExposedBuffer *pSeed, uint32_t lenSeed, SOPC_ExposedBuffer *pOutput, uint32_t lenOutput)
Definition: sopc_crypto_profiles.h:162
S2OPC_COMMON_EXPORT const SOPC_CryptoProfile sopc_g_cpBasic256
SOPC_ReturnStatus FnAsymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, uint8_t *pSignature)
Definition: sopc_crypto_profiles.h:180
FnSymmetricVerify *const pFnSymmVerif
Definition: sopc_crypto_profiles.h:223
SecretBuffer (mangled key) and ExposedBuffer (contiguous deciphered buffered) APIs.
FnSymmetricSign *const pFnSymmSign
Definition: sopc_crypto_profiles.h:222
SOPC_ReturnStatus
Definition: libs2opc_client.h:61