Skip to main content
All docs
V25.1
  • PdfTimeStamp.BuildSignature(Byte[], String) Method

    Builds the signature and returns its contents.

    Namespace: DevExpress.Pdf

    Assembly: DevExpress.Pdf.v25.1.Core.dll

    NuGet Package: DevExpress.Pdf.Core

    Declaration

    public byte[] BuildSignature(
        byte[] digest,
        string digestAlgorithmOID
    )

    Parameters

    Name Type Description
    digest Byte[]

    The document’s hash value.

    digestAlgorithmOID String

    The hash algorithm’s object identifier.

    Returns

    Type Description
    Byte[]

    The signature contents.

    Remarks

    Utilize this method overload to obtain the signature contents used in the PdfDeferredSigner.Sign method.

    The code sample below uses a document hash to apply a signature externally:

    using DevExpress.Office.DigitalSignatures;
    using DevExpress.Pdf;
    
    using (var signer = new PdfDocumentSigner(File.OpenRead("SignDemo.pdf")))
    {
      // Specify the information about the signature metadata:
      var digestCalculator = new DigestCalculator(HashAlgorithmType.SHA256);
    
      var signerInfo = new ExternalSignerInfo(PdfSignatureType.Pkcs7, 8000, digestCalculator);
    
      // Create a new form field:
      var fieldInfo = new PdfSignatureFieldInfo(1) { SignatureBounds = new PdfRectangle(10, 10, 100, 100) };
    
      // Apply the metadata to the form field:
      var builder = new PdfDeferredSignatureBuilder(signerInfo, fieldInfo);
    
      // Add the signature to the document:
      var deferredSigner = signer.SignDeferred(builder);
    
      // Obtain the document hash and hash algorithm's object identifier:
      var digest = deferredSigner.HashValue;
      var digestAlgorithmOID = digestCalculator.AlgorithmOid;
    
      // Generate the signature content to insert into the document:
      byte[] signature = CreateSignature(digest, digestAlgorithmOID);
    
      // Add the signature contents and save the document to the file:
      deferredSigner.Sign("signed.pdf", signature);
    }
    
    static byte[] CreateSignature(byte[] digest, string digestAlgorithmOID)
    {
      var signer = new Pkcs7Signer(@"SignDemo.pfx", "dxdemo");
      byte[] signature = signer.BuildSignature(digest, digestAlgorithmOID);
      return signature;
    }
    
    See Also