/// <summary>
 /// Signs an HTTP request with the MAuth-specific authentication information.
 /// </summary>
 /// <param name="request">The HTTP request message to sign.</param>
 /// <param name="options">The options that contains the required information for the signing.</param>
 /// <returns>
 /// A Task object which will result the request signed with the authentication information when it completes.
 /// </returns>
 public static Task <HttpRequestMessage> Sign(
     this HttpRequestMessage request, MAuthSigningOptions options) =>
 request.AddAuthenticationInfo(new PrivateKeyAuthenticationInfo()
 {
     ApplicationUuid = options.ApplicationUuid,
     SignedTime      = options.SignedTime ?? DateTimeOffset.UtcNow,
     PrivateKey      = options.PrivateKey.Dereference().NormalizeLines()
 });
 /// <summary>
 /// Initializes a new instance of the <see cref="MAuthSigningHandler"/> class with the provided
 /// <see cref="MAuthSigningOptions"/> and an inner <see cref="HttpMessageHandler"/>.
 /// </summary>
 /// <param name="options">The options for this message handler.</param>
 /// <param name="innerHandler">
 /// The inner handler which is responsible for processing the HTTP response messages.
 /// </param>
 public MAuthSigningHandler(MAuthSigningOptions options, HttpMessageHandler innerHandler) : base(innerHandler)
 {
     this.options = options;
 }
 /// <summary>
 /// Initializes a new insance of the <see cref="MAuthSigningHandler"/> class with the provided
 /// <see cref="MAuthSigningOptions"/>.
 /// </summary>
 /// <param name="options">The options for this message handler.</param>
 public MAuthSigningHandler(MAuthSigningOptions options)
 {
     this.options = options;
 }