Example #1
0
string
hex_encode(uint8_t *data, size_t data_len) {
    uint8_t *ascii_hash = new uint8_t[data_len * 2];
    base16_encode_update(
        ascii_hash,
        data_len,
        data
    );

    string hexed{(const char *)ascii_hash, data_len * 2};
    delete [] ascii_hash;

    return hexed;
}
Example #2
0
int md5_sum(FILE *input, char output_string[BASE16_ENCODE_LENGTH(MD5_DIGEST_SIZE)])
{
    unsigned char bytes[BUFFER_SIZE];
    size_t bytes_read;
    struct md5_ctx md5;
    uint8_t digest[MD5_DIGEST_SIZE];

    md5_init(&md5);
    while((bytes_read = fread(bytes, sizeof(unsigned char), BUFFER_SIZE, input)) > 0)
    {
        md5_update(&md5, bytes_read, bytes);
    }
    if(ferror(input) != 0)
    {
        fprintf(stderr, "Error reading input file: %s.\n", strerror(errno));
        return -1;
    }
    md5_digest(&md5, MD5_DIGEST_SIZE, digest);
    // And build the hex checksum the nettle way ;)
    base16_encode_update((uint8_t *)output_string, MD5_DIGEST_SIZE, digest);

    return 0;
}