Cómo Leer el Certificado del Firmante a partir de Firmas PDF Verificadas en C# (X.509, eIDAS, Cadena)
Un contrato llega a tu canal de auditoría. Está firmado digitalmente, la firma es válida y tu equipo de cumplimiento necesita respuestas: quién lo firmó, si su certificado era válido esa mañana, y si la CA emisora coincide con tu lista de confianza. Podrías extraer los bytes de la firma en bruto, analizar el DER, y recorrer la cadena del certificado a mano. O podrías pedir al objeto VerifiedSignature su SignerCertificate y leer las respuestas como propiedades.
Para eso están diseñadas las propiedades SignerCertificate y CertificateChain en VerifiedSignature. Devueltas desde PdfDocument.GetVerifiedSignatures(), exponen la identidad completa X.509 del firmante, la CA emisora, las fechas de validez, la huella digital SHA-256, los bytes DER en bruto, y cada certificado intermedio hasta la raíz. Esa es la superficie de la API que necesitas para el cumplimiento eIDAS, fijación de certificados, registros de auditoría y verificación de la cadena de confianza.
Esta guía recorre tres familias de inspección de certificados:
- Detalles estándar de X.509: propiedades de identidad, nombres distinguidos completos, ventanas de validez y bytes DER en bruto para la interoperabilidad de
X509Certificate2. - Campos de eIDAS y de industrias reguladas: obtener la identificación nacional del firmante desde
SubjectSerialNumbery leer OID numéricos como2.5.4.97para el identificador de organización eIDAS. - Validación de la cadena de confianza: fijación con huella digital SHA-256 y recorrido completo de la cadena desde el firmante hasta la CA raíz.
Comienza una prueba gratuita de 30 días para probar la inspección de certificados en tu canal de verificación.
PM > Install-Package IronPdf
Llama a GetVerifiedSignatures en un PDF cargado y lee las propiedades del certificado del firmante directamente del resultado.
-
1Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf
-
2Copy and run this code snippet.
var sig = PdfDocument.FromFile("signed.pdf").GetVerifiedSignatures().First(); var cert = sig.SignerCertificate; Console.WriteLine($"{cert?.CommonName} ({cert?.Organization}) valid until {cert?.NotAfter}");C# -
3Deploy to test on your live environment
Start using IronPDF in your project today with a free trial
Flujo de trabajo mínimo (3 pasos)
- Descargar IronPDF de NuGet
- Carga un PDF firmado y llama a
GetVerifiedSignatures()para obtener una lista de objetos de firmas verificadas - Lee
sig.SignerCertificatepara la identidad y la validez, o recorresig.CertificateChainpara la cadena de confianza completa
¿Cómo Extraer la Identificación Nacional o Personal del Firmante?
La propiedad SubjectSerialNumber devuelve el valor del OID SERIALNUMBER del DN del Subject del certificado. En industrias reguladas (certificados calificados eIDAS, banca, ID digitales emitidos por el gobierno), este campo contiene la identificación nacional del firmante, ID tributario o número de identificación personal. No es el número de serie propio del certificado; eso es CertificateSerialNumber.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("eidas-signed-invoice.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Subject DN SERIALNUMBER OID (national ID, tax ID, etc.)
Console.WriteLine($"Signer Identity (SERIALNUMBER): {cert.SubjectSerialNumber ?? "not present"}");
// Certificate's own serial from the issuing CA
Console.WriteLine($"Certificate Serial (CA-issued): {cert.CertificateSerialNumber}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("eidas-signed-invoice.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Subject DN SERIALNUMBER OID (national ID, tax ID, etc.)
Console.WriteLine($"Signer Identity (SERIALNUMBER): {If(cert.SubjectSerialNumber, "not present")}")
' Certificate's own serial from the issuing CA
Console.WriteLine($"Certificate Serial (CA-issued): {cert.CertificateSerialNumber}")
NextSubjectSerialNumber te dice quién firmó el documento (una persona u organización ID, como un ID nacional o número tributario incrustado en el DN del Subject). CertificateSerialNumber te dice qué certificado fue usado; es el número de serie único que la Autoridad de Certificación emisora asigna para listas de revocación y registros de auditoría.¿Cómo Acceder a Propiedades de Identidad Convenientes?
SignerCertificateInfo expone los campos del DN del Subject más comúnmente necesarios como propiedades directas, por lo que no necesitas analizar la cadena DN completa por ti mismo.
Leyendo el Nombre y Afiliación del Firmante
Las propiedades CommonName, Organization, Country y Email cubren lo que muchos flujos de trabajo de identidad buscan primero.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("signed-agreement.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Common Subject DN fields exposed directly as properties
Console.WriteLine($"CommonName (CN): {cert.CommonName}");
Console.WriteLine($"Organization (O): {cert.Organization}");
Console.WriteLine($"Country (C): {cert.Country}");
Console.WriteLine($"Email: {cert.Email}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("signed-agreement.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Common Subject DN fields exposed directly as properties
Console.WriteLine($"CommonName (CN): {cert.CommonName}")
Console.WriteLine($"Organization (O): {cert.Organization}")
Console.WriteLine($"Country (C): {cert.Country}")
Console.WriteLine($"Email: {cert.Email}")
NextLa propiedad Email primero verifica el DN del Subject por el OID emailAddress. Si no está presente, recurre a la extensión SAN (Nombre Alternativo del sujeto) rfc822Name. La propiedad Country devuelve el código de dos letras ISO 3166-1 alfa-2 (por ejemplo, "DE", "US", "FR"). Todas las propiedades convenientes devuelven null si el campo correspondiente no está presente en el certificado.
Leyendo el DN Completo Cuando Necesitas Todo
Para registros de auditoría, análisis posteriores o informes de cumplimiento, SubjectDN y IssuerDN devuelven las cadenas de nombre distinguido completas.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("signed-agreement.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Full DN strings for audit logging or downstream parsing
Console.WriteLine($"Full Subject DN: {cert.SubjectDN}");
Console.WriteLine($"Full Issuer DN: {cert.IssuerDN}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("signed-agreement.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Full DN strings for audit logging or downstream parsing
Console.WriteLine($"Full Subject DN: {cert.SubjectDN}")
Console.WriteLine($"Full Issuer DN: {cert.IssuerDN}")
Next¿Cómo Extraer Campos Arbitrarios del Subject e Issuer?
Los métodos GetSubjectField(string) y GetIssuerField(string) aceptan nombres cortos u OIDs numéricos. No distinguen entre mayúsculas y minúsculas y devuelven null si el campo no está presente.
Nombres cortos soportados: CN, O, OU, C, L, ST, E, SERIALNUMBER, SURNAME, T, GIVENNAME, UID, ORGANIZATIONIDENTIFIER.
Leyendo Cualquier Campo del Subject (Incluyendo OIDs de eIDAS)
Pasa un nombre corto como "OU" o un OID numérico como "2.5.4.97" (el identificador de organización de eIDAS) para extraer cualquier campo del DN del Subject.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("eidas-contract.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Short-name lookups (case-insensitive)
string? orgUnit = cert.GetSubjectField("OU");
string? surname = cert.GetSubjectField("SURNAME");
string? givenName = cert.GetSubjectField("GIVENNAME");
string? title = cert.GetSubjectField("T");
// Numeric OID lookup (eIDAS organizationIdentifier)
string? orgId = cert.GetSubjectField("2.5.4.97");
Console.WriteLine($"Name: {givenName} {surname} ({title}), OU: {orgUnit}");
Console.WriteLine($"eIDAS Org ID (2.5.4.97): {orgId ?? "not present"}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("eidas-contract.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Short-name lookups (case-insensitive)
Dim orgUnit As String = cert.GetSubjectField("OU")
Dim surname As String = cert.GetSubjectField("SURNAME")
Dim givenName As String = cert.GetSubjectField("GIVENNAME")
Dim title As String = cert.GetSubjectField("T")
' Numeric OID lookup (eIDAS organizationIdentifier)
Dim orgId As String = cert.GetSubjectField("2.5.4.97")
Console.WriteLine($"Name: {givenName} {surname} ({title}), OU: {orgUnit}")
Console.WriteLine($"eIDAS Org ID (2.5.4.97): {If(orgId, "not present")}")
NextLa búsqueda de OID numérico es esencial para los certificados de industria regulada y eIDAS que incrustan identificadores de organización, calificaciones profesionales, o campos específicos de jurisdicción no cubiertos por nombres cortos estándar.
Leyendo los Campos del Issuer
GetIssuerField funciona de la misma manera contra el nombre distinguido de la CA emisora. Esto es útil para la validación de confianza, informes de CA, y para agrupar firmas por su autoridad emisora.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("eidas-contract.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// GetIssuerField works the same way as GetSubjectField
string? issuerCN = cert.GetIssuerField("CN");
string? issuerO = cert.GetIssuerField("O");
string? issuerCountry = cert.GetIssuerField("C");
Console.WriteLine($"Issued by: {issuerCN} ({issuerO}, {issuerCountry})");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("eidas-contract.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' GetIssuerField works the same way as GetSubjectField
Dim issuerCN As String = cert.GetIssuerField("CN")
Dim issuerO As String = cert.GetIssuerField("O")
Dim issuerCountry As String = cert.GetIssuerField("C")
Console.WriteLine($"Issued by: {issuerCN} ({issuerO}, {issuerCountry})")
NextEl Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario.
¿Cómo Comprobar la Validez del Certificado?
SignerCertificateInfo proporciona dos asistentes de validez:
IsExpireddevuelvetruesiDateTime.UtcNow > NotAfter.IsValidAt(DateTime)devuelvetruesi la fecha dada cae dentro de la ventanaNotAfter. El uso típico es confirmar que el certificado era válido en el momento de la firma.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("archived-contract.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
Console.WriteLine($"Valid from: {cert.NotBefore}");
Console.WriteLine($"Valid until: {cert.NotAfter}");
Console.WriteLine($"Expired now: {cert.IsExpired}");
// Confirm certificate was valid when the document was signed
bool validAtSigning = cert.IsValidAt(sig.SigningDate);
Console.WriteLine($"Valid at signing time ({sig.SigningDate}): {validAtSigning}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("archived-contract.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
Console.WriteLine($"Valid from: {cert.NotBefore}")
Console.WriteLine($"Valid until: {cert.NotAfter}")
Console.WriteLine($"Expired now: {cert.IsExpired}")
' Confirm certificate was valid when the document was signed
Dim validAtSigning As Boolean = cert.IsValidAt(sig.SigningDate)
Console.WriteLine($"Valid at signing time ({sig.SigningDate}): {validAtSigning}")
NextIsExpired devuelve false (no true) cuando no se pueden extraer fechas de validez del certificado. El asistente es intencionalmente conservador; no asume expiración solo porque falta metadata. Para flujos de trabajo de confianza cero, trata las fechas de validez faltantes como un caso de fallo explícitamente.Para registros de auditoría, registra tanto la verificación IsExpired (validez actual) como la verificación IsValidAt(signingDate) (validez en el momento de la firma). Un certificado que ha expirado puede haber sido todavía válido cuando el documento fue firmado; ambos puntos de datos son importantes para el cumplimiento.
¿Cómo Usar la Huella Digital SHA-256 para la Fijación de Certificados?
La propiedad Sha256Thumbprint devuelve una cadena hexagonal de 64 caracteres en mayúscula, el hash SHA-256 del certificado codificado en DER. Este es el valor que emparejas contra una lista conocida de certificados de firmante aceptados.
using IronPdf;
using IronPdf.Signing.Inspection;
using System.Collections.Generic;
// Known-good signer thumbprints from a compliance database
var pinnedThumbprints = new HashSet<string>
{
"A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2",
"F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5"
};
var pdf = PdfDocument.FromFile("submitted-form.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Pin against trusted thumbprint list
bool trusted = pinnedThumbprints.Contains(cert.Sha256Thumbprint);
Console.WriteLine($"Signer: {cert.CommonName}, Thumbprint: {cert.Sha256Thumbprint}");
Console.WriteLine($"Pinned: {trusted}");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Imports System.Collections.Generic
' Known-good signer thumbprints from a compliance database
Dim pinnedThumbprints As New HashSet(Of String) From {
"A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2",
"F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5"
}
Dim pdf = PdfDocument.FromFile("submitted-form.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Pin against trusted thumbprint list
Dim trusted As Boolean = pinnedThumbprints.Contains(cert.Sha256Thumbprint)
Console.WriteLine($"Signer: {cert.CommonName}, Thumbprint: {cert.Sha256Thumbprint}")
Console.WriteLine($"Pinned: {trusted}")
Next¿Cómo Construir un X509Certificate2 a partir de Datos de Certificado en Bruto?
La propiedad RawData devuelve el certificado codificado en DER como un byte[]. Cada llamada devuelve una copia defensiva, por lo que los datos internos nunca se exponen por referencia. Puedes utilizar esto para construir un System.Security.Cryptography.X509Certificates.X509Certificate2 para la interoperabilidad con las APIs criptográficas nativas de .NET (construcción de cadenas, validación de políticas, verificación de CRL).
using IronPdf;
using IronPdf.Signing.Inspection;
using System.Security.Cryptography.X509Certificates;
var pdf = PdfDocument.FromFile("signed-report.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
var cert = sig.SignerCertificate;
if (cert is null) continue;
// Construct X509Certificate2 from defensive DER copy
byte[] derBytes = cert.RawData;
var x509 = new X509Certificate2(derBytes);
Console.WriteLine($"X509 Subject: {x509.Subject}");
Console.WriteLine($"X509 Issuer: {x509.Issuer}");
Console.WriteLine($"X509 Serial: {x509.SerialNumber}");
Console.WriteLine($"X509 Algorithm: {x509.SignatureAlgorithm.FriendlyName}");
Console.WriteLine($"X509 Key Size: {x509.PublicKey.Key.KeySize} bits");
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Imports System.Security.Cryptography.X509Certificates
Dim pdf = PdfDocument.FromFile("signed-report.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Dim cert = sig.SignerCertificate
If cert Is Nothing Then Continue For
' Construct X509Certificate2 from defensive DER copy
Dim derBytes As Byte() = cert.RawData
Dim x509 = New X509Certificate2(derBytes)
Console.WriteLine($"X509 Subject: {x509.Subject}")
Console.WriteLine($"X509 Issuer: {x509.Issuer}")
Console.WriteLine($"X509 Serial: {x509.SerialNumber}")
Console.WriteLine($"X509 Algorithm: {x509.SignatureAlgorithm.FriendlyName}")
Console.WriteLine($"X509 Key Size: {x509.PublicKey.Key.KeySize} bits")
NextRawData devuelve una nueva copia defensiva. El arreglo de bytes interno nunca se expone por referencia, por lo que mutar los bytes devueltos no afectará a llamadas posteriores.Esta ruta de interoperabilidad te permite conectar la verificación de firmas de IronPDF en las canalizaciones de validación de certificados de .NET que ya tienes, como X509Chain.Build(), comprobación de revocación via CRL/OCSP, o implementaciones personalizadas de X509CertificateValidator.
¿Cómo Recorrer la Cadena del Certificado?
La propiedad CertificateChain en VerifiedSignature devuelve un IReadOnlyList<SignerCertificateInfo> ordenado de firmante → CA(s) intermedia(s) → CA raíz. El índice 0 siempre es el certificado del firmante (el mismo objeto que SignerCertificate). La lista nunca es nula; si no se puede extraer la cadena, solo contiene el certificado del firmante.
using IronPdf;
using IronPdf.Signing.Inspection;
var pdf = PdfDocument.FromFile("enterprise-signed.pdf");
foreach (var sig in pdf.GetVerifiedSignatures())
{
Console.WriteLine($"--- Signature: {sig.SignatureName} ---");
Console.WriteLine($"Chain length: {sig.CertificateChain.Count}");
// Walk from signer (index 0) through intermediates to root CA
for (int i = 0; i < sig.CertificateChain.Count; i++)
{
var cert = sig.CertificateChain[i];
string role = i == 0 ? "Signer"
: i == sig.CertificateChain.Count - 1 ? "Root CA"
: $"Intermediate CA ({i})";
Console.WriteLine($" [{role}]");
Console.WriteLine($" Subject: {cert.SubjectDN}");
Console.WriteLine($" Issuer: {cert.IssuerDN}");
Console.WriteLine($" Serial: {cert.CertificateSerialNumber}");
Console.WriteLine($" Valid: {cert.NotBefore} to {cert.NotAfter}");
Console.WriteLine($" Expired: {cert.IsExpired}");
Console.WriteLine($" Thumbprint: {cert.Sha256Thumbprint}");
}
}Imports IronPdf
Imports IronPdf.Signing.Inspection
Dim pdf = PdfDocument.FromFile("enterprise-signed.pdf")
For Each sig In pdf.GetVerifiedSignatures()
Console.WriteLine($"--- Signature: {sig.SignatureName} ---")
Console.WriteLine($"Chain length: {sig.CertificateChain.Count}")
' Walk from signer (index 0) through intermediates to root CA
For i As Integer = 0 To sig.CertificateChain.Count - 1
Dim cert = sig.CertificateChain(i)
Dim role As String = If(i = 0, "Signer", If(i = sig.CertificateChain.Count - 1, "Root CA", $"Intermediate CA ({i})"))
Console.WriteLine($" [{role}]")
Console.WriteLine($" Subject: {cert.SubjectDN}")
Console.WriteLine($" Issuer: {cert.IssuerDN}")
Console.WriteLine($" Serial: {cert.CertificateSerialNumber}")
Console.WriteLine($" Valid: {cert.NotBefore} to {cert.NotAfter}")
Console.WriteLine($" Expired: {cert.IsExpired}")
Console.WriteLine($" Thumbprint: {cert.Sha256Thumbprint}")
Next
NextSignerCertificateInfo en la cadena expone las mismas propiedades que SignerCertificate: campos de identidad, validez, huella digital, RawData, GetSubjectField(), y GetIssuerField(). Puedes validar la expiración de cada CA intermedia, comprobar la huella digital de la raíz contra tu almacén de raíces de confianza, y registrar la cadena completa para auditorías de cumplimiento.Próximos pasos
SignerCertificate y CertificateChain te dan la inspección completa de X.509 sin salir de la superficie de la API de IronPDF. Desde aquí, los siguientes pasos naturales son más profundos hacia las partes de IronPDF en las que estas propiedades se conectan.
Para el lado de la firma del flujo de trabajo, la guía de cómo hacer firmas digitales cubre la creación de certificados, metadata y firma incremental. Para firmas basadas en HSM en entornos de alta seguridad, la guía de firma HSM cubre la integración con PKCS#11. ¿Necesitas fragmentos listos para ejecutar? El ejemplo de código de firmas digitales los proporciona.
¿Listo para intentarlo en tus propios PDFs firmados? Comienza tu prueba gratuita de 30 días o consulta las opciones de licencia.
Frequently Asked Questions
¿Cuál es el propósito de leer los detalles del certificado X.509 de las firmas PDF?
Leer detalles del certificado X.509 de las firmas PDF te permite verificar la identidad del firmante, comprobar la validez del certificado, y asegurar el cumplimiento de estándares como eIDAS. Este proceso es esencial para mantener la autenticidad e integridad del documento.
¿Cómo ayuda IronPDF a extraer la identidad del firmante de las firmas PDF?
IronPDF proporciona herramientas para extraer la identidad del firmante de las firmas PDF accediendo a los detalles del certificado X.509, facilitando la autenticación de la fuente del documento y la verificación de las credenciales del firmante.
¿Puede IronPDF extraer campos eIDAS de las firmas PDF?
Sí, IronPDF puede extraer campos eIDAS de las firmas PDF, permitiendo a los desarrolladores asegurarse de que los documentos cumplan con las regulaciones de la Unión Europea sobre firmas electrónicas.
¿Qué información se puede recuperar de una firma PDF usando IronPDF?
Usando IronPDF, puedes recuperar información como la identidad del firmante, validez del certificado, huella digital, y la cadena de certificados de una firma PDF, proporcionando una visión integral de la autenticidad de la firma.
¿Es posible verificar la validez de una firma PDF usando IronPDF?
Sí, IronPDF te permite verificar la validez de una firma PDF inspeccionando los detalles del certificado X.509, lo que puede incluir la comprobación de las fechas de caducidad y la integridad del certificado de firma.
¿Cuáles son los beneficios de usar IronPDF para la verificación de firmas PDF?
Usar IronPDF para la verificación de firmas PDF ofrece beneficios como la extracción automatizada de información detallada del certificado, compatibilidad con aplicaciones C#, y adherencia a estándares internacionales como eIDAS.
¿Cómo maneja IronPDF la extracción de huellas de firmas PDF?
IronPDF maneja la extracción de huellas accediendo a los detalles del certificado X.509 dentro de una firma PDF, permitiéndote verificar la autenticidad e integridad del certificado a través de su huella única.
¿Puede IronPDF proporcionar una cadena de certificados a partir de una firma PDF?
IronPDF puede proporcionar la cadena de certificados a partir de una firma PDF, ayudándote a rastrear el camino de confianza desde el certificado del firmante hasta un certificado raíz de confianza, asegurando la validez de la firma.
¿Qué lenguaje de programación es compatible con IronPDF para leer firmas PDF?
IronPDF es compatible con C# para leer y verificar firmas PDF, lo que lo convierte en una solución ideal para desarrolladores que trabajan dentro del ecosistema .NET.
¿Cumple IronPDF con los estándares internacionales para firmas electrónicas?
Sí, IronPDF cumple con estándares internacionales como eIDAS, asegurando que tus procesos de verificación de firmas PDF cumplan con los requisitos regulatorios para firmas electrónicas.

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.