#if STELLAOPS_CRYPTO_SODIUM using System; using System.Text; using Konscious.Security.Cryptography; namespace StellaOps.Cryptography; /// /// Placeholder for libsodium-backed Argon2id implementation. /// Falls back to the managed Konscious variant until native bindings land. /// public sealed partial class Argon2idPasswordHasher { private static partial byte[] DeriveHashCore(string password, ReadOnlySpan salt, PasswordHashOptions options) { // TODO(SEC1.B follow-up): replace with libsodium/core bindings and managed pinning logic. var passwordBytes = Encoding.UTF8.GetBytes(password); using var argon2 = new Argon2id(passwordBytes) { Salt = salt.ToArray(), DegreeOfParallelism = options.Parallelism, Iterations = options.Iterations, MemorySize = options.MemorySizeInKib }; return argon2.GetBytes(HashLengthBytes); } } #endif