Skip to main content

Function Signature

Future<String> rawSign({
  required String chainId,
  required String message,
  String? signatureApprovalMemo,
})

Description

Signs a raw message without adding any prefix. Unlike signMessage, this does not prepend the Ethereum message prefix. Use this for signing raw data or for chains that don’t use Ethereum’s message prefix.

Parameters

ParameterTypeRequiredDescription
chainIdStringYesThe chain ID in CAIP-2 format
messageStringYesThe message to sign (must be hex-encoded)
signatureApprovalMemoStringNoOptional memo for signature approval

Returns

String - The signature as a hex string.

Example

import 'package:portal_flutter/portal_flutter.dart';

final portal = Portal();

// Message must be hex-encoded
// "test" in hex is "74657374"
final signature = await portal.rawSign(
  chainId: 'eip155:1',
  message: '74657374',
  signatureApprovalMemo: 'Signing test message',
);

print('Raw signature: $signature');

Chain-Specific Signing

The curve used for signing depends on the chain ID:
Chain TypeCurve
eip155:*SECP256K1
solana:*ED25519
// SECP256K1 signing (Ethereum)
final ethSignature = await portal.rawSign(
  chainId: 'eip155:1',
  message: '74657374',
);

// ED25519 signing (Solana)
final solSignature = await portal.rawSign(
  chainId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
  message: '74657374',
);

Errors

CodeDescription
NOT_INITIALIZEDPortal was not initialized
SIGNING_FAILEDThe signing operation failed
INVALID_HEXThe message is not valid hex