Atom Лента - Форум КриптоПро - Тема:Сохраниение файла подписи - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Sokhranieniefajjlapodpisi-10:1Copyright 2024 Форум КриптоПро2024-03-29T05:05:45Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевГригорий812https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=59971&name=Григорий812YetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid127289:1Сохраниение файла подписи<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />Сохранить можно так, как вам удобно - в виде бинарного файла (asn1) или сконвертировать в base64 и сохранить как строку, но в последнем случае перед проверкой надо будет сконвертировать обратно - из base64 в asn1.</td></tr></table>2021-09-14T23:04:00+03:002021-09-14T23:04:00+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />Сохранить можно так, как вам удобно - в виде бинарного файла (asn1) или сконвертировать в base64 и сохранить как строку, но в последнем случае перед проверкой надо будет сконвертировать обратно - из base64 в asn1.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127225:1Сохраниение файла подписи<table class="content postContainer" width="100%"><tr><td>Здравствуйте.<br />Возник вопрос : как корректно сохранить сохранить в файл результа подписи даных.<br /><br />Подпись осуществляется так:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
public byte[] getSign (ContainerAdapter _containerAdapter, String _storeAlias, String _certificateAlias, byte[] _dataB, boolean _askPin, String _pin ) {
try {
//Базовый обьект
SignData signData = new SignData(_containerAdapter, false) {
@Override
public void getResult(FinalListener listener) throws Exception {
}
};
//Указываем хранилище
KeyStoreType.init(context);
KeyStoreType.saveCurrentType(_storeAlias);
//Загрузка ключа и сертификата.
String keyStoreType = KeyStoreType.currentType();
String alisa = _containerAdapter.getClientAlias();
char[] password = _containerAdapter.getClientPassword();
if(!_askPin) password = _pin.toCharArray();
signData.load(_askPin, keyStoreType, alisa, password);
//Проверяем на приватность
if (signData.getPrivateKey() == null) {
return null;
}
//Определяем алгоритмы
KeyStore keyStore = KeyStore.getInstance(_storeAlias, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Certificate certificate = keyStore.getCertificate(_certificateAlias);
String keyAlg = certificate.getPublicKey().getAlgorithm();
String sigAlg = getSignatureAlgByKeyAlg(keyAlg);
//Инициализация подписи
Signature signature = Signature.getInstance(sigAlg, JCSP.PROVIDER_NAME);
signature.initSign(signData.getPrivateKey());
signature.update(_dataB);
// Формируем подпись.
byte[] sign = signature.sign();
//Проверяем подпись
//cAdESSignature = CAdESSignature(sign, hashData.toByteArray(), cAdESType, true)
//cAdESSignature.verify(chain)
return sign;
}catch (Exception ew){
return null;
}
}
</code></pre>
</div></div><br /><br />В результате получаем подпись как byte[].<br />Как следует правильно сохранить результат в файл, дабы потом осуществить верификацию?</td></tr></table>2021-09-13T10:41:37+03:002021-09-13T10:41:37+03:00Григорий812<table class="content postContainer" width="100%"><tr><td>Здравствуйте.<br />Возник вопрос : как корректно сохранить сохранить в файл результа подписи даных.<br /><br />Подпись осуществляется так:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
public byte[] getSign (ContainerAdapter _containerAdapter, String _storeAlias, String _certificateAlias, byte[] _dataB, boolean _askPin, String _pin ) {
try {
//Базовый обьект
SignData signData = new SignData(_containerAdapter, false) {
@Override
public void getResult(FinalListener listener) throws Exception {
}
};
//Указываем хранилище
KeyStoreType.init(context);
KeyStoreType.saveCurrentType(_storeAlias);
//Загрузка ключа и сертификата.
String keyStoreType = KeyStoreType.currentType();
String alisa = _containerAdapter.getClientAlias();
char[] password = _containerAdapter.getClientPassword();
if(!_askPin) password = _pin.toCharArray();
signData.load(_askPin, keyStoreType, alisa, password);
//Проверяем на приватность
if (signData.getPrivateKey() == null) {
return null;
}
//Определяем алгоритмы
KeyStore keyStore = KeyStore.getInstance(_storeAlias, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Certificate certificate = keyStore.getCertificate(_certificateAlias);
String keyAlg = certificate.getPublicKey().getAlgorithm();
String sigAlg = getSignatureAlgByKeyAlg(keyAlg);
//Инициализация подписи
Signature signature = Signature.getInstance(sigAlg, JCSP.PROVIDER_NAME);
signature.initSign(signData.getPrivateKey());
signature.update(_dataB);
// Формируем подпись.
byte[] sign = signature.sign();
//Проверяем подпись
//cAdESSignature = CAdESSignature(sign, hashData.toByteArray(), cAdESType, true)
//cAdESSignature.verify(chain)
return sign;
}catch (Exception ew){
return null;
}
}
</code></pre>
</div></div><br /><br />В результате получаем подпись как byte[].<br />Как следует правильно сохранить результат в файл, дабы потом осуществить верификацию?</td></tr></table>