// Yavsc.Models.Kyc/TrustToken.cs namespace Yavsc.Models.Kyc { using System; using System.ComponentModel.DataAnnotations; /// /// Token opaque représentant une entité sans l'identifier. /// Généré soit par un tiers de confiance (référence externe), /// soit par hash d'un e-mail confirmé (fallback interne). /// Jamais réversible côté consultant. /// public class TrustToken { [Key] public Guid Id { get; set; } = Guid.NewGuid(); /// /// Token fourni par le tiers de confiance, OU /// HMAC-SHA256(email_confirmé, clé_secrète_serveur). /// Stocké tel quel — pas l'email, pas l'identité. /// [Required, MaxLength(128)] public string TokenHash { get; set; } /// /// Source du token : "trusted_party" | "confirmed_email" /// [Required, MaxLength(32)] public string TokenSource { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; /// /// Score de confiance agrégé, calculé par la modération. /// Null si jamais évalué. /// public int? TrustScore { get; set; } public virtual ICollection Declarations { get; set; } } }