β-ТЕСТB2BH2HB2C

SDK для подписи

Зависимость api-sdk-crypto включает в себя разнообразные сервисы, реализующие криптографические методы и алгоритмы. В настоящее время поддерживается только подписание RSA-сертификатом файлов формата CMS , JSON и XML.

Подключение зависимости

Перейти в build.gradle Вашего модуля и добавить зависимость внутрь блока dependencies { ... } .

1dependencies {
2    implementation("com.alfa.api.sdk:api-sdk-crypto:0.5.1") 
3}
Инициализация SDK

Описание к инициализации можно посмотреть здесь.

Создание сервисов

Чтобы создать CmsSignatureService, Вам необходимо написать следующий код.

1CmsSignatureService cmsSignatureService = new CmsSignatureServiceImpl(
2KeyStoreParameters.builder()
3        .path("/path/to/keystore")
4        .type(KeyStoreParameters.KeyStoreType.JKS)
5        .password("example")
6        .privateKey(PrivateKeyParameters.builder()
7                .alias("example")
8                .password("example")
9                .build())
10        .certificate(CertificateParameters.builder()
11                .alias("example")
12                .build())
13        .build(),
14    SignatureAlgorithm.RSA
15);

Аналогично для JwsSignatureService и XmlSignatureService.

CMS
1byte[] detachedSignature = cmsSignatureService.signDetached("some data to be signed".getBytes(StandardCharsets.UTF_8));
2boolean verificationResult = cmsSignatureService.verifyDetached("some data to be signed".getBytes(StandardCharsets.UTF_8), detachedSignature);
3
4byte[] attachedSignature = cmsSignatureService.signAttached("some data to be signed".getBytes(StandardCharsets.UTF_8));
5boolean verificationResult = cmsSignatureService.verifyAttached(attachedSignature);

signDetached(byte[] data) - этот метод подписывает данные, используя метод отдельной подписи. Он принимает данные, которые необходимо подписать, в качестве входных данных и возвращает подпись в виде массива байт.

verifyDetached(byte[] data, byte[] signature) - этот метод проверяет соответствие отдельной подписи исходным данным. Для этого требуется, чтобы исходные данные и подпись были проверены в качестве входных данных. Он возвращает значение true, если подпись действительна, и значение false в противном случае.

signAttached(byte[] data) - этот метод подписывает предоставленные данные прикреплённой подписью. Он принимает данные, которые необходимо подписать, в качестве входных данных и возвращает заключённые в однобайтовый массив данные вместе с подписью.

verifyAttached(byte[] dataWithSignature) - этот метод проверяет приложенную подпись на соответствие предоставленным данным, которые включают подпись. Он принимает данные с приложенной подписью в качестве входных данных и возвращает значение true, если подпись действительна, и значение false в противном случае.

JWS
1byte[] jwsWithoutData = jwsSignatureService.signDetached("{\"some\":\"json\"}");
2boolean verificationResult = jwsSignatureService.verifyDetached("{\"some\":\"json\"}", jwsWithoutData);
3
4byte[] jwsWithData = jwsSignatureService.signAttached("{\"some\":\"json\"}");
5boolean verificationResult = jwsSignatureService.verifyAttached(jwsWithData);

signDetached(String data) - генерирует JWS-подпись для заданных данных, не включая сами данные в подпись. Возвращает подпись в виде строки.

verifyDetached(String data, String jwsWithoutData) - проверяет соответствие отдельной подписи JWS исходным данным. Возвращает значение true, если подпись действительна и данные не были изменены; в противном случае возвращает значение false.

signAttached(String data) - создает подпись JWS, которая вставляет заданные данные в саму подпись. Возвращает объединённую подпись и данные в виде строки.

verifyAttached(String jwsWithData) - проверяет достоверность подписи JWS, содержащей внедрённые данные. Возвращает значение true, если подпись действительна, а внедрённые данные не изменены; в противном случае возвращает значение false.

XMLDsig
1byte[] signedXml = xmlSignatureService.sign("<Some>Xml</Some>");
2boolean verificationResult = xmlSignatureService.verify(signedXml);

sign(String data) - этот метод принимает XML-строку (данные) в качестве входных данных и возвращает новую строку, в которой исходное содержимое XML подписано цифровой подписью. Возвращаемая строка включает в себя как исходное содержимое XML, так и встроенную подпись.

verify(String dataWithSignature) - этот метод принимает строку XML (dataWithSignature), содержащую встроенную подпись. Он проверяет соответствие подписи ожидаемой подписи и возвращает значение true, если подпись действительна, или значение false, если это не так.