circuitpython/py
Angus Gratton 9b7d85227e extmod/mbedtls: Implement recommended DTLS features, make optional.
- DTLS spec recommends HelloVerify and Anti Replay protection be enabled,
  and these are enabled in the default mbedTLS config. Implement them here.

- To help compensate for the possible increase in code size, add a
  MICROPY_PY_SSL_DTLS build config macro that's enabled for EXTRA and
  above by default.

This allows bare metal mbedTLS ports to use DTLS with HelloVerify support.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-07-23 15:47:16 +10:00
..
argcheck.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
asmarm.c py/asmarm: Implement the full set of Viper load/store operations. 2025-07-01 15:34:29 +10:00
asmarm.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
asmbase.c py/asmbase: Fix assertion error with viper code. 2025-06-16 14:02:30 +10:00
asmbase.h py/asmrv32: Add RISC-V RV32IMC native code emitter. 2024-06-21 15:06:07 +10:00
asmrv32.c py/asmrv32: Implement the full set of Viper load/store operations. 2025-07-01 15:34:29 +10:00
asmrv32.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
asmthumb.c py/asmthumb: Clean up integer-indexed load/store emitters. 2025-07-01 15:43:17 +10:00
asmthumb.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
asmx64.c py/asm: Add ASM_NOT_REG and ASM_NEG_REG macros for unary ops. 2024-03-19 10:31:36 +11:00
asmx64.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
asmx86.c py/asm: Add ASM_NOT_REG and ASM_NEG_REG macros for unary ops. 2024-03-19 10:31:36 +11:00
asmx86.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
asmxtensa.c py/asmxtensa: Implement the full set of Viper load/store operations. 2025-07-01 15:34:29 +10:00
asmxtensa.h py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
bc.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
bc.h py/bc: Factor out helper for line-number decoding. 2025-07-08 11:03:22 -04:00
bc0.h
binary.c py: Fix undefined left shift operations. 2025-06-16 23:27:50 +10:00
binary.h
builtin.h extmod/modmachine: Use sys.exit as implementation of machine.soft_reset. 2024-07-20 12:18:07 +10:00
builtinevex.c py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
builtinhelp.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
builtinimport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
compile.c py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
compile.h py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
cstack.c py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
cstack.h py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
dynruntime.h all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
dynruntime.mk py/dynruntime.mk: Enable single-precision float by default on armv6/7m. 2025-06-10 13:43:03 +10:00
emit.h py/emitinlinerv32: Add inline assembler support for RV32. 2025-01-02 11:49:10 +11:00
emitbc.c py: Remove 5 TODOs in emitbc, objrange and repl. 2024-07-18 12:35:42 +10:00
emitcommon.c py/compile: Fix scope of assignment expression target in comprehensions. 2023-03-09 12:13:12 +11:00
emitglue.c py/emitglue: Fix clear cache builtin warning on Clang for AArch32. 2024-12-10 12:04:14 +11:00
emitglue.h py/emitglue: Add explicit cast of proto_fun to uint8_t pointer. 2024-03-04 10:27:07 +11:00
emitinlinerv32.c py/emitinlinerv32: Move include of asmrv32.h to within feature guard. 2025-04-14 11:13:19 +10:00
emitinlinethumb.c py/emitinlinethumb: Refactor string literal as array initializer. 2025-05-09 18:31:40 +10:00
emitinlinextensa.c py/emitinlinextensa: Add the rest of LX3 opcodes to the assembler. 2025-05-29 12:12:39 +10:00
emitnarm.c py/emitnative: Access qstr values using indirection table qstr_table. 2022-05-23 15:43:06 +10:00
emitnative.c py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
emitndebug.c py/emitnative: Let emitters know the compiled entity's name. 2025-07-04 16:07:04 +10:00
emitnrv32.c py/asmrv32: Add RISC-V RV32IMC native code emitter. 2024-06-21 15:06:07 +10:00
emitnthumb.c py/emitnative: Access qstr values using indirection table qstr_table. 2022-05-23 15:43:06 +10:00
emitnx64.c py/emitnative: Access qstr values using indirection table qstr_table. 2022-05-23 15:43:06 +10:00
emitnx86.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
emitnxtensa.c py/emitnative: Access qstr values using indirection table qstr_table. 2022-05-23 15:43:06 +10:00
emitnxtensawin.c py/emitnative: Access qstr values using indirection table qstr_table. 2022-05-23 15:43:06 +10:00
formatfloat.c all: Fix various spelling mistakes found by codespell 2.2.6. 2023-10-03 11:24:50 +11:00
formatfloat.h
frozenmod.c
frozenmod.h py/builtin: Clean up and simplify import_stat and builtin_open config. 2022-05-25 13:04:45 +10:00
gc.c py/gc: Reorder static functions for clarity. 2025-02-03 15:02:02 +11:00
gc.h py/gc: Add "max new split" value in result of gc.mem_free(). 2023-09-15 12:19:13 +10:00
grammar.h
lexer.c py/lexer: Add static assert that token enum values all fit in a byte. 2024-07-18 12:44:44 +10:00
lexer.h py/lexer: Add static assert that token enum values all fit in a byte. 2024-07-18 12:44:44 +10:00
make_root_pointers.py py/make_root_pointers: Add MP_REGISTER_ROOT_POINTER parser/generator. 2022-07-18 13:48:23 +10:00
makecompresseddata.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
makemoduledefs.py py/makemoduledefs.py: Automatically declare delegation attr functions. 2023-06-14 19:03:46 +10:00
makeqstrdata.py py/makeqstrdata.py: Implement MicroPython compatibility. 2025-03-05 16:00:32 +11:00
makeqstrdefs.py py/makeqstrdefs.py: Stop generating temporary intermediate file. 2023-12-14 22:55:08 -08:00
makeversionhdr.py py/makeversionhdr.py: Change utcfromtimestamp() to fromtimestamp(). 2025-05-07 17:31:11 +10:00
malloc.c py/malloc: Add mutex for tracked allocations. 2025-05-02 17:24:16 +10:00
map.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
misc.h py/objint_longlong: Add arithmetic overflow checks. 2025-07-18 00:12:05 +10:00
mkenv.mk esp32: Pass V=1 or BUILD_VERBOSE through to idf.py when building. 2024-12-10 11:28:38 +11:00
mkrules.cmake py/mkrules.cmake: Add CMake support for compressed error messages. 2025-04-22 11:55:39 +10:00
mkrules.mk py/mkrules.mk: Mute blobless errors. 2025-07-20 22:59:06 +10:00
modarray.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modbuiltins.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modcmath.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modcollections.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
moderrno.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modgc.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modio.c py/modio: Fix the case where write fails in BufferedWriter.flush. 2025-06-17 10:15:59 +10:00
modmath.c py/obj: Fix nan handling in object REPR_C and REPR_D. 2025-06-24 00:30:08 +10:00
modmicropython.c py/gc: Allow gc_free from inside a gc_sweep finalizer. 2025-02-03 15:02:02 +11:00
modstruct.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modsys.c py/modsys: Add sys.implementation._thread attribute. 2025-07-22 23:22:05 +10:00
modthread.c py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
mpconfig.h extmod/mbedtls: Implement recommended DTLS features, make optional. 2025-07-23 15:47:16 +10:00
mperrno.h all: Rename UMODULE to MODULE in preprocessor/Makefile vars. 2023-06-08 17:54:11 +10:00
mphal.h ports: Fix sys.stdout.buffer.write() return value. 2023-12-22 10:32:46 +11:00
mpprint.c py/mpprint: Rework integer vararg handling. 2025-07-16 11:12:31 +10:00
mpprint.h py/mpprint: Remove unused "PF_FLAG_NO_TRAILZ" flag. 2025-06-16 13:58:13 +10:00
mpstate.c
mpstate.h py: Add optional support for recursive mutexes, use for gc mutex. 2025-02-03 15:02:02 +11:00
mpthread.h py: Add optional support for recursive mutexes, use for gc mutex. 2025-02-03 15:02:02 +11:00
mpz.c py/mpz: Avoid undefined behavior decrementing NULL. 2025-06-16 12:11:07 +10:00
mpz.h py/objint: Fix int.to_bytes() buffer size checks. 2024-06-24 14:07:00 +10:00
nativeglue.c py/dynruntime: Export mp_load_method_maybe and mp_arg_parse_all* funcs. 2024-05-24 13:50:57 +10:00
nativeglue.h all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlr.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlr.h all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlraarch64.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrmips.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrpowerpc.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrrv32.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrrv64.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrsetjmp.c py/nlrsetjmp: Use MP_NLR_JUMP_HEAD macro to simplify code. 2023-06-02 21:47:34 +10:00
nlrthumb.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrx64.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrx86.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
nlrxtensa.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
obj.c py/obj: Add functions to retrieve large integers from mp_obj_t. 2025-07-09 11:54:21 +10:00
obj.h py/obj: Add functions to retrieve large integers from mp_obj_t. 2025-07-09 11:54:21 +10:00
objarray.c py/objarray: Allow extending array with any iterable. 2025-06-10 15:32:54 +10:00
objarray.h py/objarray: Add MP_DEFINE_MEMORYVIEW_OBJ convenience macro. 2025-03-06 12:52:35 +11:00
objattrtuple.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objbool.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objboundmeth.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objcell.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objclosure.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objcode.c py/objcode: Remove co_lnotab from v2 preview. 2025-07-18 10:59:21 -04:00
objcode.h py/profile: Fix printing lineno in frame objects. 2025-07-06 00:06:34 +10:00
objcomplex.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objdeque.c py/objdeque: Fix buffer overflow in deque_subscr. 2024-11-04 11:21:56 +11:00
objdict.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objenumerate.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objexcept.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objexcept.h py/obj: Convert make_new into a mp_obj_type_t slot. 2022-09-19 19:06:15 +10:00
objfilter.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objfloat.c py/objfloat: Change MSVC workaround for NAN being a constant. 2025-06-11 00:43:31 +10:00
objfun.c py/objfun: Implement function.__code__ and function constructor. 2025-02-11 16:51:50 +11:00
objfun.h py/objfun: Fix C++ compatibility with casting in inline functions. 2024-04-22 10:34:01 +10:00
objgenerator.c py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
objgenerator.h
objgetitemiter.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objint.c py/objstr: Add support for the :_b/o/x specifier in str.format. 2025-05-13 12:16:35 +10:00
objint.h py/objint: Fix int.to_bytes() buffer size checks. 2024-06-24 14:07:00 +10:00
objint_longlong.c py/parsenum: Extend mp_parse_num_integer() to parse long long. 2025-07-18 00:12:16 +10:00
objint_mpz.c py/objint: Try to convert big-int back to small-int after binary op. 2024-07-01 13:52:59 +10:00
objlist.c py/objlist: Reduce code size in slice operations. 2025-06-16 13:43:47 +10:00
objlist.h py/obj: Convert make_new into a mp_obj_type_t slot. 2022-09-19 19:06:15 +10:00
objmap.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objmodule.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objmodule.h py/makemoduledefs.py: Automatically declare delegation attr functions. 2023-06-14 19:03:46 +10:00
objnamedtuple.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objnamedtuple.h py/obj: Convert make_new into a mp_obj_type_t slot. 2022-09-19 19:06:15 +10:00
objnone.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objobject.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objpolyiter.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objproperty.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objrange.c py/objrange: Match CPython range slicing. 2025-04-21 17:09:37 +10:00
objreversed.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objringio.c py/objringio: Add micropython.RingIO() interface for general use. 2024-09-19 18:00:44 +10:00
objset.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objsingleton.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objslice.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objstr.c py/objstr: Add support for the :_b/o/x specifier in str.format. 2025-05-13 12:16:35 +10:00
objstr.h py/objstr: Add a macro to define a bytes object at compile time. 2024-03-15 13:37:31 +11:00
objstringio.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objstringio.h
objstrunicode.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
objtuple.c py/objstr: Fix handling of OP_MODULO with namedtuple. 2025-04-21 17:37:39 +10:00
objtuple.h py: Make struct-initializing macros compatible with C++. 2025-04-24 15:55:06 +02:00
objtype.c py/objtype: Don't delegate lookup of descriptor methods to __getattr__. 2024-10-16 15:03:30 +11:00
objtype.h py/obj: Optimise code size and performance for make_new as a slot. 2022-09-19 19:06:16 +10:00
objzip.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
opmethods.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
pairheap.c
pairheap.h
parse.c py/parse: Remove old esp32 compiler workaround. 2024-09-27 00:03:16 +10:00
parse.h
parsenum.c py/parsenum: Extend mp_parse_num_integer() to parse long long. 2025-07-18 00:12:16 +10:00
parsenum.h py/parsenum: Optimise when building with complex disabled. 2022-06-23 11:46:47 +10:00
parsenumbase.c py/parsenumbase: Favor clarity of code over manual optimisation. 2025-01-29 12:39:05 +11:00
parsenumbase.h
persistentcode.c py: Fix undefined left shift operations. 2025-06-16 23:27:50 +10:00
persistentcode.h py/persistentcode: Add mp_raw_code_save_fun_to_bytes. 2025-02-11 16:54:02 +11:00
profile.c py/profile: Fix printing lineno in frame objects. 2025-07-06 00:06:34 +10:00
profile.h py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
py.cmake py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
py.mk py/objcode: Factor code object out into its own file. 2025-02-11 16:42:14 +11:00
pystack.c
pystack.h
qstr.c py/qstr: Add qstr_from_strn_static() helper function. 2024-12-23 13:04:54 +11:00
qstr.h py/qstr: Add qstr_from_strn_static() helper function. 2024-12-23 13:04:54 +11:00
qstrdefs.h extmod/vfs: Add mp_vfs_mount_romfs_protected() helper. 2025-03-06 12:52:35 +11:00
reader.c py/reader: Provide mp_reader_try_read_rom() function. 2024-12-23 13:04:54 +11:00
reader.h all: Upgrade codespell to v2.4.1. 2025-02-25 16:11:33 +11:00
repl.c py/repl: Skip private variables when printing tab completion options. 2025-06-19 17:23:42 +10:00
repl.h
ringbuf.c py/objringio: Add micropython.RingIO() interface for general use. 2024-09-19 18:00:44 +10:00
ringbuf.h py/objringio: Add micropython.RingIO() interface for general use. 2024-09-19 18:00:44 +10:00
runtime.c py/smallint: Update mp_small_int_mul_overflow() to perform the multiply. 2025-07-18 00:12:13 +10:00
runtime.h py/runtime: Initialize profile fields in mp_thread_init_state. 2025-07-06 00:05:47 +10:00
runtime0.h py/emitglue: Simplify mp_raw_code_t's kind and scope_flags members. 2024-02-16 12:48:02 +11:00
runtime_utils.c
scheduler.c py/scheduler: Only run scheduler callbacks queued before run started. 2025-06-04 11:31:12 +10:00
scope.c py/makeqstrdata.py: Ensure that scope names get low qstr values. 2024-03-26 22:52:25 +11:00
scope.h py/emitglue: Include fun_data_len in mp_raw_code_t only when saving. 2024-02-16 14:17:01 +11:00
sequence.c py/sequence: Remove unused len argument from mp_seq_extract_slice. 2024-07-18 12:51:29 +10:00
showbc.c py/showbc: Use line-number decoding helper. 2025-07-08 11:03:22 -04:00
smallint.c py/smallint: Update mp_small_int_mul_overflow() to perform the multiply. 2025-07-18 00:12:13 +10:00
smallint.h py/smallint: Update mp_small_int_mul_overflow() to perform the multiply. 2025-07-18 00:12:13 +10:00
stackctrl.c py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
stackctrl.h py: Add new cstack API for stack checking, with limit margin macro. 2024-08-14 12:55:45 +10:00
stream.c py/stream: Factor stream implementations. 2024-03-15 18:11:28 +11:00
stream.h py/stream: Factor stream implementations. 2024-03-15 18:11:28 +11:00
unicode.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
unicode.h
usermod.cmake py/usermod.cmake: If USER_C_MODULES is a folder add micropython.cmake. 2024-11-20 17:38:39 +11:00
verbose.mk esp32: Pass V=1 or BUILD_VERBOSE through to idf.py when building. 2024-12-10 11:28:38 +11:00
vm.c py/vm: Avoid heap-allocating slices when subscripting built-ins. 2025-07-16 00:12:47 +10:00
vmentrytable.h
vstr.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
warning.c