|
|
|
@ -37,7 +37,7 @@ static bool do_fetch( const char* uri, FILE* result )
|
|
|
|
|
http_client_do( request );
|
|
|
|
|
printf( "GET %s -> %ld\n", uri, status_code );
|
|
|
|
|
|
|
|
|
|
if( status_code == 401 ) {
|
|
|
|
|
if( status_code != 200 ) {
|
|
|
|
|
printf( "Retrying request with HTTP Signature header...\n" );
|
|
|
|
|
|
|
|
|
|
// Load crypto keys
|
|
|
|
@ -59,18 +59,22 @@ static bool do_fetch( const char* uri, FILE* result )
|
|
|
|
|
|
|
|
|
|
char date_header[512];
|
|
|
|
|
snprintf( date_header, sizeof(date_header), "Date: %s", hs.date );
|
|
|
|
|
printf( "date_header = %s\n", date_header );
|
|
|
|
|
|
|
|
|
|
char sign_header[512];
|
|
|
|
|
snprintf( sign_header, sizeof(sign_header), "Signature: keyId=\"https://%s/owner/actor#mainKey\",headers=\"(request-target) host date content-length digest\",signature=\"%s\"",
|
|
|
|
|
g_server->domain,
|
|
|
|
|
hs.signature
|
|
|
|
|
);
|
|
|
|
|
printf( "sign_header = %s\n", sign_header );
|
|
|
|
|
|
|
|
|
|
char digest_header[512];
|
|
|
|
|
snprintf( digest_header, sizeof(digest_header), "Digest: %s", hs.digest );
|
|
|
|
|
printf( "digets_header = %s\n", digest_header );
|
|
|
|
|
|
|
|
|
|
char content_length_header[512];
|
|
|
|
|
snprintf( content_length_header, sizeof(content_length_header), "Content-Length: %d", hs.content_length );
|
|
|
|
|
printf( "content_length_header = %s\n", content_length_header );
|
|
|
|
|
|
|
|
|
|
const void* request2[] = {
|
|
|
|
|
HTTP_REQ_URL, uri,
|
|
|
|
|