SHA256
30 12 25
Ну типо переделал Всё под короткую таблицу солана юзерс, но теперь не надо поправить баги
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package shine.db.entities;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* Агрегатная сущность текущего состояния блокчейна.
|
||||
@@ -11,7 +12,9 @@ public final class BlockchainStateEntry {
|
||||
private String blockchainName;
|
||||
|
||||
private String login;
|
||||
private String publicKeyBase64;
|
||||
|
||||
/** Ключ блокчейна (pubkey), которым подписываются блоки. Base64(32 bytes). */
|
||||
private String blockchainKey;
|
||||
|
||||
/** Лимит (теперь long). */
|
||||
private long sizeLimit;
|
||||
@@ -36,7 +39,7 @@ public final class BlockchainStateEntry {
|
||||
|
||||
public BlockchainStateEntry(String blockchainName,
|
||||
String login,
|
||||
String publicKeyBase64,
|
||||
String blockchainKey,
|
||||
long sizeLimit,
|
||||
long fileSizeBytes,
|
||||
int lastGlobalNumber,
|
||||
@@ -46,7 +49,7 @@ public final class BlockchainStateEntry {
|
||||
long updatedAtMs) {
|
||||
this.blockchainName = blockchainName;
|
||||
this.login = login;
|
||||
this.publicKeyBase64 = publicKeyBase64;
|
||||
this.blockchainKey = blockchainKey;
|
||||
this.sizeLimit = sizeLimit;
|
||||
this.fileSizeBytes = fileSizeBytes;
|
||||
this.lastGlobalNumber = lastGlobalNumber;
|
||||
@@ -72,8 +75,21 @@ public final class BlockchainStateEntry {
|
||||
public String getLogin() { return login; }
|
||||
public void setLogin(String login) { this.login = login; }
|
||||
|
||||
public String getPublicKeyBase64() { return publicKeyBase64; }
|
||||
public void setPublicKeyBase64(String publicKeyBase64) { this.publicKeyBase64 = publicKeyBase64; }
|
||||
public String getBlockchainKey() { return blockchainKey; }
|
||||
public void setBlockchainKey(String blockchainKey) { this.blockchainKey = blockchainKey; }
|
||||
|
||||
/** blockchainKey в байтах (32) или null, если битый. */
|
||||
public byte[] getBlockchainKeyBytes() {
|
||||
if (blockchainKey == null) return null;
|
||||
String s = blockchainKey.trim();
|
||||
if (s.isEmpty()) return null;
|
||||
try {
|
||||
byte[] b = Base64.getDecoder().decode(s);
|
||||
return (b != null && b.length == 32) ? b : null;
|
||||
} catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public long getSizeLimit() { return sizeLimit; }
|
||||
public void setSizeLimit(long sizeLimit) { this.sizeLimit = sizeLimit; }
|
||||
|
||||
@@ -15,52 +15,32 @@ import java.util.Base64;
|
||||
public class SolanaUserEntry {
|
||||
|
||||
private String login; // TEXT PK
|
||||
private String bchName; // TEXT NOT NULL
|
||||
private String loginKey; // TEXT
|
||||
private String deviceKey; // TEXT
|
||||
private Integer bchLimit; // INTEGER nullable
|
||||
private String deviceKey; // TEXT NOT NULL (Base64(32 bytes))
|
||||
|
||||
public SolanaUserEntry() {}
|
||||
|
||||
public SolanaUserEntry(String login,
|
||||
String bchName,
|
||||
String loginKey,
|
||||
String deviceKey,
|
||||
Integer bchLimit) {
|
||||
public SolanaUserEntry(String login, String deviceKey) {
|
||||
this.login = login;
|
||||
this.bchName = bchName;
|
||||
this.loginKey = loginKey;
|
||||
this.deviceKey = deviceKey;
|
||||
this.bchLimit = bchLimit;
|
||||
}
|
||||
|
||||
public String getLogin() { return login; }
|
||||
public void setLogin(String login) { this.login = login; }
|
||||
|
||||
public String getBchName() { return bchName; }
|
||||
public void setBchName(String bchName) { this.bchName = bchName; }
|
||||
|
||||
/** Публичный ключ логина (основной ключ пользователя). */
|
||||
public String getLoginKey() { return loginKey; }
|
||||
public void setLoginKey(String loginKey) { this.loginKey = loginKey; }
|
||||
|
||||
/** Публичный ключ устройства (device key). */
|
||||
public String getDeviceKey() { return deviceKey; }
|
||||
public void setDeviceKey(String deviceKey) { this.deviceKey = deviceKey; }
|
||||
|
||||
public Integer getBchLimit() { return bchLimit; }
|
||||
public void setBchLimit(Integer bchLimit) { this.bchLimit = bchLimit; }
|
||||
|
||||
/**
|
||||
* Публичный ключ логина в байтах (32 байта) или null, если ключ битый/пустой.
|
||||
* Device key в байтах (32 байта) или null, если ключ битый/пустой.
|
||||
*
|
||||
* Поддержка форматов:
|
||||
* - Base64 (предпочтительно)
|
||||
* - HEX (ровно 64 hex-символа, без пробелов)
|
||||
*/
|
||||
public byte[] getLoginKeyByte() {
|
||||
if (loginKey == null) return null;
|
||||
String s = loginKey.trim();
|
||||
public byte[] getDeviceKeyByte() {
|
||||
if (deviceKey == null) return null;
|
||||
String s = deviceKey.trim();
|
||||
if (s.isEmpty()) return null;
|
||||
|
||||
// 1) пробуем Base64
|
||||
|
||||
Reference in New Issue
Block a user