use random_bytes directly

This commit is contained in:
Erica Z 2024-10-16 00:02:38 +02:00
parent e6926725f7
commit 9e05dc3313

View file

@ -100,17 +100,17 @@ public class Ui.Setup : Adw.PreferencesDialog {
} }
private void salt_password (string password, out string token, out string salt) { private void salt_password (string password, out string token, out string salt) {
uchar salt_bytes[8]; const int SALT_BYTES = 8;
GCrypt.Random.randomize (salt_bytes); uchar salt_bytes[SALT_BYTES] = GCrypt.Random.random_bytes (SALT_BYTES);
uchar salt_chars[17]; uchar salt_chars[2*SALT_BYTES+1];
for (int i = 0; i < 8; i += 1) { for (int i = 0; i < SALT_BYTES; i += 1) {
salt_chars[2*i+0] = "0123456789abcdef"[(salt_bytes[i]>>4)&0xf]; salt_chars[2*i+0] = "0123456789abcdef"[(salt_bytes[i]>>4)&0xf];
salt_chars[2*i+1] = "0123456789abcdef"[(salt_bytes[i]>>0)&0xf]; salt_chars[2*i+1] = "0123456789abcdef"[(salt_bytes[i]>>0)&0xf];
} }
salt_chars[16] = 0; salt_chars[2*SALT_BYTES] = 0;
var checksum = new Checksum (ChecksumType.MD5); var checksum = new Checksum (ChecksumType.MD5);
checksum.update ((uchar[]) password, -1); checksum.update ((uchar[]) password, -1);
checksum.update (salt_chars, 16); checksum.update (salt_chars, -1);
token = checksum.get_string (); token = checksum.get_string ();
salt = (string) salt_chars; salt = (string) salt_chars;