code review
This commit is contained in:
parent
fd3dddf2ed
commit
719aaca022
10 changed files with 117 additions and 68 deletions
36
lib/src/nostr_event.dart
Normal file
36
lib/src/nostr_event.dart
Normal 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,
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue