# utils.crypto

Пакет отвечает за криптографию — подписи и хэши блоков.  
Используется при создании и проверке целостности `.bch`-блоков.

---

## Классы

### **Ed25519Util**
Работает с подписями Ed25519.  
Методы:
- `generatePrivateKey()` — создать приватный ключ (32 байта)
- `generatePrivateKeyFromString(String)` — детерминированный ключ из строки
- `derivePublicKey(byte[32])` — получить публичный ключ (32 байта)
- `sign(byte[], byte[32])` — подписать данные (64-байтная подпись)
- `verify(byte[], byte[64], byte[32])` — проверить подпись

### **HashUtil**
Вычисляет SHA-256.  
Методы:
- `sha256(byte[])` → `[32]` — вернуть хэш массива
- `Sha256` — вложенный класс для пошагового хэширования

### **BchCryptoVerifier**
Проверяет подпись и хэш блока перед записью в блокчейн.  
Методы:
- `verifyAll(userLogin, blockchainId, prevHash32, rawBytes, signature64, hash32, publicKey32)`  
  → `true/false` — корректна ли подпись и хэш
- `buildPreimage(...)` — собирает байты, которые подписываются:
