Example #1
0
        public static ArrayList GetProvParam(IntPtr prov, ProvParamEnum param, uint dataLen)
        {
            ArrayList al = new ArrayList();

            byte[] data  = null;
            uint   flags = Const.CRYPT_FIRST;

            while (true)
            {
                data = new byte[dataLen];
                bool       retVal = Crypto.CryptGetProvParam(prov, (uint)param, data, ref dataLen, flags);
                ErrCode [] eca    = new ErrCode[] { ErrCode.NO_MORE_ITEMS, ErrCode.MORE_DATA };
                ErrCode    ec     = Error.HandleRetVal(retVal, eca);
                if (!retVal)
                {
                    if (ec == ErrCode.NO_MORE_ITEMS)
                    {
                        break;
                    }
                    if (ec != ErrCode.MORE_DATA)
                    {
                        break;
                    }
                }
                flags = 0;
                al.Add(data);
            }
            return(al);
        }
Example #2
0
 public static ArrayList GetProvParam(IntPtr prov, ProvParamEnum param, uint dataLen)
 {
     ArrayList al = new ArrayList();
     byte[] data = null;
     uint flags = Const.CRYPT_FIRST;
     while ( true )
     {
         data = new byte[dataLen];
         bool retVal = Crypto.CryptGetProvParam(prov, (uint) param, data, ref dataLen, flags);
         ErrCode [] eca = new ErrCode[]{ErrCode.NO_MORE_ITEMS, ErrCode.MORE_DATA};
         ErrCode ec = Error.HandleRetVal(retVal, eca);
         if ( !retVal )
         {
             if ( ec == ErrCode.NO_MORE_ITEMS )
                 break;
             if ( ec != ErrCode.MORE_DATA )
                 break;
         }
         flags = 0;
         al.Add(data);
     }
     return al;
 }