public static byte[] SignCompact(byte[] messageHash, byte[] privateKey, out int recoveryId) { byte[] recoverableSignature = new byte[65]; recoveryId = 0; if (Platform == OsPlatform.Windows ? !Win64Lib.secp256k1_ecdsa_sign_recoverable(Context, recoverableSignature, messageHash, privateKey, IntPtr.Zero, IntPtr.Zero) : !(Platform == OsPlatform.Linux ? PosixLib.secp256k1_ecdsa_sign_recoverable(Context, recoverableSignature, messageHash, privateKey, IntPtr.Zero, IntPtr.Zero) : MacLib.secp256k1_ecdsa_sign_recoverable(Context, recoverableSignature, messageHash, privateKey, IntPtr.Zero, IntPtr.Zero))) { return(null); } byte[] compactSignature = new byte[64]; if (Platform == OsPlatform.Windows ? !Win64Lib.secp256k1_ecdsa_recoverable_signature_serialize_compact(Context, compactSignature, out recoveryId, recoverableSignature) : !(Platform == OsPlatform.Linux ? PosixLib.secp256k1_ecdsa_recoverable_signature_serialize_compact(Context, compactSignature, out recoveryId, recoverableSignature) : MacLib.secp256k1_ecdsa_recoverable_signature_serialize_compact(Context, compactSignature, out recoveryId, recoverableSignature))) { return(null); } return(compactSignature); }