private PermissionSet ParsePermissionSet(Parser parser) { SecurityElement topElement = parser.GetTopElement(); PermissionSet set = new PermissionSet(PermissionState.None); set.FromXml(topElement); return set; }
// We can provide a default implementation of FromXmlString because we require // every DSA implementation to implement ImportParameters // All we have to do here is parse the XML. public override void FromXmlString(String xmlString) { if (xmlString == null) throw new ArgumentNullException("xmlString"); Contract.EndContractBlock(); DSAParameters dsaParams = new DSAParameters(); Parser p = new Parser(xmlString); SecurityElement topElement = p.GetTopElement(); // P is always present String pString = topElement.SearchForTextOfLocalName("P"); if (pString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","P")); } dsaParams.P = Convert.FromBase64String(Utils.DiscardWhiteSpaces(pString)); // Q is always present String qString = topElement.SearchForTextOfLocalName("Q"); if (qString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","Q")); } dsaParams.Q = Convert.FromBase64String(Utils.DiscardWhiteSpaces(qString)); // G is always present String gString = topElement.SearchForTextOfLocalName("G"); if (gString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","G")); } dsaParams.G = Convert.FromBase64String(Utils.DiscardWhiteSpaces(gString)); // Y is always present String yString = topElement.SearchForTextOfLocalName("Y"); if (yString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","Y")); } dsaParams.Y = Convert.FromBase64String(Utils.DiscardWhiteSpaces(yString)); // J is optional String jString = topElement.SearchForTextOfLocalName("J"); if (jString != null) dsaParams.J = Convert.FromBase64String(Utils.DiscardWhiteSpaces(jString)); // X is optional -- private key if present String xString = topElement.SearchForTextOfLocalName("X"); if (xString != null) dsaParams.X = Convert.FromBase64String(Utils.DiscardWhiteSpaces(xString)); // Seed and PgenCounter are optional as a unit -- both present or both absent String seedString = topElement.SearchForTextOfLocalName("Seed"); String pgenCounterString = topElement.SearchForTextOfLocalName("PgenCounter"); if ((seedString != null) && (pgenCounterString != null)) { dsaParams.Seed = Convert.FromBase64String(Utils.DiscardWhiteSpaces(seedString)); dsaParams.Counter = Utils.ConvertByteArrayToInt(Convert.FromBase64String(Utils.DiscardWhiteSpaces(pgenCounterString))); } else if ((seedString != null) || (pgenCounterString != null)) { if (seedString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","Seed")); } else { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","DSA","PgenCounter")); } } ImportParameters(dsaParams); }
// Import/export functions // We can provide a default implementation of FromXmlString because we require // every RSA implementation to implement ImportParameters // All we have to do here is parse the XML. public override void FromXmlString(String xmlString) { if (xmlString == null) throw new ArgumentNullException("xmlString"); Contract.EndContractBlock(); RSAParameters rsaParams = new RSAParameters(); Parser p = new Parser(xmlString); SecurityElement topElement = p.GetTopElement(); // Modulus is always present String modulusString = topElement.SearchForTextOfLocalName("Modulus"); if (modulusString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","RSA","Modulus")); } rsaParams.Modulus = Convert.FromBase64String(Utils.DiscardWhiteSpaces(modulusString)); // Exponent is always present String exponentString = topElement.SearchForTextOfLocalName("Exponent"); if (exponentString == null) { throw new CryptographicException(Environment.GetResourceString("Cryptography_InvalidFromXmlString","RSA","Exponent")); } rsaParams.Exponent = Convert.FromBase64String(Utils.DiscardWhiteSpaces(exponentString)); // P is optional String pString = topElement.SearchForTextOfLocalName("P"); if (pString != null) rsaParams.P = Convert.FromBase64String(Utils.DiscardWhiteSpaces(pString)); // Q is optional String qString = topElement.SearchForTextOfLocalName("Q"); if (qString != null) rsaParams.Q = Convert.FromBase64String(Utils.DiscardWhiteSpaces(qString)); // DP is optional String dpString = topElement.SearchForTextOfLocalName("DP"); if (dpString != null) rsaParams.DP = Convert.FromBase64String(Utils.DiscardWhiteSpaces(dpString)); // DQ is optional String dqString = topElement.SearchForTextOfLocalName("DQ"); if (dqString != null) rsaParams.DQ = Convert.FromBase64String(Utils.DiscardWhiteSpaces(dqString)); // InverseQ is optional String inverseQString = topElement.SearchForTextOfLocalName("InverseQ"); if (inverseQString != null) rsaParams.InverseQ = Convert.FromBase64String(Utils.DiscardWhiteSpaces(inverseQString)); // D is optional String dString = topElement.SearchForTextOfLocalName("D"); if (dString != null) rsaParams.D = Convert.FromBase64String(Utils.DiscardWhiteSpaces(dString)); ImportParameters(rsaParams); }
[System.Security.SecurityCritical] // auto-generated private static Object Deserialize(byte[] blob) { if (blob == null) return null; if (blob[0] == 0) { Parser parser = new Parser( blob, Tokenizer.ByteTokenEncoding.UTF8Tokens, 1 ); SecurityElement root = parser.GetTopElement(); if (root.Tag.Equals( "IPermission" ) || root.Tag.Equals( "Permission" )) { IPermission ip = System.Security.Util.XMLUtil.CreatePermission( root, PermissionState.None, false ); if (ip == null) { return null; } ip.FromXml( root ); return ip; } else if (root.Tag.Equals( "PermissionSet" )) { PermissionSet permissionSet = new PermissionSet(); permissionSet.FromXml( root, false, false ); return permissionSet; } else if (root.Tag.Equals( "PermissionToken" )) { PermissionToken pToken = new PermissionToken(); pToken.FromXml( root ); return pToken; } else { return null; } } else { Object obj = null; using(MemoryStream stream = new MemoryStream( blob, 1, blob.Length - 1 )) { obj = CrossAppDomainSerializer.DeserializeObject(stream); } Contract.Assert( !(obj is IPermission), "IPermission should be xml deserialized" ); Contract.Assert( !(obj is PermissionSet), "PermissionSet should be xml deserialized" ); return obj; } }
private PermissionSet ParsePermissionSet(Parser parser) { SecurityElement e = parser.GetTopElement(); PermissionSet permSet = new PermissionSet( PermissionState.None ); permSet.FromXml( e ); return permSet; }
private static PolicyLevel LoadPolicyLevelFromStringHelper (string str, string path, PolicyLevelType type) { if (str == null) throw new ArgumentNullException( "str" ); Contract.EndContractBlock(); PolicyLevel level = new PolicyLevel(type, path); Parser parser = new Parser( str ); SecurityElement elRoot = parser.GetTopElement(); if (elRoot == null) throw new ArgumentException( String.Format( CultureInfo.CurrentCulture, Environment.GetResourceString( "Policy_BadXml" ), "configuration" ) ); SecurityElement elMscorlib = elRoot.SearchForChildByTag( "mscorlib" ); if (elMscorlib == null) throw new ArgumentException( String.Format( CultureInfo.CurrentCulture, Environment.GetResourceString( "Policy_BadXml" ), "mscorlib" ) ); SecurityElement elSecurity = elMscorlib.SearchForChildByTag( "security" ); if (elSecurity == null) throw new ArgumentException( String.Format( CultureInfo.CurrentCulture, Environment.GetResourceString( "Policy_BadXml" ), "security" ) ); SecurityElement elPolicy = elSecurity.SearchForChildByTag( "policy" ); if (elPolicy == null) throw new ArgumentException( String.Format( CultureInfo.CurrentCulture, Environment.GetResourceString( "Policy_BadXml" ), "policy" ) ); SecurityElement elPolicyLevel = elPolicy.SearchForChildByTag( "PolicyLevel" ); if (elPolicyLevel != null) level.FromXml( elPolicyLevel ); else throw new ArgumentException( String.Format( CultureInfo.CurrentCulture, Environment.GetResourceString( "Policy_BadXml" ), "PolicyLevel" ) ); return level; }
private static object Deserialize(byte[] blob) { if (blob == null) { return null; } if (blob[0] != 0) { object result = null; using (MemoryStream memoryStream = new MemoryStream(blob, 1, blob.Length - 1)) { result = CrossAppDomainSerializer.DeserializeObject(memoryStream); } return result; } Parser parser = new Parser(blob, Tokenizer.ByteTokenEncoding.UTF8Tokens, 1); SecurityElement topElement = parser.GetTopElement(); if (topElement.Tag.Equals("IPermission") || topElement.Tag.Equals("Permission")) { IPermission permission = XMLUtil.CreatePermission(topElement, PermissionState.None, false); if (permission == null) { return null; } permission.FromXml(topElement); return permission; } else { if (topElement.Tag.Equals("PermissionSet")) { PermissionSet permissionSet = new PermissionSet(); permissionSet.FromXml(topElement, false, false); return permissionSet; } if (topElement.Tag.Equals("PermissionToken")) { PermissionToken permissionToken = new PermissionToken(); permissionToken.FromXml(topElement); return permissionToken; } return null; } }
private PolicyStatement CheckCache( int count, char[] serializedEvidence, out bool xmlError ) { BCLDebug.Assert( m_configId != ConfigId.None, "PolicyLevels must have a valid config id to check the cache" ); char[] cachedValue; PolicyStatement cachedSet = null; xmlError = false; if (!Config.GetCacheEntry( m_configId, count, serializedEvidence, out cachedValue )) { return null; } else { BCLDebug.Assert( cachedValue != null, "GetCacheData returned success but cached value is null" ); cachedSet = new PolicyStatement(); Parser parser = null; try { parser = new Parser( cachedValue ); cachedSet.FromXml( parser.GetTopElement() ); return cachedSet; } catch (XmlSyntaxException) { BCLDebug.Assert( false, "XmlSyntaxException in CheckCache" ); xmlError = true; return null; } } }
static public PolicyLevel LoadPolicyLevelFromString( String str, PolicyLevelType type ) { #if _DEBUG if (debug) { DEBUG_OUT( "Input string =" ); DEBUG_OUT( str ); } #endif if (str == null) throw new ArgumentNullException( "str" ); String name = Enum.GetName( typeof( PolicyLevelType ), type ); if (name == null) return null; Parser parser = new Parser( str ); PolicyLevel level = new PolicyLevel( name, ConfigId.None, type == PolicyLevelType.Machine ); SecurityElement elRoot = parser.GetTopElement(); if (elRoot == null) { throw new ArgumentException( String.Format( Environment.GetResourceString( "Policy_BadXml" ), "configuration" ) ); } SecurityElement elMscorlib = elRoot.SearchForChildByTag( "mscorlib" ); if (elMscorlib == null) { throw new ArgumentException( String.Format( Environment.GetResourceString( "Policy_BadXml" ), "mscorlib" ) ); } SecurityElement elSecurity = elMscorlib.SearchForChildByTag( "security" ); if (elSecurity == null) { throw new ArgumentException( String.Format( Environment.GetResourceString( "Policy_BadXml" ), "security" ) ); } SecurityElement elPolicy = elSecurity.SearchForChildByTag( "policy" ); if (elPolicy == null) { throw new ArgumentException( String.Format( Environment.GetResourceString( "Policy_BadXml" ), "policy" ) ); } SecurityElement elPolicyLevel = elPolicy.SearchForChildByTag( "PolicyLevel" ); if (elPolicyLevel != null) { level.FromXml( elPolicyLevel ); } else { throw new ArgumentException( String.Format( Environment.GetResourceString( "Policy_BadXml" ), "PolicyLevel" ) ); } level.Loaded = true; return level; }
/// <include file='doc\PermissionRequestEvidence.uex' path='docs/doc[@for="PermissionRequestEvidence.char1"]/*' /> /// <internalonly/> int IBuiltInEvidence.InitFromBuffer( char[] buffer, int position ) { int numPermSets = BuiltInEvidenceHelper.GetIntFromCharArray(buffer, position); position += 2; int tempLength; for (int i = 0; i < numPermSets; i++) { char psKind = buffer[position++]; tempLength = BuiltInEvidenceHelper.GetIntFromCharArray(buffer, position); position += 2; String tempStr = new String(buffer, position, tempLength); position += tempLength; Parser p = new Parser( tempStr ); PermissionSet psTemp = new PermissionSet(); psTemp.FromXml(p.GetTopElement()); switch(psKind) { case idRequest: m_strRequest = tempStr; m_request = psTemp; break; case idOptional: m_strOptional = tempStr; m_optional = psTemp; break; case idDenied: m_strDenied = tempStr; m_denied = psTemp; break; default: throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup")); } } return position; }