46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using Omika.Diagnostics.Security;
|
|
|
|
// ============================================================
|
|
// Omika.DiagnosticHashTool — génération HORS LIGNE d'un hash
|
|
// PBKDF2-SHA256 pour le COMPTE BOOTSTRAP Diagnostics.Web (T23 §39).
|
|
//
|
|
// Usage :
|
|
// Omika.DiagnosticHashTool "<mot-de-passe-bootstrap>"
|
|
// Omika.DiagnosticHashTool --stdin (lit une ligne sur stdin)
|
|
//
|
|
// ⚠️ Réservé au bootstrap du PREMIER admin Production. Le mot de passe ne
|
|
// doit jamais être placé dans Git / le rapport / appsettings versionné.
|
|
// Seul le HASH est ensuite mis dans la configuration / le secret store.
|
|
// Préférez --stdin pour éviter de laisser le mot de passe dans
|
|
// l'historique du shell.
|
|
// ============================================================
|
|
|
|
string? password;
|
|
|
|
if (args.Length == 0)
|
|
{
|
|
Console.Error.WriteLine("Usage: Omika.DiagnosticHashTool \"<mot-de-passe>\" | --stdin");
|
|
return 2;
|
|
}
|
|
|
|
if (args[0] == "--stdin")
|
|
{
|
|
password = Console.ReadLine();
|
|
}
|
|
else
|
|
{
|
|
password = args[0];
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(password))
|
|
{
|
|
Console.Error.WriteLine("Mot de passe vide refusé.");
|
|
return 2;
|
|
}
|
|
|
|
string hash = DiagnosticPasswordHasher.Hash(password);
|
|
|
|
// Affichage du HASH uniquement (jamais le mot de passe).
|
|
Console.WriteLine(hash);
|
|
return 0;
|