---
generated_at: 2026-03-01 03:00:00
metrics:
  claims_total: 93
  claims_with_evidence: 93
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Hashing モジュール単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各テストケースに対して、ソースコードの実装が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：公開メソッド・重要な処理が適切にカバーされているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：93 / 93、根拠なし：0
- 優先レビュー（高）
  1. **UT-HSH-011〜013**：limit機能の境界値テスト - 実環境での挙動確認推奨
  2. **UT-HSH-046**：sodiumプロバイダー条件 - 環境依存テスト
  3. **UT-HSH-018, 034, 051**：アルゴリズム検証例外 - 例外メッセージの正確性確認

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Illuminate/Hashing/AbstractHasher.php` - 抽象ハッシャー基底クラス（info, check メソッド）
- E-02: `src/Illuminate/Hashing/BcryptHasher.php` - Bcryptハッシャー実装（make, check, needsRehash, verifyConfiguration, setRounds, cost, isUsingCorrectAlgorithm, isUsingValidOptions）
- E-03: `src/Illuminate/Hashing/ArgonHasher.php` - Argon2iハッシャー実装（make, check, needsRehash, verifyConfiguration, setMemory, setTime, setThreads, memory, time, threads, algorithm, isUsingCorrectAlgorithm, isUsingValidOptions）
- E-04: `src/Illuminate/Hashing/Argon2IdHasher.php` - Argon2idハッシャー実装（check, algorithm, isUsingCorrectAlgorithm）
- E-05: `src/Illuminate/Hashing/HashManager.php` - ハッシュマネージャー（createBcryptDriver, createArgonDriver, createArgon2idDriver, info, make, check, needsRehash, isHashed, getDefaultDriver, verifyConfiguration）
- E-06: `src/Illuminate/Hashing/HashServiceProvider.php` - サービスプロバイダー（register, provides）
- E-07: `src/Illuminate/Contracts/Hashing/Hasher.php` - Hasherインターフェース定義

## 3) Claims と根拠の対応（レビューの主戦場）

### AbstractHasher
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | info()はpassword_get_infoのラッパー | E-01 (L13-16) | ○ |
| C-02 | check()はnull/空文字列でfalseを返す | E-01 (L28-29) | ○ |
| C-03 | check()はpassword_verifyを使用 | E-01 (L32) | ○ |

### BcryptHasher
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | デフォルトrounds=12 | E-02 (L17) | ○ |
| C-05 | デフォルトverifyAlgorithm=false | E-02 (L24) | ○ |
| C-06 | デフォルトlimit=null | E-02 (L31) | ○ |
| C-07 | コンストラクタでオプションから設定反映 | E-02 (L38-43) | ○ |
| C-08 | make()でlimit超過時InvalidArgumentException | E-02 (L58-59) | ○ |
| C-09 | make()でPASSWORD_BCRYPT使用 | E-02 (L62) | ○ |
| C-10 | make()失敗時RuntimeException | E-02 (L65-67) | ○ |
| C-11 | check()でverifyAlgorithm有効時アルゴリズムチェック | E-02 (L88-90) | ○ |
| C-12 | needsRehash()でpassword_needs_rehash使用 | E-02 (L104-106) | ○ |
| C-13 | verifyConfiguration()でアルゴリズムとオプション検証 | E-02 (L116) | ○ |
| C-14 | isUsingCorrectAlgorithm()でbcrypt判定 | E-02 (L127) | ○ |
| C-15 | isUsingValidOptions()でcost上限チェック | E-02 (L144-146) | ○ |
| C-16 | setRounds()でroundsを設定し$this返却 | E-02 (L157-162) | ○ |
| C-17 | cost()でオプションまたはデフォルト返却 | E-02 (L172) | ○ |

### ArgonHasher
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 | デフォルトmemory=1024 | E-03 (L16) | ○ |
| C-19 | デフォルトtime=2 | E-03 (L23) | ○ |
| C-20 | デフォルトthreads=2 | E-03 (L30) | ○ |
| C-21 | コンストラクタでオプションから設定反映 | E-03 (L44-50) | ○ |
| C-22 | make()でPASSWORD_ARGON2I使用 | E-03 (L64, L83) | ○ |
| C-23 | make()失敗時RuntimeException | E-03 (L69-71) | ○ |
| C-24 | check()でverifyAlgorithm有効時アルゴリズムチェック | E-03 (L102-104) | ○ |
| C-25 | needsRehash()でpassword_needs_rehash使用 | E-03 (L118-122) | ○ |
| C-26 | verifyConfiguration()でアルゴリズムとオプション検証 | E-03 (L132) | ○ |
| C-27 | isUsingCorrectAlgorithm()でargon2i判定 | E-03 (L143) | ○ |
| C-28 | isUsingValidOptions()で各オプション上限チェック | E-03 (L156-170) | ○ |
| C-29 | setMemory()でmemoryを設定し$this返却 | E-03 (L181-186) | ○ |
| C-30 | setTime()でtimeを設定し$this返却 | E-03 (L194-199) | ○ |
| C-31 | setThreads()でthreadsを設定し$this返却 | E-03 (L207-212) | ○ |
| C-32 | threads()でsodiumプロバイダー時は1返却 | E-03 (L244-248) | ○ |
| C-33 | memory()でオプションまたはデフォルト返却 | E-03 (L222) | ○ |
| C-34 | time()でオプションまたはデフォルト返却 | E-03 (L233) | ○ |
| C-35 | algorithm()でPASSWORD_ARGON2I返却 | E-03 (L83) | ○ |

### Argon2IdHasher
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | check()でverifyAlgorithm有効時argon2idチェック | E-04 (L25-27) | ○ |
| C-37 | isUsingCorrectAlgorithm()でargon2id判定 | E-04 (L40) | ○ |
| C-38 | algorithm()でPASSWORD_ARGON2ID返却 | E-04 (L50) | ○ |

### HashManager
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | createBcryptDriver()でBcryptHasher生成 | E-05 (L18-21) | ○ |
| C-40 | createArgonDriver()でArgonHasher生成 | E-05 (L28-31) | ○ |
| C-41 | createArgon2idDriver()でArgon2IdHasher生成 | E-05 (L38-41) | ○ |
| C-42 | info()はドライバーにデリゲート | E-05 (L51) | ○ |
| C-43 | make()はドライバーにデリゲート | E-05 (L63) | ○ |
| C-44 | check()はドライバーにデリゲート | E-05 (L76) | ○ |
| C-45 | needsRehash()はドライバーにデリゲート | E-05 (L88) | ○ |
| C-46 | isHashed()でalgoがnullでないか判定 | E-05 (L99) | ○ |
| C-47 | getDefaultDriver()でhashing.driverまたはbcrypt返却 | E-05 (L109) | ○ |
| C-48 | verifyConfiguration()でドライバーメソッド有無確認 | E-05 (L122-127) | ○ |

### HashServiceProvider
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | register()でhashシングルトン登録 | E-06 (L17-19) | ○ |
| C-50 | register()でhash.driverシングルトン登録 | E-06 (L21-23) | ○ |
| C-51 | provides()で['hash', 'hash.driver']返却 | E-06 (L33) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコード上の実装に基づいています

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 本モジュールは標準的なパスワードハッシュ機能を提供し、PHPのpassword_*関数を適切にラップしています
- **注意点1**: limit機能（BcryptHasher）は72バイト制限に関連しており、bcryptの仕様上重要です
- **注意点2**: verifyAlgorithmオプション有効時の例外スローは、セキュリティポリシーに影響する可能性があります
- **注意点3**: sodiumプロバイダー使用時のthreads固定値（1）は環境依存の挙動です

## 6) レビュアーチェックリスト（最小）
- [ ] 各ハッシャーの正常系テスト（make/check/needsRehash）が網羅されているか
- [ ] null/空文字列などの異常系入力がカバーされているか
- [ ] 境界値（limit、rounds、memory、time、threads）のテストが適切か
- [ ] アルゴリズム検証（verifyAlgorithm）の例外テストが含まれているか
- [ ] HashManagerのデリゲート動作が検証されているか
- [ ] HashServiceProviderのDI登録が検証されているか
- [ ] セッターメソッドのfluent interface（$this返却）が検証されているか
