1 //----------------------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //----------------------------------------------------------------------------- 4 5 namespace System.ServiceModel.Configuration 6 { 7 using System; 8 using System.ComponentModel; 9 using System.ComponentModel.Design.Serialization; 10 using System.Globalization; 11 using System.ServiceModel.Security; 12 13 class SecurityAlgorithmSuiteConverter : TypeConverter 14 { CanConvertFrom(ITypeDescriptorContext context, Type sourceType)15 public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) 16 { 17 if (typeof(string) == sourceType) 18 { 19 return true; 20 } 21 return base.CanConvertFrom(context, sourceType); 22 } 23 CanConvertTo(ITypeDescriptorContext context, Type destinationType)24 public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) 25 { 26 if (typeof(InstanceDescriptor) == destinationType) 27 { 28 return true; 29 } 30 return base.CanConvertTo(context, destinationType); 31 } 32 ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)33 public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) 34 { 35 if (value is string) 36 { 37 string securityAlgorithm = (string)value; 38 SecurityAlgorithmSuite retval = null; 39 switch (securityAlgorithm) 40 { 41 case ConfigurationStrings.Default: 42 retval = SecurityAlgorithmSuite.Default; 43 break; 44 case ConfigurationStrings.Basic256: 45 retval = SecurityAlgorithmSuite.Basic256; 46 break; 47 case ConfigurationStrings.Basic192: 48 retval = SecurityAlgorithmSuite.Basic192; 49 break; 50 case ConfigurationStrings.Basic128: 51 retval = SecurityAlgorithmSuite.Basic128; 52 break; 53 case ConfigurationStrings.TripleDes: 54 retval = SecurityAlgorithmSuite.TripleDes; 55 break; 56 case ConfigurationStrings.Basic256Rsa15: 57 retval = SecurityAlgorithmSuite.Basic256Rsa15; 58 break; 59 case ConfigurationStrings.Basic192Rsa15: 60 retval = SecurityAlgorithmSuite.Basic192Rsa15; 61 break; 62 case ConfigurationStrings.Basic128Rsa15: 63 retval = SecurityAlgorithmSuite.Basic128Rsa15; 64 break; 65 case ConfigurationStrings.TripleDesRsa15: 66 retval = SecurityAlgorithmSuite.TripleDesRsa15; 67 break; 68 case ConfigurationStrings.Basic256Sha256: 69 retval = SecurityAlgorithmSuite.Basic256Sha256; 70 break; 71 case ConfigurationStrings.Basic192Sha256: 72 retval = SecurityAlgorithmSuite.Basic192Sha256; 73 break; 74 case ConfigurationStrings.Basic128Sha256: 75 retval = SecurityAlgorithmSuite.Basic128Sha256; 76 break; 77 case ConfigurationStrings.TripleDesSha256: 78 retval = SecurityAlgorithmSuite.TripleDesSha256; 79 break; 80 case ConfigurationStrings.Basic256Sha256Rsa15: 81 retval = SecurityAlgorithmSuite.Basic256Sha256Rsa15; 82 break; 83 case ConfigurationStrings.Basic192Sha256Rsa15: 84 retval = SecurityAlgorithmSuite.Basic192Sha256Rsa15; 85 break; 86 case ConfigurationStrings.Basic128Sha256Rsa15: 87 retval = SecurityAlgorithmSuite.Basic128Sha256Rsa15; 88 break; 89 case ConfigurationStrings.TripleDesSha256Rsa15: 90 retval = SecurityAlgorithmSuite.TripleDesSha256Rsa15; 91 break; 92 default: 93 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", 94 SR.GetString(SR.ConfigInvalidClassFactoryValue, securityAlgorithm, typeof(SecurityAlgorithmSuite).FullName))); 95 } 96 return retval; 97 } 98 return base.ConvertFrom(context, culture, value); 99 } 100 ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)101 public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) 102 { 103 if (typeof(string) == destinationType && value is SecurityAlgorithmSuite) 104 { 105 string retval = null; 106 SecurityAlgorithmSuite securityAlgorithm = (SecurityAlgorithmSuite)value; 107 108 if (securityAlgorithm == SecurityAlgorithmSuite.Default) 109 retval = ConfigurationStrings.Default; 110 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic256) 111 retval = ConfigurationStrings.Basic256; 112 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic192) 113 retval = ConfigurationStrings.Basic192; 114 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic128) 115 retval = ConfigurationStrings.Basic128; 116 else if (securityAlgorithm == SecurityAlgorithmSuite.TripleDes) 117 retval = ConfigurationStrings.TripleDes; 118 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic256Rsa15) 119 retval = ConfigurationStrings.Basic256Rsa15; 120 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic192Rsa15) 121 retval = ConfigurationStrings.Basic192Rsa15; 122 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic128Rsa15) 123 retval = ConfigurationStrings.Basic128Rsa15; 124 else if (securityAlgorithm == SecurityAlgorithmSuite.TripleDesRsa15) 125 retval = ConfigurationStrings.TripleDesRsa15; 126 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic256Sha256) 127 retval = ConfigurationStrings.Basic256Sha256; 128 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic192Sha256) 129 retval = ConfigurationStrings.Basic192Sha256; 130 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic128Sha256) 131 retval = ConfigurationStrings.Basic128Sha256; 132 else if (securityAlgorithm == SecurityAlgorithmSuite.TripleDesSha256) 133 retval = ConfigurationStrings.TripleDesSha256; 134 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic256Sha256Rsa15) 135 retval = ConfigurationStrings.Basic256Sha256Rsa15; 136 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic192Sha256Rsa15) 137 retval = ConfigurationStrings.Basic192Sha256Rsa15; 138 else if (securityAlgorithm == SecurityAlgorithmSuite.Basic128Sha256Rsa15) 139 retval = ConfigurationStrings.Basic128Sha256Rsa15; 140 else if (securityAlgorithm == SecurityAlgorithmSuite.TripleDesSha256Rsa15) 141 retval = ConfigurationStrings.TripleDesSha256Rsa15; 142 else 143 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", 144 SR.GetString(SR.ConfigInvalidClassInstanceValue, typeof(SecurityAlgorithmSuite).FullName))); 145 146 return retval; 147 } 148 return base.ConvertTo(context, culture, value, destinationType); 149 } 150 } 151 } 152