을 단계 애플리케이션을 구축하거나 폰트 자산을 감사해야 할 때, 이 과정을 숙달하면 워크플로가 보다 신뢰성 있고 안전해집니다.

What You’ll Learn

  • OpenType 폰트에서 디지털 서명 플래그를 추출하는 방법
  • 각 디지털 서명의 상세 정보를 가져오는 방법
  • Java 프로젝트에서 GroupDocs.Metadata를 설정하고 사용하는 방법

Quick Answers

  • What library do I need? GroupDocs.Metadata for Java (v24.12)
  • Which Java version is required? JDK 8 또는 그 이후 버전
  • Do I need a license? 평가용 무료 체험이 가능하며, 프로덕션에서는 정식 라이선스가 필요합니다
  • Can I process multiple fonts? 예 – 대량 파일을 위해 배치 또는 동시 처리 사용 가능
  • Is the code thread‑safe? Metadata 객체는 일회용이며, 스레드당 새 인스턴스를 생성해야 합니다

Prerequisites

디지털 서명 데이터를 추출하기 전에 아래 요구 사항을 충족하는지 확인하십시오.

Required Libraries and Dependencies

GroupDocs.Metadata for Java를 사용하려면 아래와 같이 Maven 저장소와 의존성을 포함합니다.

Environment Setup Requirements

  • Java Development Kit (JDK): JDK 8 또는 그 이후 버전을 설치합니다.
  • IDE: IntelliJ IDEA, Eclipse, VS Code 등 Java 호환 IDE라면 모두 사용 가능합니다.

Knowledge Prerequisites

Java에 대한 기본 지식과 디지털 서명에 대한 이해가 있으면 도움이 되지만, 본 가이드는 초보자를 위한 명확한 설명을 포함하고 있습니다.

Setting Up GroupDocs.Metadata for Java

Maven Installation

아래 구성을 pom.xml 파일에 추가하십시오. 이 설정은 예제에 필요한 groupdocs metadata java 패키지를 가져옵니다.

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/metadata/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>24.12</version>
    </dependency>
</dependencies>

Direct Download

또는 최신 버전을 GroupDocs.Metadata for Java releases에서 다운로드하십시오.

License Acquisition

  • Free Trial: 기능을 체험하려면 무료 체험을 시작하십시오.
  • Temporary License: 필요 시 GroupDocs licensing page에서 임시 라이선스를 발급받으세요.
  • Purchase: 정식 사용을 위해 라이선스 구매를 고려하십시오.

라이브러리를 설치하고 라이선스를 확보한 후 서명 추출을 시작할 수 있습니다.

What is a Digital Signature in an OpenType Font?

OpenType 폰트에 삽입된 디지털 서명은 서명 이후 폰트 파일이 변경되지 않았음을 보증합니다. 서명에는 서명 시각, 인증서, 해시 알고리즘 등 암호화 정보가 포함되며, 이를 GroupDocs.Metadata를 통해 프로그래밍 방식으로 읽을 수 있습니다.

How to Extract Digital Signature Flags

Overview

디지털 서명 플래그를 추출하면 서명의 상태와 속성(예: 특수 조건 여부)을 빠르게 파악할 수 있습니다.

Implementation Steps

  1. Initialize Metadata: 폰트 파일을 가리키는 Metadata 인스턴스를 생성합니다.
  2. Read Flags: DigitalSignaturePackage에 접근하여 플래그를 출력합니다.
String documentPath = "YOUR_DOCUMENT_DIRECTORY"; // Replace with your input file path
try (Metadata metadata = new Metadata(documentPath)) {
    OpenTypeRootPackage root = metadata.getRootPackageGeneric();
    
    if (root.getDigitalSignaturePackage() != null) {
        System.out.println(root.getDigitalSignaturePackage().getFlags());
    }
}

Explanation

  • documentPath – OpenType 폰트의 절대 경로나 상대 경로입니다.
  • try‑with‑resources 블록은 Metadata 객체를 자동으로 닫아 자원 누수를 방지합니다.

How to Extract Detailed Digital Signature Information

Overview

플래그 외에도 각 서명의 메타데이터(서명 시각, 알고리즘, 인증서, 캡슐화된 콘텐츠 등)를 검사해야 할 경우가 많습니다.

Implementation Steps

  1. Initialize Metadata (위와 동일).
  2. Iterate Over Signatures:CmsSignature에 대해 관련 속성을 출력합니다.
String documentPath = "YOUR_DOCUMENT_DIRECTORY"; // Replace with your input file path
try (Metadata metadata = new Metadata(documentPath)) {
    OpenTypeRootPackage root = metadata.getRootPackageGeneric();
    
    if (root.getDigitalSignaturePackage() != null) {
        for (CmsSignature signature : root.getDigitalSignaturePackage().getSignatures()) {
            System.out.println(signature.getSignTime());
            
            if (signature.getDigestAlgorithms() != null) {
                for (com.groupdocs.metadata.core.Oid signatureDigestAlgorithm : signature.getDigestAlgorithms()) {
                    printOid(signatureDigestAlgorithm);
                }
            }

            if (signature.getEncapsulatedContent() != null) {
                System.out.println(signature.getEncapsulatedContent().getContentType());
                System.out.println(signature.getEncapsulatedContent().getContentRawData().length);
            }

            if (signature.getCertificates() != null) {
                for (com.groupdocs.metadata.core.CmsCertificate certificate : signature.getCertificates()) {
                    System.out.println(certificate.getNotAfter());
                    System.out.println(certificate.getNotBefore());
                    System.out.println(certificate.getRawData().length);
                }
            }

            if (signature.getSigners() != null) {
                for (com.groupdocs.metadata.core.CmsSigner signerInfoEntry : signature.getSigners()) {
                    System.out.println(signerInfoEntry.getSignatureValue());
                    printOid(signerInfoEntry.getDigestAlgorithm());
                    printOid(signerInfoEntry.getSignatureAlgorithm());
                    System.out.println(signerInfoEntry.getSigningTime());
                }
            }
        }
    }
}

Explanation of Key Sections

  • Sign Time: 서명이 적용된 시점입니다.
  • Digest Algorithms & OIDs: 사용된 해시 알고리즘(e.g., SHA‑256)입니다.
  • Encapsulated Content: 서명 내부에 포함된 추가 데이터입니다.
  • Certificates: 인증서의 유효 기간 및 원시 데이터 크기를 통해 서명자의 신원을 검증할 수 있습니다.
  • Signers: 각 서명자의 알고리즘 선택 및 서명 타임스탬프를 제공합니다.

Troubleshooting Tips

  • 폰트에 디지털 서명이 실제로 포함되어 있는지 확인하십시오. 없을 경우 getDigitalSignaturePackage()null을 반환합니다.
  • Maven 의존성에 명시된 GroupDocs.Metadata 버전과 동일한 버전을 사용하여 compatibility issues를 방지하십시오.

Practical Applications

OpenType 폰트에서 디지털 서명 데이터를 추출하는 것은 다양한 시나리오에서 유용합니다.

  1. Document Verification: 콘텐츠 관리 시스템에서 서명된 폰트 파일을 자동으로 검사합니다.
  2. Digital Asset Management: 브랜딩 프로젝트에 배포하기 전에 폰트 진위를 검증합니다.
  3. Security Audits: 내부 security 정책 준수를 위해 서명 세부 정보를 검토합니다.

Performance Considerations

  • Resource Management: Metadata 객체는 항상 try‑with‑resources를 사용해 즉시 닫아야 합니다.
  • Batch Processing: 많은 폰트를 처리할 때는 배치 방식으로 작업하여 I/O 오버헤드를 줄이세요.
  • Concurrency: 대규모 작업에서는 별도의 Metadata 인스턴스를 병렬 스레드에서 실행하십시오. 인스턴스 자체는 스레드‑안전하지 않습니다.

Frequently Asked Questions

Q: Can I extract signatures from a font that has no digital signature?
A: DigitalSignaturePackagenull이 되므로, 플래그나 세부 정보를 접근하기 전에 이 조건을 확인해야 합니다.

Q: Which version of GroupDocs.Metadata is required?
A: 예제는 24.12 버전을 사용하지만, 최신 버전도 OpenType 폰트에 대해 하위 호환됩니다.

Q: Do I need a special license to read signatures?
A: 평가용 체험 라이선스로도 가능하지만, 프로덕션에서는 정식 라이선스가 필요합니다.

Q: How do I handle fonts stored in a cloud bucket?
A: 폰트를 임시 로컬 파일로 다운로드한 뒤 해당 경로를 Metadata에 전달하면 됩니다. 라이브러리는 로컬 경로에 접근 가능한 파일이면 모두 처리합니다.

Q: Is it possible to verify the signature’s cryptographic validity?
A: GroupDocs.Metadata는 원시 데이터를 제공하므로, 인증서 체인과 해시 값을 별도의 암호화 라이브러리에 전달해 전체 검증을 수행할 수 있습니다.

Conclusion

이 가이드를 따라 how to extract signature 정보를 포함한 OpenType 폰트의 상세 디지털 서명 데이터를 GroupDocs.Metadata for Java로 추출하는 방법을 익혔습니다. 이러한 기술을 애플리케이션에 적용하면 문서 보안이 강화되고 자산 검증이 간소화되며, 규정 준수 이니셔티브를 지원할 수 있습니다.

Next Steps

  • 대용량 폰트 라이브러리를 처리하기 위해 배치 처리를 실험해 보세요.
  • 추출된 데이터를 보안 감사 도구와 결합해 자동화된 규정 준수 보고서를 생성하십시오.
  • 필요에 따라 서명을 편집하거나 제거하는 등 GroupDocs.Metadata의 다른 메타데이터 기능도 탐색해 보세요.

Last Updated: 2026-01-24
Tested With: GroupDocs.Metadata 24.12
Author: GroupDocs