Статус: Новичок
Группы: Участники
Зарегистрирован: 18.05.2023(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 2 раз
|
Добрый день Пытаюсь подписать pdf документ средствами libcore Код:
public byte[] Sign(string thumbprint, byte[] bytes, int signatureFieldNumber, bool silent = true,
CancellationToken token = default)
{
var certCollection = _store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
if (!certCollection.Any())
throw new CryptoProException($"Не найден сертификат {thumbprint}");
var cert = certCollection[0];
if (cert is null)
throw new CryptoProException($"Не найден сертификат {thumbprint}");
using (MemoryStream output = new())
{
using (var reader = new PdfReader(bytes))
{
PdfStamper st = PdfStamper.CreateSignature(reader, output, '\0', null, true);
PdfSignatureAppearance sap = st.SignatureAppearance;
// Формируем штампик
X509CertificateParser parser = new X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] {
parser.ReadCertificate(cert.RawData)
};
sap.Certificate = parser.ReadCertificate(cert.RawData);
sap.Layer2Text = GetSignText(cert);
sap.Layer2Font = GetFont();
sap.Image = GetImage();
sap.SetVisibleSignature(GetRectangle(signatureFieldNumber), reader.NumberOfPages,
signatureFieldNumber.ToString());
IExternalSignature exSig = new MainSignature(cert.PrivateKey);
MakeSignature.SignDetached(sap, exSig, chain, null, null, null, 0, CryptoStandard.CMS);
return output.ToArray();
}
}
}
Код:
public class MainSignature : IExternalSignature
{
private AsymmetricAlgorithm _alg;
public MainSignature(AsymmetricAlgorithm alg)
{
_alg = alg;
}
public byte[] Sign(byte[] message)
{
var privateKey = _alg as Gost3410_2012_256CryptoServiceProvider;
return privateKey.SignData(
message,
CpHashAlgorithmName.Gost3411_2012_256);
}
public String GetHashAlgorithm()
{
return "GOST3411";
}
public String GetEncryptionAlgorithm()
{
return "RSA";
}
}
В результате получаю подписанный документ, но с ошибками signEr.jpg (61kb) загружен 7 раз(а).Скрин сертификата: scrin.png (12kb) загружен 7 раз(а).Подскажите, в чем может быть ошибка?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Добрый день.
Что делает функция "SignDetached"? Как используется "MainSignature"? Судя по коду он формирует "сырую" подпись, для pdf нужна только cms подпись, если только вы не собираете сами ASN1 структуру. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close