km
a8d28882c7
Add ESP32 support with 128-bit arithmetic emulation
...
- Detect ESP32 platform using ESP_PLATFORM and __XTENSA__ macros
- Implement 128-bit multiplication and addition using 64-bit arithmetic
- Wrap fe_mul(), fe_sq(), and fe_mul_small() with ESP32-specific code paths
- Standard platforms use native unsigned __int128 (faster)
- ESP32 uses 128-bit emulation (compatible with 32-bit architecture)
2026-03-28 07:40:38 +09:00
km
f6298c7725
test: Fix RFC7748 test vector 1 point and expected values
2026-03-28 07:18:16 +09:00
km
9d0af4d65a
X25519: Rewrite using 5×51-bit limbs with 128-bit accumulators for RFC7748 compliance
2026-03-28 06:24:19 +09:00
km
c31809f37d
X25519 実装:fe_sub 修正(負の値の正規化追加)
...
修正内容:
- fe_sub: 負の値を正しく正規化
- 各係数が負の場合、適切な値を足し引き
現状:
- 0xffff がまだ出力される可能性あり
- 完全な修正にはさらなるデバッグが必要
2026-03-27 06:26:56 +09:00
km
c61433d75b
X25519 実装:fe_add/fe_sub 修正(進行中)
...
修正内容:
- fe_add: キャリー処理追加
- fe_sub: バロー処理追加
現状:
- 0xffff がまだ出力される
- field 演算の完全な修正が必要
次のステップ:
- RFC 7748 参照実装(ref10)の fe_add/fe_sub をそのまま使用
- または、Python の整数演算を直接使う実装に書き直す
2026-03-27 06:16:13 +09:00
km
d4085b2073
X25519 実装:A24 定数追加(進行中)
...
現状:
- 初期化は Python と一致
- A24 定数追加
- しかし出力がまだ RFC テストベクトルと一致しない
次のステップ:
- Montgomery ladder の各ステップをデバッグ出力
- Python と C の中間値を比較
2026-03-27 06:03:12 +09:00
km
bd762864e6
X25519 実装:Python 検証済みロジックへ移行(進行中)
...
Python 実装で RFC 7748 テストベクトルが成功確認済み。
Python 成功確認:
- Montgomery ladder のループ内で条件付き交換を正しく処理
- 各演算が正しい順序で実行
C 実装の課題:
- A24 定数(121665)の扱い
- fe_mul の使用箇所が複数あり混乱
- 変数の使い回しによるバグ
次のステップ:
- Python のコードを 1 行ずつ C に翻訳
- 各変数の値をデバッグ出力して検証
2026-03-27 05:55:55 +09:00
km
f23542f06c
X25519 実装:fe_tobytes 修正(進行中)
...
修正内容:
- fe_tobytes の出力サイズを 32 バイトに修正
- RFC 7748 テストベクトルを正解に更新
現状:
- 出力に 0xffff が混入 → 負の値の扱いに問題
- fe_sub や fe_mul の実装確認必要
次のステップ:
- RFC 7748 参照実装 (ref10) との完全な比較
- 各 field 演算のステップバイステップ検証
2026-03-27 05:20:31 +09:00
km
2d0f7959d0
X25519 ソフトウェア実装:RFC 7748 修正(進行中)
...
修正内容:
- Montgomery ladder ループ内の計算順序整理
- 変数使用の明確化
現状:
- テスト 7, 8, 9 が失敗
- 期待値:e6db6867583230db35840c006987b4d425b83e243b7b177f2a281d8d02548303
- 計算値:b84fffff4b94ffff552dffff5dc7ffffd40affff0959701d3e5affffa9326429
次のステップ:
- RFC 7748 参照実装との詳細な比較
- field operation の個別テスト
- Montgomery ladder のステップごとの検証
2026-03-26 21:57:45 +09:00
km
fb51a4ad9f
ESP32 向け 32 ビット最適化 fe_mul()/fe_sq() 追加
...
ESP32 (32-bit Xtensa/RISC-V) 向け最適化:
検出マクロ:
- ESP_PLATFORM, __XTENSA__, __riscv で自動検出
- SE050_X25519_ESP32 マクロ定義
最適化内容:
- fe_mul(): 32 ビット演算優先バージョン
- fe_sq(): 32 ビット演算優先バージョン
- uint32_t 中間変数使用
- 64 ビット積を最小限に抑える
ビルド:
- ESP32: 32 ビット最適化版が自動選択
- 標準 (x86_64): 64 ビット版を使用
注:RFC 7748 テストベクトル検証中(実装修正必要)
2026-03-26 16:23:02 +09:00
km
d34fed2048
X25519 ソフトウェア実装のテストスイート統合
...
新規ヘッダー:include/se050_x25519_sw.h
- WireGuard Ephemeral キー計算用 API 定義
- se050_x25519_sw_generate_keypair() - キーペア生成
- se050_x25519_sw_compute_shared_secret() - 共有秘密計算
- se050_x25519_sw_derive_public_key() - 公開鍵派生
- se050_x25519_sw_clamp() - 秘密鍵クランプ
- se050_x25519_sw_zeroize() - キー消去
ソース修正:src/se050_x25519_sw.c
- main() 関数をテストスイートに統合
- 独立した API 関数として再構成
- X25519_SW_TEST マクロでテストビルド可能
テスト追加:tests/test_x25519_ecdh.c
- テスト 7: ソフトウェアキーペア生成
- テスト 8: ECDH 対称性検証
- テスト 9: 公開鍵派生
- テスト 10: キーゼロ化
Makefile 更新:
- test_x25519_sw タスク追加
- make test で全テスト実行
注:RFC 7748 テストベクトル検証中(実装修正必要)
2026-03-26 16:12:55 +09:00
km
feb99ffe4e
ソフトウェア X25519 ECDH 実装の追加
...
新規ファイル:src/se050_x25519_sw.c
実装内容:
- 純粋なソフトウェア実装(RFC 7748 準拠)
- 10 係数のフィールド演算(radix 2^25.5)
- 加算、減算、乗算、二乗、逆元計算
- Montgomery ラダーによるスカラー乗算
- memzero_explicit、crypto_memneq 使用
API:
- se050_x25519_compute_shared_secret_sw()
テスト:
- X25519_TEST マクロでテストビルド可能
- RFC 7748 テストベクトル含む
注:RFC 7748 テストベクトル検証中(現在実装修正中)
2026-03-26 15:58:10 +09:00