parse_rsa.c 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. #include <stdio.h>
  30. #include <stdlib.h>
  31. #include <string.h>
  32. extern SETTINGS_t sSettings;
  33. /*
  34. * For heap usage estimates, we need an estimate of the overhead per allocated
  35. * block. ptmalloc2/3 (used in gnu libc for instance) uses 2 size_t per block,
  36. * so use that as our baseline.
  37. */
  38. #define MEM_BLOCK_OVERHEAD ( 2 * sizeof( size_t ) )
  39. #define MEMORY_MEASURE_INIT \
  40. size_t max_used, max_blocks, max_bytes; \
  41. size_t prv_used, prv_blocks; \
  42. mbedtls_memory_buffer_alloc_cur_get( &prv_used, &prv_blocks ); \
  43. mbedtls_memory_buffer_alloc_max_reset( );
  44. #define MEMORY_MEASURE_PRINT( title_len ) \
  45. mbedtls_memory_buffer_alloc_max_get( &max_used, &max_blocks ); \
  46. max_used -= prv_used; \
  47. max_blocks -= prv_blocks; \
  48. max_bytes = max_used + MEM_BLOCK_OVERHEAD * max_blocks; \
  49. mbedtls_printf( "%6u heap bytes\r\n", (unsigned) max_bytes );
  50. #define RSA_PRIVATE_KEY_2048 ""
  51. #define HEAP_SIZE (1u << 14) // 16k
  52. unsigned char malloc_buf[HEAP_SIZE];
  53. void SSL_ParseRsaKey()
  54. {
  55. mbedtls_pk_context pk;
  56. const char *rsa_keys = RSA_PRIVATE_KEY_2048;
  57. int ret;
  58. MEMORY_MEASURE_INIT
  59. //mbedtls_memory_buffer_alloc_self_test(1);
  60. mbedtls_memory_buffer_alloc_init(malloc_buf, sizeof(malloc_buf));
  61. //mbedtls_memory_buffer_alloc_status();
  62. //MEMORY_MEASURE_PRINT(5)
  63. mbedtls_printf( "\r\n . Loading the key..." );
  64. mbedtls_pk_init( &pk );
  65. ret = mbedtls_pk_parse_key( &pk, (const unsigned char *) rsa_keys,
  66. strlen(rsa_keys) + 1, NULL, 0 );
  67. if( ret != 0 )
  68. mbedtls_printf( " failed\r\n ! mbedtls_pk_parse_key returned %d\r\n", ret );
  69. else
  70. mbedtls_printf( " ok\r\n");
  71. //MEMORY_MEASURE_PRINT(5)
  72. //mbedtls_memory_buffer_alloc_status();
  73. }
  74. #endif
  75. /********************************* (C) РОТЕК **********************************/