1################################################################################
2# Toolchain
3################################################################################
4#CC = gcc
5#AR = ar
6#CC = /opt/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc
7#AR = /opt/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-ar
8#CC = clang-13
9
10
11################################################################################
12# Architecture
13################################################################################
14# see for arm flags: https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
15#ARCH = -m32
16#ARCH = -mtune=cortex-m3
17
18
19################################################################################
20# Compiler optimization
21################################################################################
22OPT = -O0
23
24
25################################################################################
26# Print helpful debug messages
27################################################################################
28DEBUG_PRINT += -DDEBUG_PRINT
29
30################################################################################
31# Use Address Sanitizer, e.g. with native_posix
32################################################################################
33#ASAN += -DASAN
34
35################################################################################
36# Unit testing
37################################################################################
38# Uncomment this to enable building the unit tests
39UNIT_TEST += -DUNIT_TEST
40
41
42################################################################################
43# CBOR engine
44################################################################################
45# currently only ZCBOR is supported
46CBOR_ENGINE += -DZCBOR
47
48# Uncomment to enable Non-volatile memory (NVM) support for storing security context between device reboots
49OSCORE_NVM_SUPPORT += -DOSCORE_NVM_SUPPORT
50
51################################################################################
52# RAM optimization
53################################################################################
54# Compute the length of buffers at runtime (variable length array VLA)
55# Please note that: we do not support this feature under Windows with MSVC (lack of support for VLA).
56#FEATURES += -DVLA
57
58################################################################################
59# RAM optimization EDHOC
60################################################################################
61# In deployments where no protected application message is sent from the
62# Responder to the Initiator, message_4 MUST be used.
63# FEATURES += -DMESSAGE_4
64
65# If EAD is not used set its buffer size to 0
66FEATURES += -DEAD_SIZE=0
67
68# Size of the connection identifier of the initiator C_I
69FEATURES += -DC_I_SIZE=1
70
71# Size of the connection identifier of the initiator C_R
72FEATURES += -DC_R_SIZE=1
73
74# Size of ID_CRED_R
75FEATURES += -DID_CRED_R_SIZE=296
76
77# Size of ID_CRED_I
78FEATURES += -DID_CRED_I_SIZE=296
79
80# Size of CRED_R
81FEATURES += -DCRED_R_SIZE=293
82
83# Size of CRED_I
84FEATURES += -DCRED_I_SIZE=293
85
86# Number of supported suites by the initiator
87FEATURES += -DSUITES_I_SIZE=1
88
89################################################################################
90# RAM optimization OSCORE
91################################################################################
92# Max size of an OSCORE plaintext
93FEATURES += -DOSCORE_MAX_PLAINTEXT_LEN=1024
94
95# Max size of the E options buffer
96FEATURES += -DE_OPTIONS_BUFF_MAX_LEN=100
97
98# Max size of the I options buffer
99FEATURES += -DI_OPTIONS_BUFF_MAX_LEN=100
100
101
102################################################################################
103# Crypto engine
104################################################################################
105# The uoscore-uedhoc can be used with different crypto engines.
106# The user can provide as well additional crypto engines by providing
107# implementations of the function defined (as week) in the crypto_wrapper file.
108# Currently we have build in support for the following engines which
109# allow fowling modes of operation and suites:
110#
111# EDHOC suites:
112# Value: 0
113#    Array: 10, -16, 8, 4, -8, 10, -16
114#    Desc: AES-CCM-16-64-128, SHA-256, 8, X25519, EdDSA,
115#          AES-CCM-16-64-128, SHA-256
116
117#    Value: 1
118#    Array: 30, -16, 16, 4, -8, 10, -16
119#    Desc: AES-CCM-16-128-128, SHA-256, 16, X25519, EdDSA,
120#          AES-CCM-16-64-128, SHA-256
121
122#    Value: 2
123#    Array: 10, -16, 8, 1, -7, 10, -16
124#    Desc: AES-CCM-16-64-128, SHA-256, 8, P-256, ES256,
125#          AES-CCM-16-64-128, SHA-256
126
127#    Value: 3
128#    Array: 30, -16, 16, 1, -7, 10, -16
129#    Desc: AES-CCM-16-128-128, SHA-256, 16, P-256, ES256,
130#          AES-CCM-16-64-128, SHA-256
131
132#    Value: 4
133#    Array: 24, -16, 16, 4, -8, 24, -16
134#    Desc: ChaCha20/Poly1305, SHA-256, 16, X25519, EdDSA,
135#          ChaCha20/Poly1305, SHA-256
136
137
138# EDHOC methods:
139# +-------+-------------------+-------------------+-------------------+
140# | Value | Initiator         | Responder         | Reference         |
141# +-------+-------------------+-------------------+-------------------+
142# |     0 | Signature Key     | Signature Key     | [[this document]] |
143# |     1 | Signature Key     | Static DH Key     | [[this document]] |
144# |     2 | Static DH Key     | Signature Key     | [[this document]] |
145# |     3 | Static DH Key     | Static DH Key     | [[this document]] |
146# +-------+-------------------+-------------------+-------------------+
147#
148#
149#
150# +--------+---------+---------+-------------------------------------------
151# protocol | suite   | method  | ENGINE
152# +--------+---------+---------+-------------------------------------------
153# | OSCORE |         |         | TINYCRYPT or MBEDTLS
154# | EDHOC  | 0/1     | 0/1/2   | COMPACT25519 with (TINYCRYPT or MBEDTLS)
155# | EDHOC  | 0/1     | 3       | MBEDTLS or (COMPACT25519 with TINYCRYPT)
156# | EDHOC  | 2/3     | 0/1/2/3 | MBEDTLS
157# | EDHOC  | 0/1/2/3 | 0/1/2/3 | MBEDTLS and COMPACT25519
158
159
160CRYPTO_ENGINE += -DTINYCRYPT
161CRYPTO_ENGINE += -DCOMPACT25519
162#CRYPTO_ENGINE += -DMBEDTLS