<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Взаимодействие с RSA сертификатами в Android приложении.]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/3444/" />
	<updated>2021-11-12T08:27:46Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/3444/</id>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с RSA сертификатами в Android приложении.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/16244/#p16244" />
			<content type="html"><![CDATA[<p>Проблема в том что у ГОСТ-ключей есть CKA_VALUE, у RSA нет. Таков стандарт PKCS11.<br />RSA ключи надо искать по-другому, например, по СKA_ID объекта.</p><p>Напишите нам hotline@rutoken.ru - будет легче обмениваться программным кодом.</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2021-11-12T08:27:46Z</updated>
			<id>https://forum.rutoken.ru/post/16244/#p16244</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с RSA сертификатами в Android приложении.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/16243/#p16243" />
			<content type="html"><![CDATA[<p>Спасибо за ответ, </p><p>1) данный пример видел, но он не очень понятен. Вызывает трудности сопоставление значения из X509CertificateHolder и keyValue для RSA сертификатов.<br /></p><div class="codebox"><pre><code>CK_ATTRIBUTE[] pubKeyTemplate = (CK_ATTRIBUTE[]) (new CK_ATTRIBUTE()).toArray(3);

final NativeLongByReference keyClass =
        new NativeLongByReference(new NativeLong(Pkcs11Constants.CKO_PUBLIC_KEY));
pubKeyTemplate[0].type = new NativeLong(Pkcs11Constants.CKA_CLASS);
pubKeyTemplate[0].pValue = keyClass.getPointer();
pubKeyTemplate[0].ulValueLen = new NativeLong(NativeLong.SIZE);

ByteBuffer valueBuffer = ByteBuffer.allocateDirect(keyValue.length);
valueBuffer.put(keyValue);
pubKeyTemplate[1].type = new NativeLong(Pkcs11Constants.CKA_VALUE);
pubKeyTemplate[1].pValue = Native.getDirectBufferPointer(valueBuffer);
pubKeyTemplate[1].ulValueLen = new NativeLong(keyValue.length);

final NativeLongByReference keyClass1 =
        new NativeLongByReference(new NativeLong(Pkcs11Constants.CKK_RSA));
pubKeyTemplate[2].type = new NativeLong(Pkcs11Constants.CKA_KEY_TYPE);
pubKeyTemplate[2].pValue = keyClass1.getPointer();
pubKeyTemplate[2].ulValueLen = new NativeLong(NativeLong.SIZE);</code></pre></div><p>2) Увидел обновление в документации<br /></p><div class="codebox"><pre><code>CKM_SHA_256 для хеширования алгоритмом SHA-256 (только программно),
CKM_SHA_512 для хеширования алгоритмом SHA-512 (только программно),</code></pre></div><p>Переменные CKM_SHA_256 и CKM_SHA_512 не находит, верно ли название?<br />Есть только Pkcs11Constants.CKM_SHA256.</p><p>Для sha256:<br />- в функцию (<a href="https://github.com/AktivCo/rutoken-demobank-android/blob/master/app/src/main/java/ru/rutoken/demobank/pkcs11caller/signature/AbstractSignature.java#L32">https://github.com/AktivCo/rutoken-demo … e.java#L32</a>) передаю <strong>makeMechanism(CKM_RSA_PKCS)</strong><br />- в функции (<a href="https://github.com/AktivCo/rutoken-demobank-android/blob/master/app/src/main/java/ru/rutoken/demobank/bcprovider/GostContentSigner.java#L32">https://github.com/AktivCo/rutoken-demo … r.java#L32</a>) добавляю новый AlgorithmIdentifier <strong>return new AlgorithmIdentifier(new ASN1ObjectIdentifier(&quot;1.2.840.113549.1.1.11&quot;)); // sha256WithRSAEncryption</strong><br />- в функцию (<a href="https://github.com/AktivCo/rutoken-demobank-android/blob/master/app/src/main/java/ru/rutoken/demobank/bcprovider/GostDigestCalculator.java#L25">https://github.com/AktivCo/rutoken-demo … r.java#L25</a>) также добавляю новый AlgorithmIdentifier <strong>return new AlgorithmIdentifier(new ASN1ObjectIdentifier(&quot;2.16.840.1.101.3.4.2.1&quot;)); // sha-256</strong><br />- создал класс наследуемый от Pkcs11Digest, которая вызывает Pkcs11Digest с параметром <strong>Pkcs11Constants.CKM_SHA256</strong>. Длина хеша равна 32.<br />- Для RSA <strong>CK_MECHANISM</strong> формируется как <strong>return new CK_MECHANISM(new NativeLong(type), null, new NativeLong(0))</strong></p><p>Подпись проверял через онлайн сервисы проверки подписи (криптопро, контур)</p>]]></content>
			<author>
				<name><![CDATA[SergeyRT]]></name>
				<uri>https://forum.rutoken.ru/user/11860/</uri>
			</author>
			<updated>2021-11-12T07:02:59Z</updated>
			<id>https://forum.rutoken.ru/post/16243/#p16243</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с RSA сертификатами в Android приложении.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/16242/#p16242" />
			<content type="html"><![CDATA[<p>Добрый день!</p><p>Отвечу по пунктам.</p><p>1. Пример шаблона открытого/закрытого ключа для поиска объектов через С_FindObjects есть в примере из <a href="https://www.rutoken.ru/developers/sdk/">Комплекта разработчика Руутокен</a> по пути внутри архива &lt;sdk&gt;\java\samples\pkcs11\src\ru\rutoken\samples\pkcs11\PKIExtensionsRSA.java<br />Также в этом примере есть пример хеширования, используя SHA-256.</p><p>2. В документации была неточность, спасибо, что сообщили. SHA-256 и SHA-512 поддерживаются. Расскажите, пожалуйста, как вы подписываете и чем проверяете подпись?</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2021-11-12T06:40:44Z</updated>
			<id>https://forum.rutoken.ru/post/16242/#p16242</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Взаимодействие с RSA сертификатами в Android приложении.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/16241/#p16241" />
			<content type="html"><![CDATA[<p>Добрый день, подскажите, пожалуйста,</p><p>1. Как корректно получить ссылки на публичный и закрытый ключи от RSA сертификата? Пример из гитхаба (<a href="https://github.com/AktivCo/rutoken-demobank-android/blob/master/app/src/main/java/ru/rutoken/demobank/pkcs11caller/GostKeyPair.java#L36">https://github.com/AktivCo/rutoken-demo … r.java#L36</a>) ориентирован на ГОСТ алгоритмы.</p><p>2. Подпись сертификатом RSA с алгоритмов хеширования sha256 (sha512) не проходит проверку подписи. У Вас в документации (<a href="https://dev.rutoken.ru/pages/viewpage.action?pageId=13795364#id-%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D1%87%D0%B5%D1%80%D0%B5%D0%B7PKCS11-%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D1%8B">https://dev.rutoken.ru/pages/viewpage.a … 0%BC%D1%8B</a>) указано, что алгоритмы хеширования sha256/sha512 не поддерживаются, но в коде присутствуют переменнные Pkcs11Constants.CKM_SHA256 (Pkcs11Constants.CKM_SHA512).<br />При подписи сертификатом RSA с алгоритмом хеширования sha1 или md5 проверка подписи проходит успешно.</p>]]></content>
			<author>
				<name><![CDATA[SergeyRT]]></name>
				<uri>https://forum.rutoken.ru/user/11860/</uri>
			</author>
			<updated>2021-11-12T05:55:31Z</updated>
			<id>https://forum.rutoken.ru/post/16241/#p16241</id>
		</entry>
</feed>
