Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Импорт PK11SDR_Decrypt в C# и постоянный результат -1 при вызове

9.0K
02 апреля 2012 года
t-34
129 / / 30.11.2007
Кто-нибудь сталкивался с импортом unmanaged-функций из nss3.dll, что входит в состав Мозиллы? Функция PK11SDR_Decrypt постоянно возвращает -1. В чем проблема может быть?
Импорт:

 
Код:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int PK11SDR_DecryptDelegate(TSECItem data, ref TSECItem result, int cx);
public static int PK11SDR_Decrypt( TSECItem data, ref TSECItem result, int cx)
{
IntPtr pProc = GetProcAddress(NSS3, "PK11SDR_Decrypt");
PK11SDR_DecryptDelegate dll = (PK11SDR_DecryptDelegate)Marshal.GetDelegateForFunctionPointer(pProc, typeof(PK11SDR_DecryptDelegate));
return dll(data, ref result, 0);
}
 
Код:
TSECItem:
[StructLayout(LayoutKind.Sequential)]
        public struct TSECItem
        {
            public int SECItemType;
            public int SECItemData;
            public int SECItemLen;
        }
Вызов в коде:
Код:
StringBuilder se = new StringBuilder(encryptedString);
                int hi2 = FFHelper.NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, se, se.Length);
                TSECItem item = (TSECItem)Marshal.PtrToStructure(new IntPtr(hi2), typeof(TSECItem));
                var error = FFHelper.PK11SDR_Decrypt(item, ref tSecDec, 0);
                if (error == 0)
                {
                    if (tSecDec.SECItemLen != 0)
                    {
                        bvRet = new byte[tSecDec.SECItemLen];
                        Marshal.Copy(new IntPtr(tSecDec.SECItemData), bvRet, 0, tSecDec.SECItemLen);
                        result = System.Text.Encoding.ASCII.GetString(bvRet);
                    }
                }
341
04 апреля 2012 года
Der Meister
874 / / 21.12.2007
 
Код:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int PK11SDR_DecryptDelegate(ref TSECItem data, ref TSECItem result, int cx);
попробуйте
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог