-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample.c
More file actions
51 lines (44 loc) · 1.68 KB
/
example.c
File metadata and controls
51 lines (44 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <openssl/hmac.h>
#include <openssl/sha.h>
#include "sigv4.h"
int HMAC_SHA256(const unsigned char *data, size_t data_len,
const unsigned char *key, size_t key_len,
unsigned char *out, size_t *out_len)
{
unsigned int len = 0;
char *ac = HMAC(EVP_sha256(), key, key_len, data, data_len, out, &len);
*out_len = len;
return (ac != NULL) ? 0 : -1;
}
int main()
{
aws_sigv4_params_t sigv4_params = {
.access_key_id = aws_sigv4_string((unsigned char *)"your_access_key"),
.secret_access_key = aws_sigv4_string((unsigned char *)"your_secret_key"),
.method = aws_sigv4_string((unsigned char *)"GET"),
.uri = aws_sigv4_string((unsigned char *)"/"),
.query_str = aws_sigv4_string((unsigned char *)"encoding-type=url"),
.host = aws_sigv4_string((unsigned char *)"riptides-sigv4.s3.eu-central-1.amazonaws.com"),
.region = aws_sigv4_string((unsigned char *)"eu-central-1"),
.service = aws_sigv4_string((unsigned char *)"s3"),
.x_amz_date = aws_sigv4_string((unsigned char *)"20250815T071550Z"),
.hmac_sha256 = HMAC_SHA256,
.sha256 = (void *)SHA256,
.sort = qsort,
};
char auth_buf[AWS_SIGV4_AUTH_HEADER_MAX_LEN] = {0};
aws_sigv4_header_t auth_header = {
.value = aws_sigv4_string((unsigned char *)auth_buf)};
// Initialize sigv4_params and auth_header as needed
int status = aws_sigv4_sign(&sigv4_params, &auth_header);
if (status == AWS_SIGV4_OK)
{
printf("Signature: %s\n", auth_header.value.data);
}
else
{
printf("Failed to sign request, status: %d\n", status);
}
return 0;
}