· 5 years ago · May 03, 2020, 10:22 AM
1#include <openssl/hmac.h>
2#include <string.h>
3#include <stdio.h>
4#include "generics.h"
5#include <curl/curl.h>
6#include <sys/time.h>
7
8char* btimestamp(){
9
10
11 struct timeval tv;
12 gettimeofday(&tv,NULL);
13 long long timems = (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000);
14 char* tmpstr =(char *) malloc(sizeof(char)*256);
15 sprintf(tmpstr, "%lld", timems);
16 return tmpstr;
17
18}
19
20char* concat(const char *s1, const char *s2)
21{
22 const size_t len1 = strlen(s1);
23 const size_t len2 = strlen(s2);
24 char *result =(char*) malloc(len1 + len2 + 1); // +1 for the null-terminator
25 // check for errors in malloc here
26 memcpy(result, s1, len1);
27 memcpy(result + len1, s2, len2 + 1); // +1 to copy the null-terminator
28 return result;
29}
30
31 char* bhmac(char* data) {
32
33 unsigned char *key = SECRETKEY;
34 unsigned char *result;
35 int result_len = 32;
36 int i;
37 //static char res_hexstring[32];
38 char *resptr = (char*)malloc(sizeof(char)*32);
39 result = HMAC(EVP_sha256(), key, strlen((char *)key), data, strlen((char *)data), NULL, NULL);
40 for (i = 0; i < result_len; i++) {
41 sprintf(&(resptr[i * 2]), "%02x", result[i]);
42 }
43 return resptr;
44 }
45
46int main() {
47
48 char *timestamp = btimestamp();
49 char *shastr = concat(partreq, timestamp);
50 char *computehmac = bhmac(shastr); //with this call valgrind crash
51
52/* other code here */
53 free(timestamp);
54 free(shastr);
55 free(computehmac);
56
57}