Esempio n. 1
0
        /// <summary>
        /// Decrypts the CipherText using the SecurityPolicyUri and returns the PlainTetx.
        /// </summary>
        public static byte[] Decrypt(X509Certificate2 certificate, string securityPolicyUri, EncryptedData dataToDecrypt)
        {
            // check if nothing to do.
            if (dataToDecrypt == null)
            {
                return null;
            }

            // nothing more to do if no encryption.
            if (String.IsNullOrEmpty(securityPolicyUri))
            {
                return dataToDecrypt.Data;
            }

            // decrypt data.
            switch (securityPolicyUri)
            {
                case SecurityPolicies.Basic128:
                case SecurityPolicies.Basic192:
                case SecurityPolicies.Basic256:
                {
                    if (dataToDecrypt.Algorithm == SecurityAlgorithms.RsaOaep)
                    {
                        return RsaUtils.Decrypt(new ArraySegment<byte>(dataToDecrypt.Data), certificate, true);
                    }

                    break;
                }

                case SecurityPolicies.Basic128Rsa15:
                case SecurityPolicies.Basic192Rsa15:
                case SecurityPolicies.Basic256Rsa15:
                {
                    if (dataToDecrypt.Algorithm == SecurityAlgorithms.Rsa15)
                    {
                        return RsaUtils.Decrypt(new ArraySegment<byte>(dataToDecrypt.Data), certificate, false);
                    }

                    break;
                }

                case SecurityPolicies.None:
                {
                    if (String.IsNullOrEmpty(dataToDecrypt.Algorithm))
                    {
                        return dataToDecrypt.Data;
                    }

                    break;
                }

                default:
                {
                    throw new ApplicationException(String.Format(
                        "Unsupported security policy: {0}",
                        securityPolicyUri));
                }
            }

            throw new ApplicationException(String.Format(
                "Unexpected encryption algorithm : {0}",
                dataToDecrypt.Data));
        }
Esempio n. 2
0
        /// <summary>
        /// Encrypts the text using the SecurityPolicyUri and returns the result.
        /// </summary>
        public static EncryptedData Encrypt(X509Certificate2 certificate, string securityPolicyUri, byte[] plainText)
        {
            EncryptedData encryptedData = new EncryptedData();

            encryptedData.Algorithm = null;
            encryptedData.Data = plainText;

            // check if nothing to do.
            if (plainText == null)
            {
                return encryptedData;
            }

            // nothing more to do if no encryption.
            if (String.IsNullOrEmpty(securityPolicyUri))
            {
                return encryptedData;
            }

            // encrypt data.
            switch (securityPolicyUri)
            {
                case SecurityPolicies.Basic128:
                case SecurityPolicies.Basic192:
                case SecurityPolicies.Basic256:
                {
                    encryptedData.Algorithm = SecurityAlgorithms.RsaOaep;
                    encryptedData.Data = RsaUtils.Encrypt(plainText, certificate, true);
                    break;
                }

                case SecurityPolicies.Basic128Rsa15:
                case SecurityPolicies.Basic192Rsa15:
                case SecurityPolicies.Basic256Rsa15:
                {
                    encryptedData.Algorithm = SecurityAlgorithms.Rsa15;
                    encryptedData.Data = RsaUtils.Encrypt(plainText, certificate, false);
                    break;
                }

                case SecurityPolicies.None:
                {
                    break;
                }

                default:
                {
                    throw new ApplicationException(String.Format(
                        "Unsupported security policy: {0}",
                        securityPolicyUri));
                }
            }

            return encryptedData;
        }