// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
using System.Collections;
using System.IO;
public byte[] DecryptData (EncryptedData encryptedData, SymmetricAlgorithm symAlg)
{
+ if (encryptedData == null)
+ throw new ArgumentNullException ("encryptedData");
+ if (symAlg == null)
+ throw new ArgumentNullException ("symAlg");
+
PaddingMode bak = symAlg.Padding;
try {
symAlg.Padding = Padding;
public virtual byte[] DecryptEncryptedKey (EncryptedKey encryptedKey)
{
+ if (encryptedKey == null)
+ throw new ArgumentNullException ("encryptedKey");
+
object keyAlg = null;
foreach (KeyInfoClause innerClause in encryptedKey.KeyInfo) {
if (innerClause is KeyInfoName) {
public static byte[] DecryptKey (byte[] keyData, SymmetricAlgorithm symAlg)
{
+ if (keyData == null)
+ throw new ArgumentNullException ("keyData");
+ if (symAlg == null)
+ throw new ArgumentNullException ("symAlg");
+
if (symAlg is TripleDES)
return SymmetricKeyWrap.TripleDESKeyWrapDecrypt (symAlg.Key, keyData);
if (symAlg is Rijndael)
public byte[] EncryptData (byte[] plainText, SymmetricAlgorithm symAlg)
{
+ if (plainText == null)
+ throw new ArgumentNullException ("plainText");
+ if (symAlg == null)
+ throw new ArgumentNullException ("symAlg");
+
PaddingMode bak = symAlg.Padding;
try {
symAlg.Padding = Padding;
public byte[] EncryptData (XmlElement inputElement, SymmetricAlgorithm symAlg, bool content)
{
+ if (inputElement == null)
+ throw new ArgumentNullException ("inputElement");
+
if (content)
return EncryptData (Encoding.GetBytes (inputElement.InnerXml), symAlg);
else
public static byte[] EncryptKey (byte[] keyData, SymmetricAlgorithm symAlg)
{
+ if (keyData == null)
+ throw new ArgumentNullException ("keyData");
+ if (symAlg == null)
+ throw new ArgumentNullException ("symAlg");
+
if (symAlg is TripleDES)
return SymmetricKeyWrap.TripleDESKeyWrapEncrypt (symAlg.Key, keyData);
if (symAlg is Rijndael)
symAlg = SymmetricAlgorithm.Create ("TripleDES");
break;
default:
- throw new ArgumentException ("symAlgUri");
+ throw new CryptographicException ("symAlgUri");
}
return symAlg;
public virtual byte[] GetDecryptionIV (EncryptedData encryptedData, string symAlgUri)
{
+ if (encryptedData == null)
+ throw new ArgumentNullException ("encryptedData");
+
SymmetricAlgorithm symAlg = GetAlgorithm (symAlgUri);
byte[] iv = new Byte [symAlg.BlockSize / 8];
Buffer.BlockCopy (encryptedData.CipherData.CipherValue, 0, iv, 0, iv.Length);
public virtual SymmetricAlgorithm GetDecryptionKey (EncryptedData encryptedData, string symAlgUri)
{
+ if (encryptedData == null)
+ throw new ArgumentNullException ("encryptedData");
+ if (symAlgUri == null)
+ return null;
+
SymmetricAlgorithm symAlg = GetAlgorithm (symAlgUri);
symAlg.IV = GetDecryptionIV (encryptedData, encryptedData.EncryptionMethod.KeyAlgorithm);
KeyInfo keyInfo = encryptedData.KeyInfo;
public virtual XmlElement GetIdElement (XmlDocument document, string idValue)
{
+ if ((document == null) || (idValue == null))
+ return null;
+
// this works only if there's a DTD or XSD available to define the ID
XmlElement xel = document.GetElementById (idValue);
if (xel == null) {
public void ReplaceData (XmlElement inputElement, byte[] decryptedData)
{
+ if (inputElement == null)
+ throw new ArgumentNullException ("inputElement");
+ if (decryptedData == null)
+ throw new ArgumentNullException ("decryptedData");
+
XmlDocument ownerDocument = inputElement.OwnerDocument;
XmlTextReader reader = new XmlTextReader (new StringReader (Encoding.GetString (decryptedData, 0, decryptedData.Length)));
reader.MoveToContent ();
public static void ReplaceElement (XmlElement inputElement, EncryptedData encryptedData, bool content)
{
+ if (inputElement == null)
+ throw new ArgumentNullException ("inputElement");
+ if (encryptedData == null)
+ throw new ArgumentNullException ("encryptedData");
+
XmlDocument ownerDocument = inputElement.OwnerDocument;
inputElement.ParentNode.ReplaceChild (encryptedData.GetXml (ownerDocument), inputElement);
}
}
}
-#endif