Re: Работа с функциями библиотеки rtPKCS11ECP
Здравствуйте!
Возможно-ли использовать функцию C_Digest вне токена? На токене хеш высчитывается долго, приходиться использовать сторонний софт.
Вы не авторизованы. Пожалуйста, войдите или зарегистрируйтесь.
Форум Рутокен → Техническая поддержка разработчиков → Работа с функциями библиотеки rtPKCS11ECP
Страницы Назад 1 … 7 8 9 10 Далее
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
Здравствуйте!
Возможно-ли использовать функцию C_Digest вне токена? На токене хеш высчитывается долго, приходиться использовать сторонний софт.
Добрый день!
Да, можно.
В комплекте разработчика в файле Common.h есть закомментированный список программных механизмов, вот например:
Механизм программного хеширования ГОСТ Р 34.11-94
CK_MECHANISM gostR3411HashMech = {CKM_GOSTR3411, parametersGostR3411, arraysize(parametersGostR3411)};
а для Android'а?
абсолютно так же :)
нужно только описать такой же тип в прослойке-wrappere и использовать его.
справитесь сами или нужно помочь?
сниппет очень-бы помог. заранее спасибо
Добрый день!
Ниже фрагмент кода создания механизма, необходимого для подсчета хэша программно (т.е. вне токена).
Можно проверить, например, на семпле sdk GOST3410 из sunPkcs11Wrapper для java.
Для Android'а все аналогично.
Long mechanismType = RtPkcs11Constants.CKM_GOSTR3411.longValue();
byte[] gostR3411params_oid = { (byte)0x06, (byte)0x07, (byte)0x2a, (byte)0x85, (byte)0x03,
(byte)0x02, (byte)0x02, (byte)0x1e, (byte)0x01 };
CK_MECHANISM ckMechanism = new CK_MECHANISM(mechanismType, gostR3411params_oid);
Здравствуйте!
А можно получить обёртку для C#?
Заранее спасибо!
Она реально облегчает разработку?
Спасибо! Оказывается это то, с чём я уже начал разбираться! А вопросы по данной обёртке кому и где лучше задавать?
Извините!
Добрый вечер, mikrob24RUS
Свои вопросы по RutokenPkcs11Interop Вы можете задавать на здесь на форуме или направлять на hotline@rutoken.ru
Пишу на VS2017 ASP.NET WebForms.
При помощи Вашей "обёртки", в режиме отладки на локальном IIS, получилось уже многое. Однако, после публикации пробного приложения на внешний IIS и при инициализации библиотеки возникает ошибка: "Library initialization - Operation failed [Message: Unable to load library. Error code: 0x0000007E]"
Подскажите, вполне возможно, что я концептуально не в том направлении выбрал движение!? Вроде как работа с Рутокеном из web организуется при помощи Рутокен Plugin, но с какой стороны к нему начать подходить, не пойму... а здесь вроде уже есть кое какие успехи! Подскажите пожалуйста пути решения! Хочу реализовать возможность работы с Рутокен ЭЦП 2.0 через web приложение.
Инициализации происходит кажется в строке:
using (var pkcs11 = new Pkcs11(Settings.RutokenEcpDllDefaultPath, Settings.OsLockingDefault))
Может какая-то проблема с путями, что dll не "цепляются"!?
Добрый день! Использую функцию хэширования ГОСТ34.11-2012 (512) на токене ЭЦП 2.0 следующим образом:
QByteArray Token::Hash(CK_SESSION_HANDLE &hSession)
{
CK_BYTE data[] = {
0x32,0x31,0x30,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x39,0x38,0x37,
0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,
0x30,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x39,0x38,0x37,0x36,0x35,
0x34,0x33,0x32,0x31,0x30,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30
};
CK_ULONG hashSize;
CK_BYTE_PTR hash;
returnValue = pFunctionList->C_DigestInit(hSession, &ckmGOST34_11_2012_512Mech);
if(returnValue != CKR_OK)
{
return NULL;
}
returnValue = pFunctionList->C_Digest(hSession, data, arraysize(data), NULL_PTR, &hashSize);
if(returnValue != CKR_OK)
{
return NULL;
}
hash = (CK_BYTE_PTR)malloc(hashSize * sizeof(CK_BYTE));
memset(hash, 0, hashSize * sizeof(CK_BYTE));
pFunctionList->C_Digest(hSession, data, arraysize(data), hash, &hashSize);
if(returnValue != CKR_OK)
{
return NULL;
}
QByteArray result = QByteArray::fromRawData((const char*)hash, hashSize);
qDebug() << result.toHex();
return result;
}
В массиве data содержится тестовый набор №1 из ГОСТ34.11-2012. В результате хеширования получается следующий массив байт: "150fd4d141347ae78253b1fc9fcd2522aaad2bf06316a5e9189b7487835bc022b85a503627136177c9d6f133a3f338c83
277ca5798bd6bc0ee34282ba0a3d353".
А по стандарту должно получиться:
"486f64c1917879417fef082b3381a4e211c324f074654c38823a7b76f830ad00fa1fbae42b1285c0352f227524bc9ab1
6254288dd6863dccd5b9f54a1ad0541b"
Делал все по примерам из SDK. В чем может заключаться ошибка?
Данные в примерах ГОСТ34.11-2012 представлены в формате "big-endian". Для сверки с нашим PKCS#11 необходимо разворачивать входной и выходной буферы.
CK_BYTE message[] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33,
0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31,
0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32,
}
CK_BYTE expected_hash[] = {
0x1b, 0x54, 0xd0, 0x1a, 0x4a, 0xf5, 0xb9, 0xd5,
0xcc, 0x3d, 0x86, 0xd6, 0x8d, 0x28, 0x54, 0x62,
0xb1, 0x9a, 0xbc, 0x24, 0x75, 0x22, 0x2f, 0x35,
0xc0, 0x85, 0x12, 0x2b, 0xe4, 0xba, 0x1f, 0xfa,
0x00, 0xad, 0x30, 0xf8, 0x76, 0x7b, 0x3a, 0x82,
0x38, 0x4c, 0x65, 0x74, 0xf0, 0x24, 0xc3, 0x11,
0xe2, 0xa4, 0x81, 0x33, 0x2b, 0x08, 0xef, 0x7f,
0x41, 0x79, 0x78, 0x91, 0xc1, 0x64, 0x6f, 0x48,
}
Да, спасибо, все заработало верно. С подписью ГОСТ 34.10-2012 точно также поступать?
Данные в примерах ГОСТ34.11-2012 представлены в формате "little-endian". Для сверки с нашим PKCS#11 необходимо разворачивать входной и выходной буферы.
CK_BYTE message[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, } CK_BYTE expected_hash[] = { 0x1b, 0x54, 0xd0, 0x1a, 0x4a, 0xf5, 0xb9, 0xd5, 0xcc, 0x3d, 0x86, 0xd6, 0x8d, 0x28, 0x54, 0x62, 0xb1, 0x9a, 0xbc, 0x24, 0x75, 0x22, 0x2f, 0x35, 0xc0, 0x85, 0x12, 0x2b, 0xe4, 0xba, 0x1f, 0xfa, 0x00, 0xad, 0x30, 0xf8, 0x76, 0x7b, 0x3a, 0x82, 0x38, 0x4c, 0x65, 0x74, 0xf0, 0x24, 0xc3, 0x11, 0xe2, 0xa4, 0x81, 0x33, 0x2b, 0x08, 0xef, 0x7f, 0x41, 0x79, 0x78, 0x91, 0xc1, 0x64, 0x6f, 0x48, }
Страницы Назад 1 … 7 8 9 10 Далее
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
Форум Рутокен → Техническая поддержка разработчиков → Работа с функциями библиотеки rtPKCS11ECP