Watch
1
0
Fork
You've already forked jeap-crypto
0
mirror of https://github.com/jeap-admin-ch/jeap-crypto.git synced 2026-08-17 12:55:00 +00:00
Read-only mirror of https://github.com/jeap-admin-ch/jeap-crypto — Bundesamt für Informatik und Telekommunikation. Issues & pull requests at the source. Catalog: https://www.opensource.admin.ch/en/softwares/mtk8ad https://www.opensource.admin.ch/en/softwares/mtk8ad
  • Java 99.2%
  • Shell 0.6%
  • HCL 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-13 08:29:19 +02:00
.mvn/wrapper JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
docker JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
docs JEAP-7244 Replaced LocalStack with Floci as AWS emulator in integration tests 2026-07-09 10:10:15 +02:00
jeap-crypto-aws-kms Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-aws-kms-starter Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-core Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-db Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-multi-kms-it Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-s3 Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-spring Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-vault Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
jeap-crypto-vault-starter Version 10.13.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:55:45 +02:00
.gitignore JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
AGENTS.md JEAP-7244 Replaced LocalStack with Floci as AWS emulator in integration tests 2026-07-09 10:10:15 +02:00
CHANGELOG.md Version 10.13.0: update jeap-spring-boot-vault-starter from 24.12.0 to 24.14.0 2026-08-13 08:29:19 +02:00
CONTRIBUTING.md JEAP-7087: update documentation 2026-07-03 07:56:12 +02:00
LICENSE JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
mvnw JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
pom.xml Version 10.13.0: update jeap-spring-boot-vault-starter from 24.12.0 to 24.14.0 2026-08-13 08:29:19 +02:00
publiccode.yml Update version/date in publiccode.yml 2026-08-13 07:58:33 +02:00
README.md JEAP-7087: update documentation 2026-07-03 07:56:12 +02:00
SECURITY.md jEAP OSS preparation 2024-12-06 08:27:26 +01:00
setPomVersions.sh JEAP-4976 Update to internal parent 5.2.5 2024-11-15 15:12:34 +01:00
THIRD-PARTY-LICENSES.md Updating THIRD-PARTY-LICENSES.md 2026-08-13 07:57:02 +02:00

jEAP Crypto

jEAP Crypto is a library that provides client-side encryption for data at-rest in Spring Boot applications, and is part of the jEAP project. It performs the actual encryption in the application (client-side) and uses a Key Management Service (KMS) only to wrap/unwrap short-lived data keys, so the wrapping key never leaves the KMS. Encryption is based on AES-256-GCM. The library is independent of the persistence technology and provides:

  • CryptoService, KeyReferenceCryptoService and KeyIdCryptoService APIs to encrypt/decrypt byte arrays
  • A self-describing binary container format that stores the encrypted data key together with the ciphertext
  • KMS backends for HashiCorp Vault (Transit secrets engine) and AWS KMS, wired up via Spring Boot starters
  • Data-key caching (per wrapping key) to reduce KMS round-trips, with Micrometer metrics
  • Escrow encryption of data keys (AWS KMS) for disaster recovery without the KMS
  • Ready-made helpers for encrypted database columns (JPA AttributeConverter) and S3 objects; the generic byte-array API integrates equally well with Kafka messages, the jEAP Process Archive Service, or any other persistence or messaging technology

Documentation

Start with Getting started, then follow the links below.

Topic File
Getting started (add the starter, encrypt & decrypt) docs/getting-started.md
Architecture & encryption flow docs/architecture.md
Configuration reference (jeap.crypto.*) docs/configuration.md
Crypto APIs (CryptoService / KeyId / KeyReference) docs/crypto-api.md
Key management (Vault & AWS KMS, escrow, caching, metrics) docs/key-management.md
Encrypted database columns docs/database-columns.md
S3 object storage docs/s3-object-storage.md
Binary container format docs/data-format.md

Modules

The group id for all modules is ch.admin.bit.jeap; the version is managed by the jEAP Spring Boot parent. A consuming service depends on one of the starters (plus optional helper modules).

Module Purpose
jeap-crypto-core Crypto APIs, AES-GCM engine, container format, escrow and key-management abstractions
jeap-crypto-vault HashiCorp Vault Transit key-management implementation
jeap-crypto-aws-kms AWS KMS key-management implementation (incl. escrow encryption)
jeap-crypto-spring Common Spring Boot auto-configuration, bean registration and metrics
jeap-crypto-vault-starter Spring Boot starter wiring jEAP Crypto with Vault
jeap-crypto-aws-kms-starter Spring Boot starter wiring jEAP Crypto with AWS KMS
jeap-crypto-db JPA AttributeConverter for transparently encrypting database columns
jeap-crypto-s3 JeapCryptoS3Template for encrypting/decrypting S3 objects

Changes

This library is versioned using Semantic Versioning and all changes are documented in CHANGELOG.md following the format defined in Keep a Changelog.

Note

This repository is part the open source distribution of jEAP. See github.com/jeap-admin-ch/jeap for more information.

License

This repository is Open Source Software licensed under the Apache License 2.0.