89 lines
1.9 KiB
C
89 lines
1.9 KiB
C
/**
|
|
* A playground for testing mbedtls functions
|
|
*/
|
|
|
|
#include "mbedtls/bignum.h"
|
|
|
|
int convertToString(unsigned char* string, int len) {
|
|
// load up the mpi
|
|
mbedtls_mpi mpi;
|
|
mbedtls_mpi_init(&mpi);
|
|
int retVal = mbedtls_mpi_read_binary(&mpi, string, len);
|
|
if (retVal < 0) {
|
|
mbedtls_mpi_free(&mpi);
|
|
return 0;
|
|
}
|
|
|
|
// put it in string form so we can see it
|
|
size_t buffer_len = 50;
|
|
size_t output_len = 0;
|
|
char buffer[buffer_len];
|
|
retVal = mbedtls_mpi_write_string(&mpi, 10, buffer, buffer_len, &output_len);
|
|
if (retVal < 0) {
|
|
mbedtls_mpi_free(&mpi);
|
|
return 0;
|
|
}
|
|
for(int i = 0; i < output_len; i++) {
|
|
printf("%02x", buffer[i]);
|
|
}
|
|
printf("\n");
|
|
mbedtls_mpi_free(&mpi);
|
|
return 1;
|
|
}
|
|
|
|
int test_mbedtls_varint_128_binary() {
|
|
// the values I'm working with 0x08, 0x00, 0x18, 0xa7, 0x09
|
|
unsigned char starting_val[5] = { 0x08, 0x00, 0x18, 0x87, 0x09 };
|
|
size_t starting_len = 5;
|
|
|
|
for(int i = 0; i < 5; i++) {
|
|
if (convertToString(&starting_val[i], 5 - i) != 1)
|
|
return 0;
|
|
}
|
|
|
|
printf(" 3 and 4\n");
|
|
if (convertToString(&starting_val[2], 2) != 1) {
|
|
return 0;
|
|
}
|
|
|
|
printf("And now the other way...\n");
|
|
|
|
for(int i = 1; i <= 5; i--) {
|
|
if (convertToString(starting_val, i) != 1)
|
|
return 0;
|
|
}
|
|
|
|
|
|
return 1;
|
|
}
|
|
|
|
int test_mbedtls_varint_128_string() {
|
|
// go from string to uint_128 and back again
|
|
char* bigint_string = "47942806932686753431";
|
|
|
|
mbedtls_mpi mpi;
|
|
|
|
mbedtls_mpi_init(&mpi);
|
|
|
|
int retVal = mbedtls_mpi_read_string( &mpi, 10, bigint_string );
|
|
if (retVal < 0) {
|
|
mbedtls_mpi_free(&mpi);
|
|
return 0;
|
|
}
|
|
|
|
// now go back again
|
|
size_t buffer_len = 50;
|
|
size_t output_len = 0;
|
|
char buffer[buffer_len];
|
|
retVal = mbedtls_mpi_write_string(&mpi, 10, buffer, buffer_len, &output_len);
|
|
if (retVal < 0) {
|
|
mbedtls_mpi_free(&mpi);
|
|
return 0;
|
|
}
|
|
if (strcmp(buffer, bigint_string) != 0) {
|
|
mbedtls_mpi_free(&mpi);
|
|
return 0;
|
|
}
|
|
mbedtls_mpi_free(&mpi);
|
|
return 1;
|
|
}
|