public async Task <RequestSignatureVerificationResult> VerifySignature(IOwinRequest request, SignedHttpRequestAuthenticationOptions options) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } var signatureParsingResult = _signatureParser.Parse(request, options); if (signatureParsingResult is SignatureParsingFailure parsingFailure) { var failure = SignatureVerificationFailure.InvalidSignature(parsingFailure.Description, parsingFailure.Failure); _logger?.LogWarning("Request signature verification failed ({0}): {1}", failure.Code, failure.Message); return(new RequestSignatureVerificationResultFailure(client: null, requestForVerification: null, failure)); } var parsedSignature = ((SignatureParsingSuccess)signatureParsingResult).Signature; var eventTask = options.OnSignatureParsed; if (eventTask != null) { await eventTask.Invoke(request, parsedSignature).ConfigureAwait(continueOnCapturedContext: false); } var requestForVerification = request.ToHttpRequestForVerification(parsedSignature); return(await _verificationOrchestrator.VerifySignature(requestForVerification).ConfigureAwait(continueOnCapturedContext: false)); }
public void GivenNullInput_ReturnsNull() { IOwinRequest nullRequest = null; // ReSharper disable once ExpressionIsAlwaysNull var actual = nullRequest.ToHttpRequestForVerification(_signature); actual.Should().BeNull(); }
public void GivenNullSignature_ThrowsArgumentNullException() { Action act = () => _owinRequest.ToHttpRequestForVerification(signature: null); act.Should().Throw <ArgumentNullException>(); }