Esempio n. 1
0
		public static PROV_ENUMALGS_EX [] GetProvAlgsEx(IntPtr prov)
		{
			ArrayList retAl = GetProvParam(prov, ProvParamEnum.ALGS_EX, 148);
			ArrayList al = new ArrayList();
			foreach(byte [] ba in retAl)
			{
				PROV_ENUMALGS_EX pe = new PROV_ENUMALGS_EX();
				pe.aiAlgid = BitConverter.ToUInt32(ba, 0);
				pe.dwDefaultLen = BitConverter.ToUInt32(ba, 4);
				pe.dwMinLen = BitConverter.ToUInt32(ba, 8);
				pe.dwMaxLen = BitConverter.ToUInt32(ba, 12);
				pe.dwProtocols = BitConverter.ToUInt32(ba, 16);
				pe.dwNameLen = BitConverter.ToUInt32(ba, 20);
				int nameLen = (int) (pe.dwNameLen * 2) -1 ; //nullTerm
				if(nameLen > 0)
					pe.szName = Encoding.Unicode.GetString(ba, 24, nameLen);
				pe.dwLongNameLen = BitConverter.ToUInt32(ba, 44);
				nameLen = (int) (pe.dwLongNameLen * 2) - 1; //nullTerm
				if(nameLen > 0)
				{
					nameLen = Math.Min(80, nameLen);
					pe.szLongName = Encoding.Unicode.GetString(ba, 48, nameLen);
				}
				if(pe.aiAlgid != 0)
					al.Add(pe);
			}
			PROV_ENUMALGS_EX [] pea = new PROV_ENUMALGS_EX[al.Count];
			al.CopyTo(0, pea, 0, pea.Length);
			return pea;
		}
Esempio n. 2
0
        public static PROV_ENUMALGS_EX [] GetProvAlgsEx(IntPtr prov)
        {
            ArrayList retAl = GetProvParam(prov, ProvParamEnum.ALGS_EX, 148);
            ArrayList al    = new ArrayList();

            foreach (byte [] ba in retAl)
            {
                PROV_ENUMALGS_EX pe = new PROV_ENUMALGS_EX();
                pe.aiAlgid      = BitConverter.ToUInt32(ba, 0);
                pe.dwDefaultLen = BitConverter.ToUInt32(ba, 4);
                pe.dwMinLen     = BitConverter.ToUInt32(ba, 8);
                pe.dwMaxLen     = BitConverter.ToUInt32(ba, 12);
                pe.dwProtocols  = BitConverter.ToUInt32(ba, 16);
                pe.dwNameLen    = BitConverter.ToUInt32(ba, 20);
                int nameLen = (int)(pe.dwNameLen * 2) - 1;                  //nullTerm
                if (nameLen > 0)
                {
                    pe.szName = Encoding.Unicode.GetString(ba, 24, nameLen);
                }
                pe.dwLongNameLen = BitConverter.ToUInt32(ba, 44);
                nameLen          = (int)(pe.dwLongNameLen * 2) - 1;         //nullTerm
                if (nameLen > 0)
                {
                    nameLen       = Math.Min(80, nameLen);
                    pe.szLongName = Encoding.Unicode.GetString(ba, 48, nameLen);
                }
                if (pe.aiAlgid != 0)
                {
                    al.Add(pe);
                }
            }
            PROV_ENUMALGS_EX [] pea = new PROV_ENUMALGS_EX[al.Count];
            al.CopyTo(0, pea, 0, pea.Length);
            return(pea);
        }