parse_rsa.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module cert_req
  3. * @file cert_req.c
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. *******************************************************************************
  7. * @history Version Author Comment
  8. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  9. *******************************************************************************
  10. */
  11. #if 0
  12. #include "parse_rsa.h"
  13. #if !defined(MBEDTLS_CONFIG_FILE)
  14. #include "mbedtls/config.h"
  15. #else
  16. #include MBEDTLS_CONFIG_FILE
  17. #endif
  18. #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
  19. #include "mbedtls/memory_buffer_alloc.h"
  20. #endif
  21. #include "mbedtls/platform.h"
  22. #include "mbedtls/x509_csr.h"
  23. #include "mbedtls/entropy.h"
  24. #include "mbedtls/ctr_drbg.h"
  25. #include "mbedtls/error.h"
  26. #include "mbedtls/certs.h"
  27. #include "mbedtls/md4.h"
  28. #include "settings_api.h"
  29. #ifdef PRINTF_STDLIB
  30. #include <stdio.h>
  31. #endif
  32. #ifdef PRINTF_CUSTOM
  33. #include "tinystdio.h"
  34. #endif
  35. #include <stdlib.h>
  36. #include <string.h>
  37. extern SETTINGS_t sSettings;
  38. /*
  39. * For heap usage estimates, we need an estimate of the overhead per allocated
  40. * block. ptmalloc2/3 (used in gnu libc for instance) uses 2 size_t per block,
  41. * so use that as our baseline.
  42. */
  43. #define MEM_BLOCK_OVERHEAD ( 2 * sizeof( size_t ) )
  44. #define MEMORY_MEASURE_INIT \
  45. size_t max_used, max_blocks, max_bytes; \
  46. size_t prv_used, prv_blocks; \
  47. mbedtls_memory_buffer_alloc_cur_get( &prv_used, &prv_blocks ); \
  48. mbedtls_memory_buffer_alloc_max_reset( );
  49. #define MEMORY_MEASURE_PRINT( title_len ) \
  50. mbedtls_memory_buffer_alloc_max_get( &max_used, &max_blocks ); \
  51. max_used -= prv_used; \
  52. max_blocks -= prv_blocks; \
  53. max_bytes = max_used + MEM_BLOCK_OVERHEAD * max_blocks; \
  54. mbedtls_printf( "%6u heap bytes\r\n", (unsigned) max_bytes );
  55. #define RSA_PRIVATE_KEY_2048 ""
  56. #define HEAP_SIZE (1u << 14) // 16k
  57. unsigned char malloc_buf[HEAP_SIZE];
  58. void SSL_ParseRsaKey()
  59. {
  60. mbedtls_pk_context pk;
  61. const char *rsa_keys = RSA_PRIVATE_KEY_2048;
  62. int ret;
  63. MEMORY_MEASURE_INIT
  64. //mbedtls_memory_buffer_alloc_self_test(1);
  65. mbedtls_memory_buffer_alloc_init(malloc_buf, sizeof(malloc_buf));
  66. //mbedtls_memory_buffer_alloc_status();
  67. //MEMORY_MEASURE_PRINT(5)
  68. mbedtls_printf( "\r\n . Loading the key..." );
  69. mbedtls_pk_init( &pk );
  70. ret = mbedtls_pk_parse_key( &pk, (const unsigned char *) rsa_keys,
  71. strlen(rsa_keys) + 1, NULL, 0 );
  72. if( ret != 0 )
  73. mbedtls_printf( " failed\r\n ! mbedtls_pk_parse_key returned %d\r\n", ret );
  74. else
  75. mbedtls_printf( " ok\r\n");
  76. //MEMORY_MEASURE_PRINT(5)
  77. //mbedtls_memory_buffer_alloc_status();
  78. }
  79. #endif
  80. /********************************* (C) РОТЕК **********************************/