code review

This commit is contained in:
randogoth 2026-06-10 11:20:20 +03:00
parent fd3dddf2ed
commit 719aaca022
10 changed files with 117 additions and 68 deletions

36
lib/src/nostr_event.dart Normal file
View file

@ -0,0 +1,36 @@
import 'dart:convert';
import 'dart:math';
import 'package:bip340/bip340.dart' as bip340;
import 'package:crypto/crypto.dart';
String signNostrEvent({
required String privateKey,
required String publicKey,
required int kind,
required List<List<String>> tags,
required String content,
int? createdAt,
}) {
final ts = createdAt ?? DateTime.now().millisecondsSinceEpoch ~/ 1000;
final ser = jsonEncode([0, publicKey, ts, kind, tags, content]);
final idBytes = sha256.convert(utf8.encode(ser)).bytes;
final id = idBytes.map((b) => b.toRadixString(16).padLeft(2, '0')).join();
final rng = Random.secure();
final aux = List.generate(32, (_) => rng.nextInt(256))
.map((b) => b.toRadixString(16).padLeft(2, '0'))
.join();
final sig = bip340.sign(privateKey, id, aux);
return jsonEncode({
'id': id,
'pubkey': publicKey,
'created_at': ts,
'kind': kind,
'tags': tags,
'content': content,
'sig': sig,
});
}