libcoap 4.3.3
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.