DEV Community

Manuel Felipe Arias Pineda
Manuel Felipe Arias Pineda

Posted on

🇪🇸 España devs: Add DNI / NIE to the AI identity standard — Soulprint open source (30 min PR)

Los agentes de IA actúan sin identidad verificada. Soulprint lo resuelve: ZK Proofs, 100% local, MIT.

🇪🇸 El DNI español no está en Soulprint todavía. ¿Lo agregas en 30 minutos?

DNI / NIE España

DNI: 8 dígitos + letra de control (módulo 23, tabla TRWAGMYFPDXBNJZSQVHLCKE).
NIE: X/Y/Z + 7 dígitos + letra.

const ES: CountryVerifier = {
  countryCode: "ES", countryName: "Spain",
  documentTypes: ["dni", "nie"],
  parse(ocrText: string): DocumentResult {
    const dni = ocrText.match(/(\d{8}[A-Z]|[XYZ]\d{7}[A-Z])/)?.[1] ?? "";
    return { valid: !!dni, doc_number: dni, country: "ES" };
  },
  validate(docNumber: string): NumberValidation {
    const letters = "TRWAGMYFPDXBNJZSQVHLCKE";
    if(/^\d{8}[A-Z]$/.test(docNumber)) {
      return { valid: letters[Number(docNumber.slice(0,8))%23] === docNumber[8] };
    }
    if(/^[XYZ]\d{7}[A-Z]$/.test(docNumber)) {
      const n = docNumber.replace("X","0").replace("Y","1").replace("Z","2");
      return { valid: letters[Number(n.slice(0,8))%23] === n[8] };
    }
    return { valid: false };
  },
};
export default ES;
Enter fullscreen mode Exit fullscreen mode

💻 GitHub · Un PR. Un país.

Top comments (0)