yavsc/src/Yavsc.Server/Models/Kyc/TrustToken.cs

42 lines
1.3 KiB
C#
Raw Normal View History

2026-05-24 00:59:38 +01:00
// Yavsc.Models.Kyc/TrustToken.cs
namespace Yavsc.Models.Kyc
{
using System;
using System.ComponentModel.DataAnnotations;
/// <summary>
/// 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.
/// </summary>
public class TrustToken
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
/// <summary>
/// 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é.
/// </summary>
[Required, MaxLength(128)]
public string TokenHash { get; set; }
/// <summary>
/// Source du token : "trusted_party" | "confirmed_email"
/// </summary>
[Required, MaxLength(32)]
public string TokenSource { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// Score de confiance agrégé, calculé par la modération.
/// Null si jamais évalué.
/// </summary>
public int? TrustScore { get; set; }
public virtual ICollection<TrustDeclaration> Declarations { get; set; }
}
}