Movability of mbedtls (context) types

I am in the process of writing a C++ wrapper around some of mbedtls’s parts and am now wondering if I can safely move most of the mbedtls types, or in C terms if it is safe to return, say, an mbedtls_ssl_context from a function by value. Obviously I can decide that for the code I have but without documented behavior that would be rather fragile and could break (silently) with every update.

Note that the only construct in C that would break movability (as far as I can see) is self-references, i.e. if the struct or one of its constituents contains a pointer that is based on the address of the struct itself. If such references are not allowed in mbedtls code I would suggest documenting that.

(Motivation: movability makes it much simpler to build factory functions that properly set up contexts without resorting to an additional heap allocation and indirection)