Braintree.WebhookNotificationGateway.ValidateSignature C# (CSharp) Метод

ValidateSignature() приватный Метод

private ValidateSignature ( string signature, string payload ) : void
signature string
payload string
Результат void
        private void ValidateSignature(string signature, string payload)
        {
            var match = Regex.Match (payload, @"[^A-Za-z0-9+=/\n]");
            if (match.Success)
            {
                throw new InvalidSignatureException ("payload contains illegal characters");
            }

            string matchingSignature = null;
            string[] signaturePairs = signature.Split('&');

            foreach (var signaturePair in signaturePairs)
            {
                if (signaturePair.IndexOf('|') >= 0)
                {
                    string[] candidatePair = signaturePair.Split('|');
                    if (service.PublicKey.Equals(candidatePair[0]))
                    {
                        matchingSignature = candidatePair[1];
                        break;
                    }
                }
            }

            if (matchingSignature == null)
            {
                throw new InvalidSignatureException ("no matching public key");
            }

            if (!(PayloadMatches(matchingSignature, payload) || PayloadMatches(matchingSignature, payload + "\n")))
            {
                throw new InvalidSignatureException ("signature does not match payload - one has been modified");
            }
        }
    }