S2OPC OPCUA Toolkit
Data Structures | Macros | Typedefs | Enumerations | Functions
sopc_crypto_profiles.h File Reference

Defines the cryptographic profiles: constants and struct. More...

#include "sopc_crypto_decl.h"
#include "sopc_enums.h"
#include "s2opc_common_export.h"

Go to the source code of this file.

Data Structures

struct  SOPC_SecurityPolicy_Config
 
struct  SOPC_CryptoProfile
 SOPC_CryptoProfiles gather pointers to cryptographic functions of the security policies of OPC UA Services. More...
 
struct  SOPC_CryptoProfile_PubSub
 SOPC_CryptoProfiles_PubSub gather pointers to cryptographic functions of the security policies of OPC UA PubSub. More...
 

Macros

#define SOPC_SecurityPolicy_Basic256Sha256_URI   "http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256"
 
#define SOPC_SecurityPolicy_Basic256_URI   "http://opcfoundation.org/UA/SecurityPolicy#Basic256"
 
#define SOPC_SecurityPolicy_None_URI   "http://opcfoundation.org/UA/SecurityPolicy#None"
 
#define SOPC_SecurityPolicy_PubSub_Aes256_URI   "http://opcfoundation.org/UA/SecurityPolicy#PubSub-Aes256-CTR"
 
#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI   "http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep"
 
#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI   "http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss"
 
#define SOPC_SecurityPolicy_Basic256Sha256_URI_SignAlgo   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
 
#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI_SignAlgo   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
 
#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI_SignAlgo   "http://opcfoundation.org/UA/security/rsa-pss-sha2-256"
 
#define SOPC_SecurityPolicy_Basic256_URI_SignAlgo   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
 

Typedefs

typedef enum SOPC_SecurityPolicy_ID SOPC_SecurityPolicy_ID
 
typedef struct SOPC_SecurityPolicy_Config SOPC_SecurityPolicy_Config
 
typedef 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)
 
typedef 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)
 
typedef SOPC_ReturnStatus FnSymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, uint8_t *pOutput)
 
typedef SOPC_ReturnStatus FnSymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, const uint8_t *pSignature)
 
typedef SOPC_ReturnStatus FnGenerateRandom(const SOPC_CryptoProvider *pProvider, SOPC_ExposedBuffer *pData, uint32_t lenData)
 
typedef 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)
 
typedef SOPC_ReturnStatus FnAsymmetricEncrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenPlainText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput)
 
typedef SOPC_ReturnStatus FnAsymmetricDecrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenCipherText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput, uint32_t *lenWritten)
 
typedef SOPC_ReturnStatus FnAsymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, uint8_t *pSignature)
 
typedef SOPC_ReturnStatus FnAsymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, const uint8_t *pSignature)
 
typedef 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)
 

Enumerations

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
}
 

Functions

const SOPC_SecurityPolicy_ConfigSOPC_SecurityPolicy_Config_Get (SOPC_SecurityPolicy_ID policyId)
 
const SOPC_SecurityPolicy_ConfigSOPC_CryptoProfile_Get (const char *uri)
 
const SOPC_CryptoProfile_PubSubSOPC_CryptoProfile_PubSub_Get (const char *uri)
 

Detailed Description

Defines the cryptographic profiles: constants and struct.

Note
The constants defined in this file are mainly based on the test specification (Part 7).

Macro Definition Documentation

◆ SOPC_SecurityPolicy_Basic256Sha256_URI

#define SOPC_SecurityPolicy_Basic256Sha256_URI   "http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256"

◆ SOPC_SecurityPolicy_Basic256_URI

#define SOPC_SecurityPolicy_Basic256_URI   "http://opcfoundation.org/UA/SecurityPolicy#Basic256"

◆ SOPC_SecurityPolicy_None_URI

#define SOPC_SecurityPolicy_None_URI   "http://opcfoundation.org/UA/SecurityPolicy#None"

◆ SOPC_SecurityPolicy_PubSub_Aes256_URI

#define SOPC_SecurityPolicy_PubSub_Aes256_URI   "http://opcfoundation.org/UA/SecurityPolicy#PubSub-Aes256-CTR"

◆ SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI

#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI   "http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep"

◆ SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI

#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI   "http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss"

◆ SOPC_SecurityPolicy_Basic256Sha256_URI_SignAlgo

#define SOPC_SecurityPolicy_Basic256Sha256_URI_SignAlgo   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

◆ SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI_SignAlgo

#define SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI_SignAlgo   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

◆ SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI_SignAlgo

#define SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI_SignAlgo   "http://opcfoundation.org/UA/security/rsa-pss-sha2-256"

◆ SOPC_SecurityPolicy_Basic256_URI_SignAlgo

#define SOPC_SecurityPolicy_Basic256_URI_SignAlgo   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"

Typedef Documentation

◆ SOPC_SecurityPolicy_ID

◆ SOPC_SecurityPolicy_Config

◆ FnSymmetricEncrypt

typedef 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)

◆ FnSymmetricDecrypt

typedef 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)

◆ FnSymmetricSign

typedef SOPC_ReturnStatus FnSymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, uint8_t *pOutput)

◆ FnSymmetricVerify

typedef SOPC_ReturnStatus FnSymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_ExposedBuffer *pKey, const uint8_t *pSignature)

◆ FnGenerateRandom

typedef SOPC_ReturnStatus FnGenerateRandom(const SOPC_CryptoProvider *pProvider, SOPC_ExposedBuffer *pData, uint32_t lenData)

◆ FnDerivePseudoRandomData

typedef 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)

◆ FnAsymmetricEncrypt

typedef SOPC_ReturnStatus FnAsymmetricEncrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenPlainText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput)

◆ FnAsymmetricDecrypt

typedef SOPC_ReturnStatus FnAsymmetricDecrypt(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenCipherText, const SOPC_AsymmetricKey *pKey, uint8_t *pOutput, uint32_t *lenWritten)

◆ FnAsymmetricSign

typedef SOPC_ReturnStatus FnAsymmetricSign(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, uint8_t *pSignature)

◆ FnAsymmetricVerify

typedef SOPC_ReturnStatus FnAsymmetricVerify(const SOPC_CryptoProvider *pProvider, const uint8_t *pInput, uint32_t lenInput, const SOPC_AsymmetricKey *pKey, const uint8_t *pSignature)

◆ FnPubSubCrypt

typedef 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)

Enumeration Type Documentation

◆ SOPC_SecurityPolicy_ID

Enumerator
SOPC_SecurityPolicy_Invalid_ID 
SOPC_SecurityPolicy_Basic256Sha256_ID 
SOPC_SecurityPolicy_Basic256_ID 
SOPC_SecurityPolicy_None_ID 
SOPC_SecurityPolicy_PubSub_Aes256_ID 
SOPC_SecurityPolicy_Aes128Sha256RsaOaep_ID 
SOPC_SecurityPolicy_Aes256Sha256RsaPss_ID 
SOPC_SecurityPolicy_Last_ID 

Function Documentation

◆ SOPC_SecurityPolicy_Config_Get()

const SOPC_SecurityPolicy_Config* SOPC_SecurityPolicy_Config_Get ( SOPC_SecurityPolicy_ID  policyId)

Get the configuration of the given security policy This function never returns NULL, and a caller does not need to check this result. In case of invalid arguments the returned value will point to the configuration of SOPC_SecurityPolicy_Invalid_ID

◆ SOPC_CryptoProfile_Get()

const SOPC_SecurityPolicy_Config* SOPC_CryptoProfile_Get ( const char *  uri)

◆ SOPC_CryptoProfile_PubSub_Get()

const SOPC_CryptoProfile_PubSub* SOPC_CryptoProfile_PubSub_Get ( const char *  uri)