https://github.com/josacar/cpp-kms
Playing with AWS KMS in C++ and a static build
https://github.com/josacar/cpp-kms
Last synced: 4 months ago
JSON representation
Playing with AWS KMS in C++ and a static build
- Host: GitHub
- URL: https://github.com/josacar/cpp-kms
- Owner: josacar
- Created: 2025-06-21T09:31:28.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-06-21T10:02:21.000Z (7 months ago)
- Last Synced: 2025-06-21T10:35:04.481Z (7 months ago)
- Language: C++
- Size: 5.86 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AWS KMS Encryption/Decryption C++20 Project
This project demonstrates how to use AWS KMS (Key Management Service) to encrypt and decrypt messages using C++20.
## Prerequisites
- C++20 compatible compiler (GCC 10+, Clang 10+, or MSVC 19.27+)
- CMake 3.16 or higher
- AWS SDK for C++ installed
- AWS credentials configured
## Building the Project
1. Create a build directory:
```bash
mkdir build && cd build
```
2. Configure with CMake:
```bash
cmake ..
```
3. Build the project:
```bash
cmake --build .
```
## Running the Application
Before running the application, make sure to:
1. Configure your AWS credentials (using `aws configure` or environment variables)
2. Have a valid KMS key ID or ARN ready for encryption operations
Then run the application with one of the following options:
```bash
# To encrypt a message (key ID required)
./aws_kms_crypto --encrypt "Your secret message" --key "YOUR_KMS_KEY_ID"
# To decrypt a ciphertext (in hex format, key ID optional)
./aws_kms_crypto --decrypt "0123456789abcdef..."
# You can also specify the key ID for decryption (optional)
./aws_kms_crypto --decrypt "0123456789abcdef..." --key "YOUR_KMS_KEY_ID"
# For help and usage information
./aws_kms_crypto --help
```
You can also use the short form of the options:
```bash
./aws_kms_crypto -e "Your secret message" -k "YOUR_KMS_KEY_ID"
./aws_kms_crypto -d "0123456789abcdef..."
./aws_kms_crypto -h
```
## Project Structure
- `CMakeLists.txt` - CMake build configuration
- `src/main.cpp` - Main application code with KMS encryption/decryption logic
## AWS SDK Installation
If you haven't installed the AWS SDK for C++ yet, follow these steps to build it statically:
```bash
git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
mkdir build-aws-sdk && cd build-aws-sdk
cmake ../aws-sdk-cpp -DCMAKE_BUILD_TYPE=Release \
-DBUILD_ONLY=kms \
-DENABLE_UNITY_BUILD=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCUSTOM_MEMORY_MANAGEMENT=OFF \
-DCMAKE_INSTALL_PREFIX:PATH=/tmp/aws-sdk
cmake --build . -j 8
sudo cmake --install .
```
## AWS Credentials
Make sure your AWS credentials are properly configured with permissions to use KMS. You can configure credentials using:
```bash
aws configure
```
Or by setting environment variables:
```bash
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="your_region"
```