CertificateHolder
Contenido
[
Ocultar
]CertificateHolder class
Representa un titular deCertificado X5092 instancia.
Para obtener más información, visite elTrabajar con firmas digitales Artículo de documentación.
public class CertificateHolder
Propiedades
Nombre | Descripción |
---|---|
Certificate { get; } | Devuelve la instancia deCertificado X5092 que contiene claves privadas, públicas y la cadena de certificados. |
Métodos
Nombre | Descripción |
---|---|
static Create(byte[], SecureString) | CreaCertificateHolder objeto que utiliza la matriz de bytes del almacén PKCS12 y su contraseña. |
static Create(byte[], string) | CreaCertificateHolder objeto que utiliza la matriz de bytes del almacén PKCS12 y su contraseña. |
static Create(string, string) | CreaCertificateHolder objeto que utiliza la ruta al almacén PKCS12 y su contraseña. |
static Create(string, string, string) | CreaCertificateHolder objeto que utiliza la ruta al almacén PKCS12, su contraseña y el alias mediante el cual se encontrará la clave privada y el certificado. |
Observaciones
CertificateHolder
solo se puede crear mediante métodos de fábrica estáticos. Contiene una instancia deCertificado X5092 que se utiliza para introducir claves privadas, públicas y cadenas de certificados en el sistema. Esta clase se aplica enDigitalSignatureUtil
yPdfDigitalSignatureDetails
en lugar de métodos obsoletos con X509Certificate2 como parámetros.
Ejemplos
Muestra cómo firmar un archivo de documento cifrado.
// Cree un certificado X.509 desde un almacén PKCS#12, que debe contener una clave privada.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");
// Crea un comentario, una fecha y una contraseña de descifrado que se aplicará con nuestra nueva firma digital.
SignOptions signOptions = new SignOptions
{
Comments = "Comment",
SignTime = DateTime.Now,
DecryptionPassword = "docPassword"
};
// Establezca un nombre de archivo de sistema local para el documento de entrada sin firmar y un nombre de archivo de salida para su nueva copia firmada digitalmente.
string inputFileName = MyDir + "Encrypted.docx";
string outputFileName = ArtifactsDir + "DigitalSignatureUtil.DecryptionPassword.docx";
DigitalSignatureUtil.Sign(inputFileName, outputFileName, certificateHolder, signOptions);
Muestra cómo firmar documentos digitalmente.
// Cree un certificado X.509 desde un almacén PKCS#12, que debe contener una clave privada.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");
// Crea un comentario y una fecha que se aplicará con nuestra nueva firma digital.
SignOptions signOptions = new SignOptions
{
Comments = "My comment",
SignTime = DateTime.Now
};
// Tome un documento sin firmar del sistema de archivos local a través de un flujo de archivos,
// luego crea una copia firmada determinada por el nombre del archivo de flujo de salida.
using (Stream streamIn = new FileStream(MyDir + "Document.docx", FileMode.Open))
{
using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.OpenOrCreate))
{
DigitalSignatureUtil.Sign(streamIn, streamOut, certificateHolder, signOptions);
}
}
Muestra cómo agregar una línea de firma a un documento y luego firmarlo usando un certificado digital.
[Description("WORDSNET-16868")]
public static void Sign()
{
string signeeName = "Ron Williams";
string srcDocumentPath = MyDir + "Document.docx";
string dstDocumentPath = ArtifactsDir + "SignDocumentCustom.Sign.docx";
string certificatePath = MyDir + "morzal.pfx";
string certificatePassword = "aw";
CreateSignees();
Signee signeeInfo = mSignees.Find(c => c.Name == signeeName);
if (signeeInfo != null)
SignDocument(srcDocumentPath, dstDocumentPath, signeeInfo, certificatePath, certificatePassword);
else
Assert.Fail("Signee does not exist.");
}
/// <summary>
/// Crea una copia de un documento fuente firmado utilizando la información del firmante proporcionada y el certificado X509.
/// </summary>
private static void SignDocument(string srcDocumentPath, string dstDocumentPath,
Signee signeeInfo, string certificatePath, string certificatePassword)
{
Document document = new Document(srcDocumentPath);
DocumentBuilder builder = new DocumentBuilder(document);
// Configurar e insertar una línea de firma, un objeto en el documento que mostrará una firma con la que lo firmamos.
SignatureLineOptions signatureLineOptions = new SignatureLineOptions
{
Signer = signeeInfo.Name,
SignerTitle = signeeInfo.Position
};
SignatureLine signatureLine = builder.InsertSignatureLine(signatureLineOptions).SignatureLine;
signatureLine.Id = signeeInfo.PersonId;
// Primero, guardaremos una versión sin firmar de nuestro documento.
builder.Document.Save(dstDocumentPath);
CertificateHolder certificateHolder = CertificateHolder.Create(certificatePath, certificatePassword);
SignOptions signOptions = new SignOptions
{
SignatureLineId = signeeInfo.PersonId,
SignatureLineImage = signeeInfo.Image
};
// Sobrescriba el documento sin firmar que guardamos arriba con una versión firmada usando el certificado.
DigitalSignatureUtil.Sign(dstDocumentPath, dstDocumentPath, certificateHolder, signOptions);
}
public class Signee
{
public Guid PersonId { get; set; }
public string Name { get; set; }
public string Position { get; set; }
public byte[] Image { get; set; }
public Signee(Guid guid, string name, string position, byte[] image)
{
PersonId = guid;
Name = name;
Position = position;
Image = image;
}
}
private static void CreateSignees()
{
var signImagePath = ImageDir + "Logo.jpg";
mSignees = new List<Signee>
{
new Signee(Guid.NewGuid(), "Ron Williams", "Chief Executive Officer", TestUtil.ImageToByteArray(signImagePath)),
new Signee(Guid.NewGuid(), "Stephen Morse", "Head of Compliance", TestUtil.ImageToByteArray(signImagePath))
};
}
private static List<Signee> mSignees;
Ver también
- espacio de nombres Aspose.Words.DigitalSignatures
- asamblea Aspose.Words