Files
Bridge-and-Join-s/services/crypto-service/build.gradle.kts
zuevav 9737c787f9 feat: живой цикл M2M с НРД + мастер установки ключа на флешку
Инфраструктура M2M (живой обмен с НРД через ИШ):
- обработка M2MTransferResponse: ERROR(M2Mxx) → заявка Отклонена, сохранение
  ответа; INFO → ждём Decision; идемпотентность поллера
- fallback-корреляция ответов с нулевым GUID (M2M14/M2M17) по FIFO
- сырой XML ответа НРД в карточке заявки (для пересылки в ТП)
- тестовый пакет роботу приведён к эталону m2m_robot_samples (CostInfo=Yes,
  4 бумаги, IsolationStatus, DocumentSeries=сценарий); override паспорта
- редирект из теста сразу в карточку заявки

Мастер установки ключа Валидаты на флешку (admin/setup/keywizard):
- пошаговый: загрузка .7z+пароль → выбор флешки → запись → справочник
  сертификатов (CRL) → перезапуск+проверка ИШ → готово
- привилегированный воркер (bj-keymedia) в host-namespace через файл-обмен,
  bj-server остаётся в песочнице
- сохранение структуры профиля архива (spr<N>), перечисление съёмных USB

Прочее:
- пакет-доказательство для ТП НРД + форма регистрации участника M2M
- эталонные образцы робота (DOC/m2m_robot_samples)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:03:21 +03:00

100 lines
2.7 KiB
Kotlin

// build.gradle.kts — Gradle build для crypto-service.
//
// Артефакт: ./build/libs/crypto-service-0.1.0-all.jar (shadow jar).
// Запуск:
// java -Djava.library.path=/opt/Validata/VDCSP/lib/amd64 \
// -jar crypto-service-0.1.0-all.jar
//
// Зависимости:
// - grpc-java (server + protoc-gen-java) — Maven Central
// - protobuf-java — Maven Central
// - apache santuario (XMLDSig) — Maven Central
// - Pki1.LocalIface.jar (Валидата JNI) — libs/ (положен из
// /opt/Validata/VDCSP/lib/)
//
// Java toolchain — 17 (LTS), на Astra 1.7 ставится из openjdk-17-jdk.
import com.google.protobuf.gradle.id
plugins {
id("java")
id("application")
id("com.google.protobuf") version "0.9.4"
id("com.github.johnrengelman.shadow") version "8.1.1"
}
group = "ru.zetit.bridgeandjoins"
version = "0.1.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
repositories {
mavenCentral()
flatDir { dirs("libs") } // Pki1.LocalIface.jar (Валидата)
}
dependencies {
val grpcVer = "1.62.2"
val protobufVer = "3.25.3"
implementation("io.grpc:grpc-netty-shaded:$grpcVer")
implementation("io.grpc:grpc-protobuf:$grpcVer")
implementation("io.grpc:grpc-stub:$grpcVer")
implementation("com.google.protobuf:protobuf-java:$protobufVer")
// XMLDSig — построение/разбор подписи. ГОСТ-алгоритмы реализуем сами
// (digest + signature через VCERT_*), Santuario используем только для
// канонизации и сборки XML-структуры.
implementation("org.apache.santuario:xmlsec:3.0.4")
// Валидата Клиент L — Pki1.LocalIface.jar.
implementation(files("libs/Pki1.LocalIface.jar"))
compileOnly("javax.annotation:javax.annotation-api:1.3.2")
implementation("ch.qos.logback:logback-classic:1.5.6")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("io.grpc:grpc-testing:$grpcVer")
}
application {
mainClass.set("ru.zetit.bridgeandjoins.crypto.CryptoServer")
applicationDefaultJvmArgs = listOf(
"-Djava.library.path=/opt/Validata/VDCSP/lib/amd64",
)
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.25.3"
}
plugins {
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:1.62.2"
}
}
generateProtoTasks {
all().forEach { task ->
task.plugins {
id("grpc")
}
}
}
}
sourceSets {
main {
proto {
srcDir("proto")
}
}
}
tasks.withType<Test> {
useJUnitPlatform()
}