Program Listing for File crypto.h

Return to documentation for file (include_public/anj/crypto.h)

/*
 * Copyright 2023-2026 AVSystem <avsystem@avsystem.com>
 * AVSystem Anjay Lite LwM2M SDK
 * All rights reserved.
 *
 * Licensed under AVSystem Anjay Lite LwM2M Client SDK - Non-Commercial License.
 * See the attached LICENSE file for details.
 */

#include <anj/init.h>

#ifndef ANJ_CRYPTO_H
#    define ANJ_CRYPTO_H

#    include <anj/defs.h>

#    ifdef __cplusplus
extern "C" {
#    endif

#    ifdef ANJ_WITH_SECURITY

typedef enum {
    ANJ_CRYPTO_DATA_SOURCE_EMPTY = 0,

    ANJ_CRYPTO_DATA_SOURCE_BUFFER,

#        ifdef ANJ_WITH_EXTERNAL_CRYPTO_STORAGE
    ANJ_CRYPTO_DATA_SOURCE_EXTERNAL
#        endif // ANJ_WITH_EXTERNAL_CRYPTO_STORAGE
} anj_crypto_data_source_t;

typedef enum {
    ANJ_CRYPTO_SECURITY_TAG_CERTIFICATE_CHAIN,
    ANJ_CRYPTO_SECURITY_TAG_PRIVATE_KEY,
    ANJ_CRYPTO_SECURITY_TAG_CERT_REVOCATION_LIST,
    ANJ_CRYPTO_SECURITY_TAG_PSK_IDENTITY,
    ANJ_CRYPTO_SECURITY_TAG_PSK_KEY,
} anj_crypto_security_tag_t;

typedef struct {
    const void *data;
    size_t data_size;
} anj_crypto_security_info_buffer_t;

#        ifdef ANJ_WITH_EXTERNAL_CRYPTO_STORAGE
typedef struct {
    const char *identity;
} anj_crypto_security_info_external_t;

#        endif // ANJ_WITH_EXTERNAL_CRYPTO_STORAGE

typedef struct {
    anj_crypto_security_tag_t tag;
    anj_crypto_data_source_t source;
    union {
        anj_crypto_security_info_buffer_t buffer;
#        ifdef ANJ_WITH_EXTERNAL_CRYPTO_STORAGE
        anj_crypto_security_info_external_t external;
#        endif // ANJ_WITH_EXTERNAL_CRYPTO_STORAGE
    } info;
} anj_crypto_security_info_t;

#    endif // ANJ_WITH_SECURITY

#    ifdef __cplusplus
}
#    endif

#endif // ANJ_CRYPTO_H