File indexing completed on 2025-08-27 09:37:33
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef MBEDTLS_PLATFORM_H
0027 #define MBEDTLS_PLATFORM_H
0028 #include "mbedtls/private_access.h"
0029
0030 #include "mbedtls/build_info.h"
0031
0032 #if defined(MBEDTLS_HAVE_TIME)
0033 #include "mbedtls/platform_time.h"
0034 #endif
0035
0036 #ifdef __cplusplus
0037 extern "C" {
0038 #endif
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
0053 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
0054 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
0055 #endif
0056
0057 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
0058 #include <stdio.h>
0059 #include <stdlib.h>
0060 #if defined(MBEDTLS_HAVE_TIME)
0061 #include <time.h>
0062 #endif
0063 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
0064 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
0065 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
0066 #else
0067 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
0068 #endif
0069 #endif
0070 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
0071 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
0072 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
0073 #else
0074 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
0075 #endif
0076 #endif
0077 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
0078 #define MBEDTLS_PLATFORM_STD_PRINTF printf
0079 #endif
0080 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
0081 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
0082 #endif
0083 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
0084 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
0085 #endif
0086 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
0087 #define MBEDTLS_PLATFORM_STD_FREE free
0088 #endif
0089 #if !defined(MBEDTLS_PLATFORM_STD_SETBUF)
0090 #define MBEDTLS_PLATFORM_STD_SETBUF setbuf
0091 #endif
0092 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
0093 #define MBEDTLS_PLATFORM_STD_EXIT exit
0094 #endif
0095 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
0096 #define MBEDTLS_PLATFORM_STD_TIME time
0097 #endif
0098 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
0099 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
0100 #endif
0101 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
0102 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
0103 #endif
0104 #if defined(MBEDTLS_FS_IO)
0105 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
0106 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
0107 #endif
0108 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
0109 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
0110 #endif
0111 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
0112 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
0113 #endif
0114 #endif
0115 #else
0116 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
0117 #include MBEDTLS_PLATFORM_STD_MEM_HDR
0118 #endif
0119 #endif
0120
0121
0122
0123 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_CALLOC)
0124 #define MBEDTLS_PLATFORM_STD_CALLOC
0125 #endif
0126
0127 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_FREE)
0128 #define MBEDTLS_PLATFORM_STD_FREE
0129 #endif
0130
0131
0132
0133
0134
0135
0136
0137
0138 #if defined(MBEDTLS_PLATFORM_MEMORY)
0139 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
0140 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
0141 #undef mbedtls_free
0142 #undef mbedtls_calloc
0143 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
0144 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
0145 #else
0146
0147 #include <stddef.h>
0148 extern void *mbedtls_calloc(size_t n, size_t size);
0149 extern void mbedtls_free(void *ptr);
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160 int mbedtls_platform_set_calloc_free(void *(*calloc_func)(size_t, size_t),
0161 void (*free_func)(void *));
0162 #endif
0163 #else
0164 #undef mbedtls_free
0165 #undef mbedtls_calloc
0166 #define mbedtls_free free
0167 #define mbedtls_calloc calloc
0168 #endif
0169
0170
0171
0172
0173 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
0174
0175 #include <stdio.h>
0176 extern int (*mbedtls_fprintf)(FILE *stream, const char *format, ...);
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187 int mbedtls_platform_set_fprintf(int (*fprintf_func)(FILE *stream, const char *,
0188 ...));
0189 #else
0190 #undef mbedtls_fprintf
0191 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
0192 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
0193 #else
0194 #define mbedtls_fprintf fprintf
0195 #endif
0196 #endif
0197
0198
0199
0200
0201 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
0202 extern int (*mbedtls_printf)(const char *format, ...);
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213 int mbedtls_platform_set_printf(int (*printf_func)(const char *, ...));
0214 #else
0215 #undef mbedtls_printf
0216 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
0217 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
0218 #else
0219 #define mbedtls_printf printf
0220 #endif
0221 #endif
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
0233
0234 int mbedtls_platform_win32_snprintf(char *s, size_t n, const char *fmt, ...);
0235 #endif
0236
0237 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
0238 extern int (*mbedtls_snprintf)(char *s, size_t n, const char *format, ...);
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248 int mbedtls_platform_set_snprintf(int (*snprintf_func)(char *s, size_t n,
0249 const char *format, ...));
0250 #else
0251 #undef mbedtls_snprintf
0252 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
0253 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
0254 #else
0255 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
0256 #endif
0257 #endif
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
0269 #include <stdarg.h>
0270
0271 int mbedtls_platform_win32_vsnprintf(char *s, size_t n, const char *fmt, va_list arg);
0272 #endif
0273
0274 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
0275 #include <stdarg.h>
0276 extern int (*mbedtls_vsnprintf)(char *s, size_t n, const char *format, va_list arg);
0277
0278
0279
0280
0281
0282
0283
0284
0285 int mbedtls_platform_set_vsnprintf(int (*vsnprintf_func)(char *s, size_t n,
0286 const char *format, va_list arg));
0287 #else
0288 #undef mbedtls_vsnprintf
0289 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
0290 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
0291 #else
0292 #define mbedtls_vsnprintf vsnprintf
0293 #endif
0294 #endif
0295
0296
0297
0298
0299 #if defined(MBEDTLS_PLATFORM_SETBUF_ALT)
0300 #include <stdio.h>
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317 extern void (*mbedtls_setbuf)(FILE *stream, char *buf);
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328 int mbedtls_platform_set_setbuf(void (*setbuf_func)(
0329 FILE *stream, char *buf));
0330 #else
0331 #undef mbedtls_setbuf
0332 #if defined(MBEDTLS_PLATFORM_SETBUF_MACRO)
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343 #define mbedtls_setbuf MBEDTLS_PLATFORM_SETBUF_MACRO
0344 #else
0345 #define mbedtls_setbuf setbuf
0346 #endif
0347 #endif
0348
0349
0350
0351
0352 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
0353 extern void (*mbedtls_exit)(int status);
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364 int mbedtls_platform_set_exit(void (*exit_func)(int status));
0365 #else
0366 #undef mbedtls_exit
0367 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
0368 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
0369 #else
0370 #define mbedtls_exit exit
0371 #endif
0372 #endif
0373
0374
0375
0376
0377 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
0378 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
0379 #else
0380 #define MBEDTLS_EXIT_SUCCESS 0
0381 #endif
0382 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
0383 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
0384 #else
0385 #define MBEDTLS_EXIT_FAILURE 1
0386 #endif
0387
0388
0389
0390
0391
0392
0393
0394 #if defined(MBEDTLS_ENTROPY_NV_SEED)
0395 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
0396
0397 int mbedtls_platform_std_nv_seed_read(unsigned char *buf, size_t buf_len);
0398 int mbedtls_platform_std_nv_seed_write(unsigned char *buf, size_t buf_len);
0399 #endif
0400
0401 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
0402 extern int (*mbedtls_nv_seed_read)(unsigned char *buf, size_t buf_len);
0403 extern int (*mbedtls_nv_seed_write)(unsigned char *buf, size_t buf_len);
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414 int mbedtls_platform_set_nv_seed(
0415 int (*nv_seed_read_func)(unsigned char *buf, size_t buf_len),
0416 int (*nv_seed_write_func)(unsigned char *buf, size_t buf_len)
0417 );
0418 #else
0419 #undef mbedtls_nv_seed_read
0420 #undef mbedtls_nv_seed_write
0421 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
0422 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
0423 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
0424 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
0425 #else
0426 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
0427 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
0428 #endif
0429 #endif
0430 #endif
0431
0432 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
0433
0434
0435
0436
0437
0438
0439
0440 typedef struct mbedtls_platform_context {
0441 char MBEDTLS_PRIVATE(dummy);
0442 }
0443 mbedtls_platform_context;
0444
0445 #else
0446 #include "platform_alt.h"
0447 #endif
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464 int mbedtls_platform_setup(mbedtls_platform_context *ctx);
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479 void mbedtls_platform_teardown(mbedtls_platform_context *ctx);
0480
0481 #ifdef __cplusplus
0482 }
0483 #endif
0484
0485 #endif