@tmawallet/sdk
Version:
TMA Wallet SDK
63 lines • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClientBundleController = void 0;
const randomBytes_1 = require("../utils/randomBytes");
const hexToUint8Array_1 = require("../utils/hexToUint8Array");
const uint8ArrayToHex_1 = require("../utils/uint8ArrayToHex");
class ClientBundleController {
storage;
constructor(storage) {
this.storage = storage;
//
}
async getClientBundle() {
const values = await this.storage.getItems([
'tmaw_registered_at',
'tmaw_client_public_key',
'tmaw_client_secret_key',
]);
if (!values || typeof values !== 'object') {
return null;
}
const { tmaw_registered_at, tmaw_client_public_key, tmaw_client_secret_key } = values;
if (typeof tmaw_registered_at !== 'string' ||
typeof tmaw_client_public_key !== 'string' ||
typeof tmaw_client_secret_key !== 'string') {
return null;
}
if (tmaw_client_public_key.length !== 64 || tmaw_client_secret_key.length !== 64) {
return null;
}
const timestamp = Number(tmaw_registered_at);
if (isNaN(timestamp) || timestamp <= 0) {
return null;
}
return {
timestamp,
clientPublicKey: (0, hexToUint8Array_1.hexToUint8Array)(tmaw_client_public_key),
clientSecretKey: (0, hexToUint8Array_1.hexToUint8Array)(tmaw_client_secret_key),
};
}
async createNewBundle() {
const clientPublicKey = (0, randomBytes_1.randomBytes)(32);
const clientSecretKey = (0, randomBytes_1.randomBytes)(32);
const clientPublicKeyHex = (0, uint8ArrayToHex_1.uint8ArrayToHex)(clientPublicKey);
const clientSecretKeyHex = (0, uint8ArrayToHex_1.uint8ArrayToHex)(clientSecretKey);
const timestamp = Date.now();
await this.storage.setItems({
tmaw_registered_at: timestamp.toString(),
tmaw_client_public_key: clientPublicKeyHex,
tmaw_client_secret_key: clientSecretKeyHex,
});
return {
timestamp,
clientPublicKey,
clientSecretKey,
};
}
async clearClientBundle() {
await this.storage.removeItems(['tmaw_registered_at', 'tmaw_client_public_key', 'tmaw_client_secret_key']);
}
}
exports.ClientBundleController = ClientBundleController;
//# sourceMappingURL=ClientBundleController.js.map