データ暗号化・復号モジュールの内部ヘッダー。
プラットフォームごとに異なる暗号 API を共通インターフェースで抽象化します。
| OS | 使用ライブラリ | アルゴリズム |
|---|---|---|
| Linux | OpenSSL (libcrypto) EVP_aes_256_gcm() / EVP_sha256() | AES-256-GCM / SHA-256 |
| Windows | CNG (BCrypt) BCRYPT_AES_ALGORITHM / BCRYPT_SHA256_ALGORITHM | AES-256-GCM / SHA-256 |
暗号化ペイロードのフォーマット:
[暗号文: src_len バイト] [GCM 認証タグ: POTR_CRYPTO_TAG_SIZE バイト]ノンス構成 (12 バイト):
[session_id: 4B NBO] [seq_num: 4B NBO] [padding: 4B 0x00]追加認証データ (AAD): PotrPacket ヘッダー 32 バイト (NBO ワイヤーフォーマット)。 ヘッダーの改ざんも認証タグで検知される。
c-modernization-kit sample team
1.0.0
2026/03/12
Copyright (C) CompanyName, Ltd. 2026. All rights reserved.
int potr_encrypt ( uint8_t *dst, size_t *dst_len, const uint8_t *src, size_t src_len, const uint8_t *key, const uint8_t *nonce, const uint8_t *aad, size_t aad_len )AES-256-GCM でデータを暗号化します。
成功時は 0、失敗時は -1 を返します。
int potr_decrypt ( uint8_t *dst, size_t *dst_len, const uint8_t *src, size_t src_len, const uint8_t *key, const uint8_t *nonce, const uint8_t *aad, size_t aad_len )AES-256-GCM でデータを復号し、認証タグを検証します。
成功 (認証タグ検証 OK) 時は 0、失敗 (認証タグ不一致含む) 時は -1 を返します。
int potr_passphrase_to_key ( uint8_t *key, const uint8_t *passphrase, size_t passphrase_len )任意のパスフレーズを SHA-256 ハッシュにより AES-256 鍵に変換します。
設定ファイルの encrypt_key に 64 文字 hex 以外の文字列が指定された場合に使用します。
入力バイト列の SHA-256 ダイジェストをそのまま鍵として使用します。
送受信の双方で同一のパスフレーズを指定すれば、同一の鍵が導出されます。
成功時は 0、失敗時は -1 を返します。