WE310F5  39.00.000
M2MB SSL CERT

This section describes the M2MB APIs for ssl certificate management. More...

#define M2MB_SSL_MAX_CA_LIST   10
 
#define M2MB_SSL_MAX_CERT_NAME_LEN   64
 
enum  M2MB_SSL_CERT_TYPE_E {
  M2MB_SSL_CACERT,
  M2MB_SSL_CERT
}
 SSL certificate type enum. More...
 
enum  M2MB_SSL_PEMCERT_TYPE_E {
  M2MB_SSL_PEM_CERT,
  M2MB_SSL_PEM_PKCS1_PRIVKEY,
  M2MB_SSL_PEM_PKCS8_PRIVKEY,
  M2MB_SSL_PEM_PKCS8_ENC_PRIVKEY,
  M2MB_SSL_PEM_EC_PRIVKEY
}
 SSL certificate type enum. More...
 
enum  M2MB_SSL_CERT_FMT_E {
  M2MB_SSL_DER,
  M2MB_SSL_PEM
}
 SSL certificate format enum. More...
 
typedef enum M2MB_SSL_CERT_TYPE_E M2MB_SSL_CERT_TYPE_E
 SSL certificate type enum. More...
 
typedef enum M2MB_SSL_PEMCERT_TYPE_E M2MB_SSL_PEMCERT_TYPE_E
 SSL certificate type enum. More...
 
typedef enum M2MB_SSL_CERT_FMT_E M2MB_SSL_CERT_FMT_E
 SSL certificate format enum. More...
 
typedef struct M2MB_SSL_CERT_T M2MB_SSL_CERT_T
 SSL certificate information for conversion and storage. More...
 
typedef struct M2MB_SSL_CA_INFO_T M2MB_SSL_CA_INFO_T
 SSL certificate authority list information. More...
 
typedef struct M2MB_SSL_CA_LIST_T M2MB_SSL_CA_LIST_T
 SSL certificate authority information for conversion and storage. More...
 
typedef struct M2MB_SSL_CERT_LIST_T M2MB_SSL_CERT_LIST_T
 SSL Cert list structure. More...
 
M2MB_STATUS_T m2mb_ssl_cert_store (M2MB_SSL_CERT_TYPE_E sslCertType, M2MB_SSL_SEC_INFO_U sslSecInfo, CHAR *name, M2MB_SSL_CERT_FMT_E format)
 Store certificates from buffer. More...
 
M2MB_STATUS_T m2mb_ssl_cert_delete (M2MB_SSL_CERT_TYPE_E sslCertType, CHAR *name)
 Delete certificates. More...
 
INT32 m2mb_ssl_cert_get (M2MB_SSL_CERT_TYPE_E sslCertType, M2MB_SSL_CERT_LIST_T *sslCertList)
 It gets the list of the certificates stored. More...
 
M2MB_STATUS_T m2mb_ssl_cert_search (M2MB_SSL_CERT_TYPE_E sslCertType, CHAR *certName)
 Search for the given certificate in the system. More...
 

Detailed Description

This section describes the M2MB APIs for ssl certificate management.

This module describes about apis to use for ssl certificate store,delete and get info.

Macro Definition Documentation

◆ M2MB_SSL_MAX_CA_LIST

#define M2MB_SSL_MAX_CA_LIST   10

Macro for maximum number of CA certs

Definition at line 57 of file m2mb_ssl_cert.h.

◆ M2MB_SSL_MAX_CERT_NAME_LEN

#define M2MB_SSL_MAX_CERT_NAME_LEN   64

Macro for maximum certificate name length

Definition at line 58 of file m2mb_ssl_cert.h.

Typedef Documentation

◆ M2MB_SSL_CA_INFO_T

SSL certificate authority list information.

◆ M2MB_SSL_CA_LIST_T

SSL certificate authority information for conversion and storage.

◆ M2MB_SSL_CERT_FMT_E

SSL certificate format enum.

◆ M2MB_SSL_CERT_LIST_T

SSL Cert list structure.

◆ M2MB_SSL_CERT_T

SSL certificate information for conversion and storage.

◆ M2MB_SSL_CERT_TYPE_E

SSL certificate type enum.

◆ M2MB_SSL_PEMCERT_TYPE_E

SSL certificate type enum.

Enumeration Type Documentation

◆ M2MB_SSL_CERT_FMT_E

SSL certificate format enum.

Enumerator
M2MB_SSL_DER 
M2MB_SSL_PEM 

DER format certificate or key

Definition at line 80 of file m2mb_ssl_cert.h.

◆ M2MB_SSL_CERT_TYPE_E

SSL certificate type enum.

Enumerator
M2MB_SSL_CACERT 

root CA certificate to authenticate the server

M2MB_SSL_CERT 

client certificate in case of client authentication

Definition at line 61 of file m2mb_ssl_cert.h.

◆ M2MB_SSL_PEMCERT_TYPE_E

SSL certificate type enum.

Enumerator
M2MB_SSL_PEM_CERT 

client certificate in case of client authentication

M2MB_SSL_PEM_PKCS1_PRIVKEY 

client private key in case of client authentication

M2MB_SSL_PEM_PKCS8_PRIVKEY 
M2MB_SSL_PEM_PKCS8_ENC_PRIVKEY 
M2MB_SSL_PEM_EC_PRIVKEY 

PSK table in case of DTLS

Definition at line 69 of file m2mb_ssl_cert.h.

Function Documentation

◆ m2mb_ssl_cert_delete()

M2MB_STATUS_T m2mb_ssl_cert_delete ( M2MB_SSL_CERT_TYPE_E  sslCertType,
CHAR name 
)

Delete certificates.

Delete CA list or client certificate and key or PSK table depending on first parameter(SSL cert type)

Parameters
[in]sslCertTypeSpecifies the type of certificate to be deleted
[in]nameSpecifies name of the SSL certificate to be deleted
Returns
Returns M2MB_OK on success, a different value on error.
Note
<Notes>

Example

int main()
{
// If M2MB_SSL_CACERT
status = m2mb_ssl_cert_delete( M2MB_SSL_CACERT, caCertName );
if (status != M2MB_OK)
{
return M2MB_ERROR;
}
// If M2MB_SSL_CERT
status = m2mb_ssl_cert_delete( M2MB_SSL_CERT, certName );
if (status != M2MB_OK)
{
return M2MB_ERROR;
}
}

◆ m2mb_ssl_cert_get()

INT32 m2mb_ssl_cert_get ( M2MB_SSL_CERT_TYPE_E  sslCertType,
M2MB_SSL_CERT_LIST_T sslCertList 
)

It gets the list of the certificates stored.

This command is used to get the list of the certificates.

Parameters
[in]sslCertType
[in]sslCertList
Returns
Returns number of files on SUCCESS, a M2MB_ERROR on error.
Note
<Notes>

Example

int main()
{
M2MB_SSL_CERT_LIST_T sslCertList;
//If M2MB_SSL_CERT_TYPE_E is M2MB_SSL_CERT
status = m2mb_ssl_cert_get(M2MB_SSL_CERT, &sslCertList);
if (status != M2MB_OK)
{
return M2MB_ERROR;
}

◆ m2mb_ssl_cert_search()

M2MB_STATUS_T m2mb_ssl_cert_search ( M2MB_SSL_CERT_TYPE_E  sslCertType,
CHAR certName 
)

Search for the given certificate in the system.

This command is used to find the certificate from the list of the certificates stored in the system.

Parameters
[in]sslCertType
[in]certName
Returns
Returns M2MB_OK on success, a different value on error.
Note
<Notes>

Example

int main()
{
//If M2MB_SSL_CERT_TYPE_E is M2MB_SSL_CACERT
status = m2mb_ssl_cert_search(M2MB_SSL_CACERT , "certName");
if (status != M2MB_OK)
{
return M2MB_ERROR;
}
}

◆ m2mb_ssl_cert_store()

M2MB_STATUS_T m2mb_ssl_cert_store ( M2MB_SSL_CERT_TYPE_E  sslCertType,
M2MB_SSL_SEC_INFO_U  sslSecInfo,
CHAR name,
M2MB_SSL_CERT_FMT_E  format 
)

Store certificates from buffer.

Store CA list or client certificate and key or PSK table depending on the first parameter(SSL cert type)

Parameters
[in]sslCertTypeSpecifies the SSL certificate type
[in]sslSecInfoSpecifies the SSL certificate(CA list or client certificate and key or PSK table depending on first parameter)
[in]nameSpecifies name of the SSL certificate
[in]formatSpecifies the ssl certificate format
Returns
Returns M2MB_OK on success, a different value on error.
Note
<Notes>

Example

int main()
{
M2MB_SSL_SEC_INFO_U m2mbsslsecinfo;
memset(&m2mbsslsecinfo, 0, sizeof(m2mbsslsecinfo));
// If M2MB_SSL_CACERT
M2MB_SSL_CA_INFO_T m2mb_ca_info;
m2mbsslsecinfo.ca_List.ca_Cnt = 1;
m2mb_ca_info.ca_Buf = (uint8_t*)tls_io_instance->certificate;
m2mb_ca_info.ca_Size = strlen(tls_io_instance->certificate);
m2mbsslsecinfo.ca_List.ca_Info[0] = &m2mb_ca_info;
status = m2mb_ssl_cert_store( M2MB_SSL_CACERT, m2mbsslsecinfo, "ca_certName" , 0);
if (status != M2MB_OK)
{
return M2MB_ERROR;
}
// If M2MB_SSL_CERT
M2MB_SSL_CERT_T m2mb_cert_info;
// required cert_data, cert_size, key_data, key_size
m2mb_cert_info.cert.cert_Buf = malloc(cert_size);
m2mb_cert_info.cert.key_Buf = malloc(key_size);
memcpy(m2mb_cert_info.cert_Buf, cert_data, cert_size);
m2mb_cert_info.cert_Size = cert_size;
memcpy(m2mb_cert_infokey_Buf , key_data, key_size);
m2mb_cert_info.key_Size = key_size;
m2mbsslsecinfo.cert = m2mb_cert_info;
status = m2mb_ssl_cert_store( M2MB_SSL_CERT, m2mbsslsecinfo, "certName", 0);
if (status != M2MB_OK)
{
return M2MB_ERROR;
}
}