buildSignMessageUri method

Uri buildSignMessageUri({
  1. required String message,
  2. Uint8List? nonce,
})

Generates an URL with given nonce to be signed by Phantom Wallet If nonce is not passed it will generate one

Implementation

Uri buildSignMessageUri({required String message, Uint8List? nonce}) {
  final requestNonce = nonce ?? _core.crypto.getUtils().randomBytes(24);

  /// Hash the nonce so that it is not exposed to the user
  final hashedNonce = SHA256Digest().process(requestNonce);
  final hashedMessage = '$message\n\nNonce: ${base58.encode(hashedNonce)}';
  final payload = {
    'session': _sessionToken,
    'message': _isBase58String(message)
        ? message
        : base58.encode(
            Uint8List.fromList(hashedMessage.codeUnits),
          ),
  };
  final encryptedPayload = encryptPayload(payload, requestNonce);

  return Uri(
    scheme: _scheme,
    host: _host,
    path: 'ul/v1/signMessage',
    queryParameters: {
      'redirect_link': '$_redirectLink?phantomRequest=signMessage',
      'dapp_encryption_public_key': dappPublicKey,
      'nonce': base58.encode(requestNonce),
      'payload': base58.encode(encryptedPayload!),
    },
  );
}