0xFFFFBC80
С mbed_tls / error.h :
* Currently we try to keep all error codes within the negative space of 16
* bits signed integers to support all platforms (-0x0001 - -0x7FFF). In
* addition we'd like to give two layers of information on the error if
* possible.
*
* For that purpose the error codes are segmented in the following manner:
*
* 16 bit error code bit-segmentation
*
* 1 bit - Unused (sign bit)
* 3 bits - High level module ID
* 5 bits - Module-dependent error code
* 7 bits - Low level module errors
0xFFFFBC80
равно -0x4380
, а это 0100 0011 1000 0000
в двоичном виде
Тодает нам:
- 1 bit unused - 0
- 3 bits high level module id - 0b100
- 5 bits module dependent error code - 0b00111
- 7 bits low level module errors - 0b0000000
Теперь мы можем остановиться на поиске и интерпретации отдельных битов и чтении источников mbed_tls ... или просто умничать и делать grep -r 4380
на источниках mbed_tls, что приведет к строке в rsa.h :
#define MBEDTLS_ERR_RSA_VERIFY_FAILED -0x4380 /**< The PKCS#1 verification failed. */
Итак, проверка PKCS # 1 не удалась в вашем коде.
Но, на самом деле, зачем делать это вручную?Вы можете просто использовать функцию mbedtls_strerror :
char buf[1024];
mbedtls_strerror(0xFFFFBC80, buf, sizeof(buf));
printf("result: %s\n", buf);