in aws-crt-auth/Signing.cs [312:341]
public static CrtResult<CrtSigningResult> SignHttpRequest(HttpRequest request, AwsSigningConfig signingConfig)
{
if (request == null || signingConfig == null) {
throw new CrtException("Null argument passed to SignHttpRequest");
}
if (request.BodyStream != null) {
if (!request.BodyStream.CanSeek) {
throw new CrtException("Http request payload stream must be seekable in order to be signed");
}
}
var nativeConfig = new AwsSigningConfigNative(signingConfig);
uint headerCount = 0;
if (request.Headers != null) {
headerCount = (uint) request.Headers.Length;
}
HttpRequestSigningCallbackData callback = new HttpRequestSigningCallbackData();
callback.OriginalRequest = request; /* needed to build final signed request */
callback.ShouldSignHeader = signingConfig.ShouldSignHeader; /* prevent GC while signing */
callback.BodyStream = new CrtStreamWrapper(request.BodyStream);
ulong id = PendingHttpRequestSignings.AcquireStrongReference(callback);
API.SignRequestNative(request.Method, request.Uri, request.Headers, headerCount, callback.BodyStream.Delegates, nativeConfig, id, API.OnHttpRequestSigningComplete);
return callback.Result;
}