Я интегрирую класс электронных подписей Xades в Java, чтобы отправить подписанный счет XML на платформу электронного значения.
Я нашел класс Java, который почти соответствует моим потребностям: < /p>
package eu.europa.esig.dss.cookbook.example.sign;
import eu.europa.esig.dss.enumerations.DigestAlgorithm;
import eu.europa.esig.dss.enumerations.SignatureLevel;
import eu.europa.esig.dss.enumerations.SignaturePackaging;
import eu.europa.esig.dss.model.DSSDocument;
import eu.europa.esig.dss.model.FileDocument;
import eu.europa.esig.dss.model.SignatureValue;
import eu.europa.esig.dss.model.ToBeSigned;
import eu.europa.esig.dss.token.DSSPrivateKeyEntry;
import eu.europa.esig.dss.token.MSCAPISignatureToken;
import eu.europa.esig.dss.spi.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.xades.XAdESSignatureParameters;
import eu.europa.esig.dss.xades.signature.XAdESService;
import java.util.List;
/**
* How to sign using MS-CAPI.
*/
public class SignXmlXadesBWithMSCAPI {
/**
* Executable application
*/
private SignXmlXadesBWithMSCAPI() {
}
/**
* Main method
*
* @param args not applicable
* @throws Exception if an exception occurs
*/
public static void main(String[] args) throws Exception {
// GET document to be signed -
// Return DSSDocument toSignDocument
DSSDocument toSignDocument = new FileDocument("src/main/resources/xml_example.xml");
// Creation of MS-CAPI signature token
try (MSCAPISignatureToken signingToken = new MSCAPISignatureToken()) {
List list = signingToken.getKeys();
// Choose the right private key entry from store.
// The index will depend of the number of the certificates on your card.
System.out.println(list.size());
DSSPrivateKeyEntry privateKey = list.get(0);
// Preparing parameters for the PAdES signature
XAdESSignatureParameters parameters = new XAdESSignatureParameters();
// We choose the level of the signature (-B, -T, -LT, -LTA).
parameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_B);
// We choose the type of the signature packaging (ENVELOPING, DETACHED).
parameters.setSignaturePackaging(SignaturePackaging.ENVELOPED);
// We set the digest algorithm to use with the signature algorithm. You must use the
// same parameter when you invoke the method sign on the token.
parameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
// We set the signing certificate
parameters.setSigningCertificate(privateKey.getCertificate());
// We set the certificate chain
parameters.setCertificateChain(privateKey.getCertificateChain());
// Create common certificate verifier
CommonCertificateVerifier commonCertificateVerifier = new CommonCertificateVerifier();
// Create CAdES xadesService for signature
XAdESService xadesService = new XAdESService(commonCertificateVerifier);
// Get the SignedInfo segment that need to be signed.
ToBeSigned dataToSign = xadesService.getDataToSign(toSignDocument, parameters);
// This function obtains the signature value for signed information using the
// private key and specified algorithm
DigestAlgorithm digestAlgorithm = parameters.getDigestAlgorithm();
SignatureValue signatureValue = signingToken.sign(dataToSign, digestAlgorithm, privateKey);
// We invoke the xadesService to sign the document with the signature value obtained in
// the previous step.
DSSDocument signedDocument = xadesService.signDocument(toSignDocument, parameters, signatureValue);
// save the signed document on the filesystem
signedDocument.save("target/signedXmlXadesMSCapi.xml");
}
}
}
< /code>
Тем не менее, мне нужно добавить элементы роли подписчиков и подписавшего, чтобы подписанный файл был принят платформой.
Вот пример необходимого фрагмента XML, который отсутствует в моей подписи: < /p>
2018-06-21T13:53:18Z
Fi3/GHSQt+Xo6xqgSkTzVn96AIM=
MIGAMHSkcjBwMQswCQYDVQQGEwJUTjEOMAwGA1UEBwwFVHVuaXMxLjAsBgNVBAoMJU5hdGlvbmFsIERpZ2l0YWwgQ2VydGlmaWN
hdGlvbiBBZ2VuY3kxITAfBgNVBAMMGFRuVHJ1c3QgUXVhbGlmaWVkIEdvdiBDQQIIRZLo6uoLbQ4=
urn:2.16.788.1.2.1
Politique de signature de la facture electronique
dJfuvjtlkeBfLBKUf142staW57x6LpSKGIfzWvohY3E=
http://www.tradenet.com.tn/portal/telec ... onique.pdf
Fournisseur
application/octet-stream
< /code>
Как я могу добавить политику подписи и роль подписи к подписи Xades-B, используя библиотеку Java DSS? Но дальнейших примеров нет.
Подробнее здесь: https://stackoverflow.com/questions/797 ... dss-java-l
Как добавить политику подписи и роль подписи к подписи Xades-B с библиотекой DSS Java? ⇐ JAVA
Программисты JAVA общаются здесь
1758704440
Anonymous
Я интегрирую класс электронных подписей Xades в Java, чтобы отправить подписанный счет XML на платформу электронного значения.
Я нашел класс Java, который почти соответствует моим потребностям: < /p>
package eu.europa.esig.dss.cookbook.example.sign;
import eu.europa.esig.dss.enumerations.DigestAlgorithm;
import eu.europa.esig.dss.enumerations.SignatureLevel;
import eu.europa.esig.dss.enumerations.SignaturePackaging;
import eu.europa.esig.dss.model.DSSDocument;
import eu.europa.esig.dss.model.FileDocument;
import eu.europa.esig.dss.model.SignatureValue;
import eu.europa.esig.dss.model.ToBeSigned;
import eu.europa.esig.dss.token.DSSPrivateKeyEntry;
import eu.europa.esig.dss.token.MSCAPISignatureToken;
import eu.europa.esig.dss.spi.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.xades.XAdESSignatureParameters;
import eu.europa.esig.dss.xades.signature.XAdESService;
import java.util.List;
/**
* How to sign using MS-CAPI.
*/
public class SignXmlXadesBWithMSCAPI {
/**
* Executable application
*/
private SignXmlXadesBWithMSCAPI() {
}
/**
* Main method
*
* @param args not applicable
* @throws Exception if an exception occurs
*/
public static void main(String[] args) throws Exception {
// GET document to be signed -
// Return DSSDocument toSignDocument
DSSDocument toSignDocument = new FileDocument("src/main/resources/xml_example.xml");
// Creation of MS-CAPI signature token
try (MSCAPISignatureToken signingToken = new MSCAPISignatureToken()) {
List list = signingToken.getKeys();
// Choose the right private key entry from store.
// The index will depend of the number of the certificates on your card.
System.out.println(list.size());
DSSPrivateKeyEntry privateKey = list.get(0);
// Preparing parameters for the PAdES signature
XAdESSignatureParameters parameters = new XAdESSignatureParameters();
// We choose the level of the signature (-B, -T, -LT, -LTA).
parameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_B);
// We choose the type of the signature packaging (ENVELOPING, DETACHED).
parameters.setSignaturePackaging(SignaturePackaging.ENVELOPED);
// We set the digest algorithm to use with the signature algorithm. You must use the
// same parameter when you invoke the method sign on the token.
parameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
// We set the signing certificate
parameters.setSigningCertificate(privateKey.getCertificate());
// We set the certificate chain
parameters.setCertificateChain(privateKey.getCertificateChain());
// Create common certificate verifier
CommonCertificateVerifier commonCertificateVerifier = new CommonCertificateVerifier();
// Create CAdES xadesService for signature
XAdESService xadesService = new XAdESService(commonCertificateVerifier);
// Get the SignedInfo segment that need to be signed.
ToBeSigned dataToSign = xadesService.getDataToSign(toSignDocument, parameters);
// This function obtains the signature value for signed information using the
// private key and specified algorithm
DigestAlgorithm digestAlgorithm = parameters.getDigestAlgorithm();
SignatureValue signatureValue = signingToken.sign(dataToSign, digestAlgorithm, privateKey);
// We invoke the xadesService to sign the document with the signature value obtained in
// the previous step.
DSSDocument signedDocument = xadesService.signDocument(toSignDocument, parameters, signatureValue);
// save the signed document on the filesystem
signedDocument.save("target/signedXmlXadesMSCapi.xml");
}
}
}
< /code>
Тем не менее, мне нужно добавить элементы роли подписчиков и подписавшего, чтобы подписанный файл был принят платформой.
Вот пример необходимого фрагмента XML, который отсутствует в моей подписи: < /p>
2018-06-21T13:53:18Z
Fi3/GHSQt+Xo6xqgSkTzVn96AIM=
MIGAMHSkcjBwMQswCQYDVQQGEwJUTjEOMAwGA1UEBwwFVHVuaXMxLjAsBgNVBAoMJU5hdGlvbmFsIERpZ2l0YWwgQ2VydGlmaWN
hdGlvbiBBZ2VuY3kxITAfBgNVBAMMGFRuVHJ1c3QgUXVhbGlmaWVkIEdvdiBDQQIIRZLo6uoLbQ4=
urn:2.16.788.1.2.1
Politique de signature de la facture electronique
dJfuvjtlkeBfLBKUf142staW57x6LpSKGIfzWvohY3E=
http://www.tradenet.com.tn/portal/telechargerTelechargement?lien=Politique_de_Signature_de_la_facture_electronique.pdf
Fournisseur
application/octet-stream
< /code>
Как я могу добавить политику подписи и роль подписи к подписи Xades-B, используя библиотеку Java DSS? Но дальнейших примеров нет.
Подробнее здесь: [url]https://stackoverflow.com/questions/79773489/how-to-add-signature-policy-and-signer-role-to-xades-b-signature-with-dss-java-l[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия