This code snippet demonstrates how to extract digital signatures associated with an OpenType font.
publicstaticvoidRun(){using(Metadatametadata=newMetadata(Constants.InputTtf)){varroot=metadata.GetRootPackage<OpenTypeRootPackage>();if(root.DigitalSignaturePackage!=null){Console.WriteLine(root.DigitalSignaturePackage.Flags);foreach(varsignatureinroot.DigitalSignaturePackage.Signatures){Console.WriteLine(signature.SignTime);if(signature.DigestAlgorithms!=null){foreach(varsignatureDigestAlgorithminsignature.DigestAlgorithms){PrintOid(signatureDigestAlgorithm);}}if(signature.EncapsulatedContent!=null){PrintOid(signature.EncapsulatedContent.ContentType);Console.WriteLine(signature.EncapsulatedContent.ContentRawData.Length);}if(signature.Certificates!=null){foreach(varcertificateinsignature.Certificates){Console.WriteLine(certificate.NotAfter);Console.WriteLine(certificate.NotBefore);Console.WriteLine(certificate.RawData.Length);}}if(signature.Signers!=null){foreach(varsignerInfoEntryinsignature.Signers){Console.WriteLine(signerInfoEntry.SignatureValue);PrintOid(signerInfoEntry.DigestAlgorithm);PrintOid(signerInfoEntry.SignatureAlgorithm);Console.WriteLine(signerInfoEntry.SigningTime);PrintAttributes(signerInfoEntry.SignedAttributes);PrintAttributes(signerInfoEntry.UnsignedAttributes);}}}}}}privatestaticvoidPrintOid(Oidoid){// Display the property name and value of OIDif(oid!=null){Console.WriteLine(oid.FriendlyName);Console.WriteLine(oid.Value);}}privatestaticvoidPrintAttributes(CmsAttribute[]attributes){//Display the CmsAttributes of an OIDif(attributes!=null){foreach(CmsAttributeattributeinattributes){PrintOid(attribute.Oid);Console.WriteLine(attribute.Value);}}}