protected ArraySegment<byte> Decrypt(
ArraySegment<byte> dataToDecrypt,
ArraySegment<byte> headerToCopy,
X509Certificate2 receiverCertificate)
{
switch (SecurityPolicyUri)
{
default:
case SecurityPolicies.None:
{
byte[] decryptedBuffer = BufferManager.TakeBuffer(SendBufferSize, "Decrypt");
Array.Copy(headerToCopy.Array, headerToCopy.Offset, decryptedBuffer, 0, headerToCopy.Count);
Array.Copy(dataToDecrypt.Array, dataToDecrypt.Offset, decryptedBuffer, headerToCopy.Count, dataToDecrypt.Count);
return new ArraySegment<byte>(decryptedBuffer, 0, dataToDecrypt.Count+headerToCopy.Count);
}
case SecurityPolicies.Basic256:
case SecurityPolicies.Basic256Sha256:
{
return Rsa_Decrypt(dataToDecrypt, headerToCopy, receiverCertificate, true);
}
case SecurityPolicies.Basic128Rsa15:
{
return Rsa_Decrypt(dataToDecrypt, headerToCopy, receiverCertificate, false);
}
}
}
#endregion