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