1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00
libwebsockets/minimal-examples/secure-streams/minimal-secure-streams-sigv4
Andy Green 546c151555 ss: add set_metadata that takes a heap copy and make ss-h1 use it
Until now we set metadata value pointers into the onward wsi ah data
area... that's OK until we get a situation the wsi has gone away before we
have a chance to deliver the metadata over the proxy link.

Add a variant lws_ss_alloc_set_metadata() that allocates space on the heap
and takes a copy of the input metadata.  Change ss-h1 to alloc copies of
its metadata so we no longer race the wsi ah lifetime.
2021-03-14 15:05:18 +00:00
..
CMakeLists.txt ctest: adapt background script 2021-01-26 07:48:10 +00:00
README.md ss: auth: sigv4 2021-01-05 10:56:38 +00:00
ss-s3-main.c sigv4: allow arbitrary hash payloads 2021-01-29 15:53:49 +00:00
ss-s3-put.h ss: auth: sigv4 2021-01-05 10:56:38 +00:00
ss-s3-ss.c ss: add set_metadata that takes a heap copy and make ss-h1 use it 2021-03-14 15:05:18 +00:00

lws minimal secure streams sigv4

The application put a test file to AWS S3, using sigv4 auth.

It does it using Secure Streams... the streamtype is "s3PutObj", along with main are in ss-s3-main.c

The handler for state changes and payloads for "s3PutObj" is in ss-s3-ss.c

metadata

"aws_region" and "aws_service" are configured through metadata. Also, at least "x-amz-content-sha256:" and ""x-amz-date:" headers need to be in metadata.

credentials

credentials are read from ~/.aws/credentials, make sure you have valid keyid and key. One need to call lws_ss_sigv4_set_aws_key() to plug in aws credentials into Secure Streams and the index need to be match of the "blob_index" in entry of "auth" the policy. In addition, you need to change the S3 bucket name to your own, as bucket name is unique globally in S3.

build

 $ cmake . && make

usage

[2020/12/19 15:25:06:9763] U: LWS minimal secure streams sigv4
[2020/12/19 15:25:07:0768] U: ss_s3_state: LWSSSCS_CREATING, ord 0x0
[2020/12/19 15:25:07:0769] U: ss_s3_state: LWSSSCS_POLL, ord 0x0
[2020/12/19 15:25:07:0770] U: ss_s3_state: LWSSSCS_CONNECTING, ord 0x0
[2020/12/19 15:25:07:2317] U: SS / TX Payload
[2020/12/19 15:25:07:2317] U: SS / TX Payload Total = 1024, Pos = 0
[2020/12/19 15:25:07:3267] U: ss_s3_state: LWSSSCS_CONNECTED, ord 0x0
[2020/12/19 15:25:07:3267] U: ss_s3_state: LWSSSCS_QOS_ACK_REMOTE, ord 0x0
[2020/12/19 15:25:07:3267] U: ss_s3_state: LWSSSCS_DISCONNECTED, ord 0x0
[2020/12/19 15:25:07:3268] U: ss_s3_state: LWSSSCS_DESTROYING, ord 0x0
[2020/12/19 15:25:07:3269] U: Completed: OK