Дорабатываю добавление блоков!
This commit is contained in:
AidarKC
2025-12-23 15:48:23 +03:00
parent d949895fec
commit 62e4338e88
6 changed files with 333 additions and 217 deletions
@@ -1,5 +1,7 @@
package shine.db.entities;
import java.util.Base64;
/**
* Локальная копия пользователя из Solana.
*
@@ -18,8 +20,7 @@ public class SolanaUserEntry {
private String deviceKey; // TEXT
private Integer bchLimit; // INTEGER nullable
public SolanaUserEntry() {
}
public SolanaUserEntry() {}
public SolanaUserEntry(String login,
String bchName,
@@ -49,4 +50,36 @@ public class SolanaUserEntry {
public Integer getBchLimit() { return bchLimit; }
public void setBchLimit(Integer bchLimit) { this.bchLimit = bchLimit; }
/**
* Публичный ключ логина в байтах (32 байта) или null, если ключ битый/пустой.
*
* Поддержка форматов:
* - Base64 (предпочтительно)
* - HEX (ровно 64 hex-символа, без пробелов)
*/
public byte[] getLoginKeyByte() {
if (loginKey == null) return null;
String s = loginKey.trim();
if (s.isEmpty()) return null;
// 1) пробуем Base64
try {
byte[] b = Base64.getDecoder().decode(s);
if (b != null && b.length == 32) return b;
} catch (IllegalArgumentException ignore) {}
// 2) пробуем HEX (64 символа)
if (s.length() == 64 && s.matches("^[0-9a-fA-F]+$")) {
byte[] out = new byte[32];
for (int i = 0; i < 32; i++) {
int hi = Character.digit(s.charAt(i * 2), 16);
int lo = Character.digit(s.charAt(i * 2 + 1), 16);
out[i] = (byte) ((hi << 4) | lo);
}
return out;
}
return null;
}
}