/// <summary>
        /// 使用请求拦截器,为每个请求自动添加基于 https://tools.ietf.org/html/draft-cavage-http-signatures 的签名。
        /// </summary>
        /// <param name="httpClientBuilder"></param>
        /// <param name="signatureGenerator"></param>
        /// <param name="parameterGenerator"></param>
        /// <returns></returns>
        public static IHttpClientBuilder UseHttpSignatureInterceptor(this IHttpClientBuilder httpClientBuilder, ISignatureGenerator signatureGenerator, Func <IHttpRequest, ISigningParameter> parameterGenerator)
        {
            if (signatureGenerator == null)
            {
                throw new ArgumentNullException(nameof(signatureGenerator));
            }
            if (parameterGenerator == null)
            {
                throw new ArgumentNullException(nameof(parameterGenerator));
            }

            return(httpClientBuilder.AddRequestInterceptor(request =>
            {
                ISigningParameter signingParameter = parameterGenerator.Invoke(request);
                ISignature signature = signatureGenerator.Sign(request.ToSigningRequest(), signingParameter);
                request.AddHeader("Signature", signature.ToString(SignatureFormatting.Signature));
                request.AddHeader("Authorization", signature.ToString(SignatureFormatting.Authorization));
            }));
        }
        /// <summary>
        /// 使用请求拦截器,为每个请求自动添加基于 https://tools.ietf.org/html/draft-cavage-http-signatures 的签名。
        /// </summary>
        /// <param name="httpClientBuilder"></param>
        /// <param name="signatureGenerator"></param>
        /// <param name="signingParameter"></param>
        /// <returns></returns>
        public static IHttpClientBuilder UseHttpSignatureInterceptor(this IHttpClientBuilder httpClientBuilder, ISignatureGenerator signatureGenerator, ISigningParameter signingParameter)
        {
            if (signatureGenerator == null)
            {
                throw new ArgumentNullException(nameof(signatureGenerator));
            }
            if (signingParameter == null)
            {
                throw new ArgumentNullException(nameof(signingParameter));
            }

            return(UseHttpSignatureInterceptor(httpClientBuilder, signatureGenerator, (request) => signingParameter));
        }