LCOV - code coverage report
Current view: top level - crypto/tron/entities - tron_address.dart (source / functions) Coverage Total Hit
Test: lcov.info Lines: 96.6 % 29 28
Test Date: 2025-04-01 01:23:07 Functions: - 0 0

            Line data    Source code
       1              : import 'dart:typed_data';
       2              : import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
       3              : import 'package:walletkit_dart/src/crypto/utxo/utils/ecurve.dart';
       4              : import 'package:walletkit_dart/src/utils/base58.dart';
       5              : import 'package:walletkit_dart/src/utils/keccak.dart';
       6              : import 'package:walletkit_dart/walletkit_dart.dart';
       7              : 
       8              : extension BIP32Extension on BipNode {
       9            3 :   Uint8List get publicKeyUncompressed {
      10            3 :     if (privateKey == null) {
      11            0 :       throw UnsupportedError("privateKey is null");
      12              :     }
      13            6 :     return pointFromScalar(privateKey!, false)!;
      14              :   }
      15              : }
      16              : 
      17            1 : String uncompressedPublicKeyToAddress(Uint8List publicKey, int prefix) {
      18            1 :   final addressInput = publicKey.sublist(1);
      19            1 :   final publicKeyHash = keccak256(addressInput);
      20            1 :   final addressBuffer = publicKeyHash.sublist(12);
      21            1 :   final addressBase58 = base58CheckEncode(prefix, addressBuffer);
      22              :   return addressBase58;
      23              : }
      24              : 
      25            1 : AddressError? validateTronAddress({required String address}) {
      26            4 :   if (address.trim().length != address.length) return AddressError.WHITESPACE;
      27              : 
      28            2 :   if (address.length != 34) return AddressError.INVALID;
      29            1 :   if (!address.startsWith("T")) return AddressError.INVALID;
      30              : 
      31              :   try {
      32            1 :     final bytes = base58CheckDecodeWithVersion(address);
      33            2 :     if (bytes.length != 21) return AddressError.INVALID;
      34              :     return null;
      35              :   } catch (e) {
      36              :     return AddressError.INVALID_CHECKSUM;
      37              :   }
      38              : }
      39              : 
      40            2 : String base58ToEVM(String base58, [bool withPrefix = true]) {
      41            2 :   final bytes = base58CheckDecode(base58);
      42            6 :   return "${withPrefix ? "0x" : ""}${bytes.toHex.toLowerCase()}";
      43              : }
      44              : 
      45            1 : String base58FromEVM(String evmAddress) {
      46            1 :   final bytes = evmAddress.hexToBytesWithPrefix;
      47            1 :   return base58CheckEncode(TRON_ADDRESS_PREFIX, bytes);
      48              : }
      49              : 
      50              : // String base58CheckToHex(String base58) {
      51              : //   final bytes = base58CheckDecode(base58);
      52              : 
      53              : //   return bytes.sublist(0, bytes.length - 4).toHex;
      54              : // }
      55              : 
      56            3 : Uint8List base58ToHex(String base58) {
      57            3 :   final bytes = base58Decode(base58);
      58              : 
      59              :   return bytes;
      60              : }
      61              : 
      62            3 : String base58CheckFromHex(Uint8List input) {
      63            3 :   final hash0 = sha256Hash(input);
      64            3 :   final hash1 = sha256Hash(hash0);
      65              : 
      66            3 :   final checksum = hash1.sublist(0, 4);
      67            9 :   final bytesWithChecksum = Uint8List.fromList([...input, ...checksum]);
      68              : 
      69            3 :   return base58Encode(bytesWithChecksum);
      70              : }
        

Generated by: LCOV version 2.0-1