Loading...
Searching...
No Matches
oscore_cose.h File Reference

An implementation of the CBOR Object Signing and Encryption (RFC). More...

`#include <stdint.h>`
Include dependency graph for oscore_cose.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | cose_encrypt0_t

## Macros

#define | COSE_ALGORITHM_ED25519_SIG_LEN 64
#define | COSE_ALGORITHM_ED25519_PRIV_KEY_LEN 32
#define | COSE_ALGORITHM_ED25519_PUB_KEY_LEN 32
#define | COSE_ALGORITHM_AES_CCM_64_64_128_KEY_LEN 16
#define | COSE_ALGORITHM_AES_CCM_64_64_128_NONCE_LEN 7
#define | COSE_ALGORITHM_AES_CCM_64_64_128_TAG_LEN 8
#define | COSE_ALGORITHM_AES_CCM_16_64_128_KEY_LEN 16
#define | COSE_ALGORITHM_AES_CCM_16_64_128_NONCE_LEN 13
#define | COSE_ALGORITHM_AES_CCM_16_64_128_TAG_LEN 8
#define | COSE_ALGORITHM_AES_CCM_64_128_128_KEY_LEN 16
#define | COSE_ALGORITHM_AES_CCM_64_128_128_NONCE_LEN 7
#define | COSE_ALGORITHM_AES_CCM_64_128_128_TAG_LEN 16
#define | COSE_ALGORITHM_AES_CCM_16_128_128_KEY_LEN 16
#define | COSE_ALGORITHM_AES_CCM_16_128_128_NONCE_LEN 13
#define | COSE_ALGORITHM_AES_CCM_16_128_128_TAG_LEN 16
#define | COSE_ALGORITHM_ES256_PRIV_KEY_LEN 24
#define | COSE_ALGORITHM_ES256_PUB_KEY_LEN 32
#define | COSE_ALGORITHM_ES256_SIGNATURE_LEN 64
#define | COSE_ALGORITHM_ES256_HASH_LEN 32
#define | COSE_ALGORITHM_ES384_PRIV_KEY_LEN 24
#define | COSE_ALGORITHM_ES384_PUB_KEY_LEN 32
#define | COSE_ALGORITHM_ES384_SIGNATURE_LEN 64
#define | COSE_ALGORITHM_ES384_HASH_LEN 48
#define | COSE_ALGORITHM_ES512_PRIV_KEY_LEN 24
#define | COSE_ALGORITHM_ES512_PUB_KEY_LEN 32
#define | COSE_ALGORITHM_ES512_SIGNATURE_LEN 64
#define | COSE_ALGORITHM_ES512_HASH_LEN 64
#define | COSE_ALGORITHM_ECDH_PRIV_KEY_LEN 32
#define | COSE_ALGORITHM_ECDH_PUB_KEY_LEN 32
#define | COSE_ALGORITHM_SHA_512_LEN 64
#define | COSE_ALGORITHM_SHA_512_256_LEN 32
#define | COSE_ALGORITHM_SHA_256_256_LEN 32
#define | COSE_ALGORITHM_SHA_256_64_LEN 8
#define | COSE_ALGORITHM_HMAC256_64_HASH_LEN 16
#define | COSE_ALGORITHM_HMAC256_256_HASH_LEN 32
#define | COSE_ALGORITHM_HMAC384_384_HASH_LEN 48
#define | COSE_ALGORITHM_HMAC512_512_HASH_LEN 64

## Typedefs

typedef struct cose_encrypt0_t | cose_encrypt0_t

## Enumerations

enum | cose_curve_t { COSE_CURVE_P_256 = 1 , COSE_CURVE_X25519 = 4 , COSE_CURVE_X448 = 5 , COSE_CURVE_ED25519 = 6 , COSE_CURVE_ED448 = 7 , COSE_CURVE_SECP256K1 = 8 }
enum | cose_key_type_t { COSE_KTY_UNKNOWN , COSE_KTY_OKP = 1 , COSE_KTY_EC2 = 2 , COSE_KTY_RSA = 3 , COSE_KTY_SYMMETRIC = 4 }

enum

cose_alg_t {
COSE_ALGORITHM_ES256K = -47 , COSE_ALGORITHM_SHA_512 = -44 , COSE_ALGORITHM_SHA_384 = -43 , COSE_ALGORITHM_ES512 = -36 ,
COSE_ALGORITHM_ES384 = -35 , COSE_ALGORITHM_ECDH_SS_HKDF_256 = -27 , COSE_ALGORITHM_SHA_512_256 = -17 , COSE_ALGORITHM_SHA_256_256 = -16 ,
COSE_ALGORITHM_SHA_256_64 = -15 , COSE_ALGORITHM_SHA_1 = -14 , COSE_ALGORITHM_HKDF_SHA_512 = -11 , COSE_ALGORITHM_HKDF_SHA_256 = -10 ,
COSE_ALGORITHM_EDDSA = -8 , COSE_ALGORITHM_ES256 = -7 , COSE_ALGORITHM_HMAC256_64 = 4 , COSE_ALGORITHM_HMAC256_256 = 5 ,
COSE_ALGORITHM_HMAC384_384 = 6 , COSE_ALGORITHM_HMAC512_512 = 7 , COSE_ALGORITHM_AES_CCM_16_64_128 = 10 , COSE_ALGORITHM_AES_CCM_16_64_256 = 11 ,
COSE_ALGORITHM_AES_CCM_64_64_128 = 12 , COSE_ALGORITHM_AES_CCM_64_64_256 = 13 , COSE_ALGORITHM_CHACHA20_P1035 = 24 , COSE_ALGORITHM_AES_CCM_16_128_128 = 30 ,
COSE_ALGORITHM_AES_CCM_16_128_256 = 31 , COSE_ALGORITHM_AES_CCM_64_128_128 = 32 , COSE_ALGORITHM_AES_CCM_64_128_256 = 33
}

enum | cose_hmac_alg_t { COSE_HMAC_ALG_HMAC256_64 = 4 , COSE_HMAC_ALG_HMAC256_256 = 5 , COSE_HMAC_ALG_HMAC384_384 = 6 , COSE_HMAC_ALG_HMAC512_512 = 7 }
enum | cose_hkdf_alg_t { COSE_HKDF_ALG_HKDF_SHA_512 = -11 , COSE_HKDF_ALG_HKDF_SHA_256 = -10 }

## Functions

const char * | cose_get_curve_name (cose_curve_t id, char *buffer, size_t buflen)
cose_curve_t | cose_get_curve_id (const char *name)
const char * | cose_get_alg_name (cose_alg_t id, char *buffer, size_t buflen)
cose_alg_t | cose_get_alg_id (const char *name)
const char * | cose_get_hkdf_alg_name (cose_hkdf_alg_t id, char *buffer, size_t buflen)
int | cose_get_hmac_alg_for_hkdf (cose_hkdf_alg_t hkdf_alg, cose_hmac_alg_t *hmac_alg)
size_t | cose_tag_len (cose_alg_t cose_alg)
size_t | cose_hash_len (cose_alg_t cose_alg)
size_t | cose_nonce_len (cose_alg_t cose_alg)
size_t | cose_key_len (cose_alg_t cose_alg)
size_t | cose_encrypt0_encode (cose_encrypt0_t *ptr, uint8_t *buffer, size_t size)
int | cose_encrypt0_decode (cose_encrypt0_t *ptr, uint8_t *buffer, size_t size)
void | cose_encrypt0_init (cose_encrypt0_t *ptr)
void | cose_encrypt0_set_alg (cose_encrypt0_t *ptr, uint8_t alg)
void | cose_encrypt0_set_plaintext (cose_encrypt0_t *ptr, uint8_t *buffer, size_t size)
void | cose_encrypt0_set_ciphertext (cose_encrypt0_t *ptr, uint8_t *buffer, size_t size)
int | cose_encrypt0_get_plaintext (cose_encrypt0_t *ptr, uint8_t **buffer)
void | cose_encrypt0_set_partial_iv (cose_encrypt0_t *ptr, coap_bin_const_t *partial_iv)
coap_bin_const_t | cose_encrypt0_get_partial_iv (cose_encrypt0_t *ptr)
void | cose_encrypt0_set_key_id (cose_encrypt0_t *ptr, coap_bin_const_t *key_id)
size_t | cose_encrypt0_get_key_id (cose_encrypt0_t *ptr, const uint8_t **buffer)
void | cose_encrypt0_set_external_aad (cose_encrypt0_t *ptr, coap_bin_const_t *external_aad)
void | cose_encrypt0_set_aad (cose_encrypt0_t *ptr, coap_bin_const_t *aad)
size_t | cose_encrypt0_get_kid_context (cose_encrypt0_t *ptr, const uint8_t **buffer)
void | cose_encrypt0_set_kid_context (cose_encrypt0_t *ptr, coap_bin_const_t *kid_context)
int | cose_encrypt0_set_key (cose_encrypt0_t *ptr, coap_bin_const_t *key)
void | cose_encrypt0_set_nonce (cose_encrypt0_t *ptr, coap_bin_const_t *nonce)
int | cose_encrypt0_encrypt (cose_encrypt0_t *ptr, uint8_t *ciphertext_buffer, size_t ciphertext_len)
int | cose_encrypt0_decrypt (cose_encrypt0_t *ptr, uint8_t *plaintext_buffer, size_t plaintext_len)

## Detailed Description

An implementation of the CBOR Object Signing and Encryption (RFC).

Author
  Martin Gunnarsson marti.nosp@m.n.gu.nosp@m.nnars.nosp@m.son@.nosp@m.ri.se adapted with sign1 function for libcoap Peter van der Stok consu.nosp@m.ltan.nosp@m.cy@va.nosp@m.nder.nosp@m.stok..nosp@m.org on request of Fairhair alliance adapted for libcoap integration Jon Shallow supjp.nosp@m.s-li.nosp@m.bcoap.nosp@m.@jps.nosp@m.hallo.nosp@m.w.co.nosp@m.m

Definition in file oscore_cose.h.