From 9586a443b60fc29a20cf71c769fe36ce8396ebe1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 28 Jul 2023 10:46:21 -0400
Subject: [PATCH] PIN: increase size to 16 chars

Increases entropy from 41,36 bits to 82,72 bits.

GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1587
Change-Id: Ib5b73ef493963bfabaf87686ad22eccfd0079e31
---
 src/jamidht/archive_account_manager.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/jamidht/archive_account_manager.cpp b/src/jamidht/archive_account_manager.cpp
index 5b930b04ef..9b887bb4be 100644
--- a/src/jamidht/archive_account_manager.cpp
+++ b/src/jamidht/archive_account_manager.cpp
@@ -653,15 +653,18 @@ ArchiveAccountManager::changePassword(const std::string& password_old,
 }
 
 std::string
-generatePIN(size_t length = 8)
+generatePIN(size_t length = 16, size_t split = 8)
 {
     static constexpr const char alphabet[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     dht::crypto::random_device rd;
     std::uniform_int_distribution<size_t> dis(0, sizeof(alphabet) - 2);
     std::string ret;
     ret.reserve(length);
-    for (size_t i = 0; i < length; i++)
+    for (size_t i = 0; i < length; i++) {
         ret.push_back(alphabet[dis(rd)]);
+        if (i % split == split - 1 and i != length - 1)
+            ret.push_back('-');
+    }
     return ret;
 }
 
-- 
GitLab