47 lines
1.3 KiB
Dart
47 lines
1.3 KiB
Dart
import 'dart:math';
|
|
import 'dart:typed_data';
|
|
import 'package:argon2/argon2.dart';
|
|
import 'dart:io';
|
|
import 'package:postgres/postgres.dart';
|
|
|
|
String username = 'admin';
|
|
String password = 'password';
|
|
|
|
var r = Random.secure();
|
|
String randomSalt = String.fromCharCodes(List.generate(32, (index) => r.nextInt(33) + 89));
|
|
final salt = randomSalt.toBytesLatin1();
|
|
|
|
var parameters = Argon2Parameters(
|
|
Argon2Parameters.ARGON2_i,
|
|
salt,
|
|
version: Argon2Parameters.ARGON2_VERSION_10,
|
|
iterations: 2,
|
|
memoryPowerOf2: 16,
|
|
);
|
|
|
|
final postgres = PostgreSQLConnection(
|
|
Platform.environment['JOBLINK_POSTGRES_ADDRESS']!,
|
|
int.parse(Platform.environment['JOBLINK_POSTGRES_PORT']!),
|
|
'fbla',
|
|
username: Platform.environment['JOBLINK_POSTGRES_USERNAME'],
|
|
password: Platform.environment['JOBLINK_POSTGRES_PASSWORD'],
|
|
);
|
|
|
|
Future<void> main() async {
|
|
await postgres.open();
|
|
var argon2 = Argon2BytesGenerator();
|
|
argon2.init(parameters);
|
|
|
|
var passwordBytes = parameters.converter.convert(password);
|
|
var result = Uint8List(32);
|
|
argon2.generateBytes(passwordBytes, result);
|
|
var resultHex = result.toHexString();
|
|
|
|
postgres.query(
|
|
'''
|
|
INSERT INTO public.users (username, password_hash, salt)
|
|
VALUES ('$username', '$resultHex', '$randomSalt')
|
|
'''
|
|
);
|
|
}
|