initial commit
This commit is contained in:
66
src/main.c
Executable file
66
src/main.c
Executable file
@@ -0,0 +1,66 @@
|
||||
#include <tlibc/include/std.h>
|
||||
#include <BearSSL/inc/bearssl_block.h>
|
||||
#include <BearSSL/inc/bearssl_hash.h>
|
||||
#include <BearSSL/inc/bearssl_rand.h>
|
||||
|
||||
char *print_hex_memory(u8 *p, u32 len) {
|
||||
char tmp[3];
|
||||
u32 output_len = len*2+1;
|
||||
char *output = (char*)malloc(output_len);
|
||||
memset(output, 0, output_len);
|
||||
for (u32 i=0; i < len; i++) {
|
||||
sprintf(tmp, "%02x", p[i]);
|
||||
strcat(output, tmp);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
int main(){
|
||||
const char key_raw[] = "abobus";
|
||||
const u32 key_raw_len = ARRAY_SIZE(key_raw)-1;
|
||||
const char data[] = "0123456789_hii_"; // must be multiple of 16
|
||||
const u32 data_len = ARRAY_SIZE(data);
|
||||
|
||||
u8 hash_buffer[br_sha256_SIZE];
|
||||
const u32 hash_buffer_len = ARRAY_SIZE(hash_buffer);
|
||||
memset(hash_buffer, 0, hash_buffer_len);
|
||||
memcpy(hash_buffer, key_raw, key_raw_len);
|
||||
|
||||
br_sha256_context sha256_ctx;
|
||||
br_sha256_init(&sha256_ctx);
|
||||
|
||||
// hash multiple times
|
||||
for(i32 i = 0; i < 8; i++){
|
||||
br_sha256_update(&sha256_ctx, hash_buffer, hash_buffer_len);
|
||||
br_sha256_out(&sha256_ctx, hash_buffer);
|
||||
printf("hash(i=%i) %s\n", i, print_hex_memory(hash_buffer, hash_buffer_len));
|
||||
}
|
||||
|
||||
|
||||
u8 key_padded[32]; // must be 16 or 24 or 32
|
||||
const u32 key_padded_len = ARRAY_SIZE(key_padded);
|
||||
memset(key_padded, 0, key_padded_len);
|
||||
memcpy(key_padded, hash_buffer, key_padded_len);
|
||||
|
||||
u8 buffer[512];
|
||||
const u32 buffer_len = ARRAY_SIZE(buffer);
|
||||
memset(buffer, 0, buffer_len);
|
||||
memcpy(buffer, data, data_len);
|
||||
|
||||
br_aes_ct64_cbcenc_keys enc_ctx;
|
||||
br_aes_ct64_cbcenc_init(&enc_ctx, key_padded, key_padded_len);
|
||||
u8 iv[16];
|
||||
memset(iv, 0, ARRAY_SIZE(iv));
|
||||
br_aes_ct64_cbcenc_run(&enc_ctx, iv, buffer, buffer_len);
|
||||
|
||||
printf("data encrypted\n");
|
||||
|
||||
br_aes_ct64_cbcdec_keys dec_ctx;
|
||||
br_aes_ct64_cbcdec_init(&dec_ctx, key_padded, key_padded_len);
|
||||
memset(iv, 0, ARRAY_SIZE(iv));
|
||||
br_aes_ct64_cbcdec_run(&dec_ctx, iv, buffer, buffer_len);
|
||||
|
||||
printf("data decrypted\n");
|
||||
fwrite(buffer, 1, buffer_len, stdout);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user