public static Decrypt ( X509Certificate2 certificate, string securityPolicyUri, EncryptedData dataToDecrypt ) : byte[] | ||
certificate | X509Certificate2 | |
securityPolicyUri | string | |
dataToDecrypt | EncryptedData | |
Résultat | byte[] |
/// <summary> /// Decrypts the Password using the EncryptionAlgorithm and places the result in DecryptedPassword /// </summary> public override void Decrypt(X509Certificate2 certificate, byte[] senderNonce, string securityPolicyUri) { EncryptedData encryptedData = new EncryptedData(); encryptedData.Data = m_tokenData; encryptedData.Algorithm = m_encryptionAlgorithm; byte[] decryptedTokenData = SecurityPolicies.Decrypt( certificate, securityPolicyUri, encryptedData); // verify the sender's nonce. int startOfNonce = decryptedTokenData.Length; if (senderNonce != null) { startOfNonce -= senderNonce.Length; for (int ii = 0; ii < senderNonce.Length; ii++) { if (senderNonce[ii] != decryptedTokenData[ii + startOfNonce]) { throw new ServiceResultException(StatusCodes.BadSecurityChecksFailed); } } } // copy results. m_decryptedTokenData = new byte[startOfNonce]; Array.Copy(decryptedTokenData, m_decryptedTokenData, startOfNonce); }
/// <summary> /// Decrypts the Password using the EncryptionAlgorithm and places the result in DecryptedPassword /// </summary> public override void Decrypt(X509Certificate2 certificate, byte[] senderNonce, string securityPolicyUri) { // handle no encryption. if (String.IsNullOrEmpty(securityPolicyUri) || securityPolicyUri == SecurityPolicies.None) { m_decryptedPassword = new UTF8Encoding().GetString(m_password, 0, m_password.Length); return; } // decrypt. EncryptedData encryptedData = new EncryptedData(); encryptedData.Data = m_password; encryptedData.Algorithm = m_encryptionAlgorithm; byte[] decryptedPassword = SecurityPolicies.Decrypt( certificate, securityPolicyUri, encryptedData); if (decryptedPassword == null) { m_decryptedPassword = null; return; } // verify the sender's nonce. int startOfNonce = decryptedPassword.Length; if (senderNonce != null) { startOfNonce -= senderNonce.Length; int result = 0; for (int ii = 0; ii < senderNonce.Length; ii++) { result |= senderNonce[ii] ^ decryptedPassword[ii + startOfNonce]; } if (result != 0) { throw new ServiceResultException(StatusCodes.BadIdentityTokenRejected); } } // convert to UTF-8. m_decryptedPassword = new UTF8Encoding().GetString(decryptedPassword, 0, startOfNonce); }
/// <summary> /// Decrypts the Password using the EncryptionAlgorithm and places the result in DecryptedPassword /// </summary> public override void Decrypt(X509Certificate2 certificate, byte[] senderNonce, string securityPolicyUri) { // handle no encryption. if (String.IsNullOrEmpty(securityPolicyUri) || securityPolicyUri == SecurityPolicies.None) { m_decryptedTokenData = m_tokenData; return; } EncryptedData encryptedData = new EncryptedData(); encryptedData.Data = m_tokenData; encryptedData.Algorithm = m_encryptionAlgorithm; byte[] decryptedTokenData = SecurityPolicies.Decrypt( certificate, securityPolicyUri, encryptedData); // verify the sender's nonce. int startOfNonce = decryptedTokenData.Length; if (senderNonce != null) { startOfNonce -= senderNonce.Length; for (int ii = 0; ii < senderNonce.Length; ii++) { if (senderNonce[ii] != decryptedTokenData[ii + startOfNonce]) { throw new ServiceResultException(StatusCodes.BadIdentityTokenRejected); } } } // copy results. m_decryptedTokenData = new byte[startOfNonce]; Array.Copy(decryptedTokenData, m_decryptedTokenData, startOfNonce); }