entropy-processor is a Quarkus-based backend service (Java 21) that receives entropy events from edge gateways over gRPC, persists them in TimescaleDB/PostgreSQL, exposes analysis and operations APIs over REST, and orchestrates external NIST SP 800-22 and SP 800-90B validation services.
The service also includes optional kernel entropy injection (/dev/random) and a scheduled entropy-source comparison workflow.
From repository evidence, this module has the following core responsibilities:
- Ingest
EntropyBatchstreams from edge gateways (EntropyStreamService). - Validate and map gRPC payloads to persistent entities (
EntropyBatchProcessingService,GrpcMappingService). - Persist high-throughput event data and validation results (
EntropyDataPersistenceService, Panache entities, Flyway schema). - Expose REST APIs for entropy metrics, event queries, validation job management, and comparison results (
resource/*). - Run scheduled and on-demand NIST validation pipelines (
NistValidationService). - Provide readiness/liveness checks for database, external NIST services, and kernel writer state (
health/*). - Enforce OIDC-based security for REST and gRPC interfaces (
OidcAuthInterceptor,JwtValidationService,ZitadelRolesAugmentor).
entropy-processor/
src/main/java/com/ammann/entropy/
config/ # CDI producers (executor)
dto/ # API and service DTO records
enumeration/ # Domain enums (job state, validation types, source types)
exception/ # API and domain exception mapping
health/ # SmallRye Health checks
interceptor/ # gRPC auth interceptor
model/ # JPA/Panache entities and query helpers
properties/ # API path constants
resource/ # REST resources
security/ # OIDC role augmentation
service/ # gRPC service + application services
startup/ # Startup recovery logic for async jobs
src/main/proto/ # gRPC and NIST protocol contracts
src/main/resources/
application.properties
db/migration/V1__initial_schema.sql
docs/
architecture.md
api-reference.md
data-model.md
- REST API (
/api/v1/...) for entropy statistics, event data access, validation jobs/results, public activity, and entropy comparison operations. - gRPC server service
entropy.EntropyStreamwith:StreamEntropy(bidirectional ingestion)SubscribeBatches(server streaming)Control(bidirectional control plane)
- Health/management endpoints via Quarkus management interface (
/q/health/*,/q/metrics,/q/openapi).
Detailed interface documentation is in docs/api-reference.md.
- TimescaleDB/PostgreSQL for all persisted event and validation data.
- External NIST SP 800-22 gRPC service (
Sp80022TestService). - External NIST SP 800-90B gRPC service (
Sp80090bAssessmentService). - OIDC provider (configured for ZITADEL role claims and optional opaque-token introspection).
- Linux kernel random device for optional entropy mixing (
kernel.entropy.writer.*).
- Java 21
- Maven Wrapper (
./mvnwincluded) - Reachable PostgreSQL/TimescaleDB
- OIDC and NIST services for full feature operation
cd entropy-processor
./mvnw quarkus:devcd entropy-processor
./mvnw packageConfiguration is centralized in src/main/resources/application.properties. The main groups are:
quarkus.datasource.*,quarkus.hibernate-orm.*,quarkus.flyway.*quarkus.grpc.server.*,quarkus.grpc.clients.*quarkus.oidc.*,quarkus.oidc-client.*,entropy.security.enablednist.sp80022.*,nist.sp80090b.*kernel.entropy.writer.*entropy.comparison.*
- Architecture Overview: component boundaries, interaction patterns, and service role separation.
- API Reference: REST and gRPC contracts exposed or consumed by this module.
- Data Model: persistent schema, table purposes, and relational boundaries.