protected byte[] DecryptOrderData(XPathHelper xph) { using (new MethodLogger(s_logger)) { var encryptedOd = Convert.FromBase64String(xph.GetOrderData()?.Value); if (!Enum.TryParse <CryptVersion>(xph.GetEncryptionPubKeyDigestVersion()?.Value, out var transKeyEncVersion)) { throw new DeserializationException( string.Format("Encryption version {0} not supported", xph.GetEncryptionPubKeyDigestVersion()?.Value), xph.Xml); } var encryptionPubKeyDigest = Convert.FromBase64String(xph.GetEncryptionPubKeyDigest()?.Value); var encryptedTransKey = Convert.FromBase64String(xph.GetTransactionKey()?.Value); var transKey = DecryptRsa(encryptedTransKey); var decryptedOd = DecryptAES(encryptedOd, transKey); if (!StructuralComparisons.StructuralEqualityComparer.Equals(Config.User.CryptKeys.Digest, encryptionPubKeyDigest)) { throw new DeserializationException("Wrong digest in xml", xph.Xml); } return(decryptedOd); } }