개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.22 22:42

openssl_cms_verify에 관한 질문

목록
  • Android개발광 1일 전 2025.04.22 22:42
  • 14
    1
저는 openssl_cms_verify를 사용하여 CMS (Certificate Management System) 인증서를 검증하고자 하는데,
다음과 같은 문제가 있습니다.

openssl_cms_verify에서 signer_info 구조체는 어떻게 사용해야 하는지 알려주세요?
또한 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법은 무엇이 있는지 알려주세요.

예를 들어, signer_info 구조체의 details 필드는 어떤 값을 가지고 있는지 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 구체적인 예시 코드를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 더 많은 정보를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 공식 문서나 참고할 수 있는 자료를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 더 많은 예시 코드를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 더 많은 정보를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 공식 문서를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 참고 자료를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 예시 코드를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 더 많은 예시 코드를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 더 많은 정보를 알려주세요.

openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법에 대한 공식 문서를 알려주세요.

openssl_cms

    댓글목록

    profile_image
    나우호스팅  1일 전



    openssl_cms_verify에서 signer_info 구조체는 CMS (Certificate Management System) 인증서의 서명자 정보를 포함하는 구조체입니다. signer_info 구조체는 다음과 같은 필드를 가지고 있습니다.

    - version: 서명자 정보의 버전 번호
    - sid: 서명자 ID
    - issuer_id: 서명자 ID
    - serial_number: 서명자 인증서의 시리얼 번호
    - issuer_name: 서명자 인증서의 발급자 이름
    - validity: 서명자 인증서의 유효 기간
    - subject_name: 서명자 인증서의 주체 이름
    - subject_public_key_info: 서명자 인증서의 주체 공개 키 정보

    openssl_cms_verify에서 signer_info 구조체를 사용하여 인증서의 서명자 정보를 추출하는 방법은 다음과 같습니다.

    1. openssl_cms_verify 함수를 호출하여 CMS 인증서를 검증합니다.
    2. 검증된 CMS 인증서의 signer_info 구조체를 추출합니다.
    3. signer_info 구조체의 필드를 사용하여 서명자 정보를 추출합니다.

    예시 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    // CMS 인증서를 검증하고 서명자 정보를 추출하는 함수
    
    void extract_signer_info(BIO *bio) {
    
        CMS_ContentInfo *cms = NULL;
    
        X509 *cert = NULL;
    
        X509_NAME *issuer_name = NULL;
    
        X509_NAME *subject_name = NULL;
    
        ASN1_INTEGER *serial_number = NULL;
    
        ASN1_OBJECT *issuer_id = NULL;
    
        ASN1_OBJECT *subject_id = NULL;
    
        ASN1_INTEGER *version = NULL;
    
        ASN1_OCTET_STRING *sid = NULL;
    
    
    
        // CMS 인증서를 검증합니다.
    
        cms = PEM_read_bio_CMS(bio, NULL, NULL, NULL);
    
        if (!cms) {
    
            printf("Error: Unable to read CMS certificaten");
    
            return;
    
        }
    
    
    
        // 서명자 정보를 추출합니다.
    
        cert = CMS_get0_signer_info(cms);
    
        if (!cert) {
    
            printf("Error: Unable to extract signer infon");
    
            return;
    
        }
    
    
    
        // 서명자 이름을 추출합니다.
    
        issuer_name = X509_get_issuer_name(cert);
    
        subject_name = X509_get_subject_name(cert);
    
    
    
        // 서명자 시리얼 번호를 추출합니다.
    
        serial_number = X509_get_serialNumber(cert);
    
    
    
        // 서명자 ID를 추출합니다.
    
        issuer_id = OBJ_txt2obj(X509_get_issuer_name(cert), 0);
    
        subject_id = OBJ_txt2obj(X509_get_subject_name(cert), 0);
    
    
    
        // 서명자 버전 번호를 추출합니다.
    
        version = ASN1_INTEGER_get(X509_get_version(cert));
    
    
    
        // 서명자 SID를 추출합니다.
    
        sid = ASN1_OCTET_STRING_get(cert);
    
    
    
        // 추출한 서명자 정보를 출력합니다.
    
        printf("서명자 이름: %sn", X509_NAME_oneline(issuer_name, NULL, 0));
    
        printf("서명자 시리얼 번호: %sn", ASN1_OBJECT_name(issuer_id));
    
        printf("서명자 ID: %sn", ASN1_OBJECT_name(subject_id));
    
        printf("서명자 버전 번호: %dn", ASN1_INTEGER_get(version));
    
        printf("서명자 SID: %sn", ASN1_OCTET_STRING_data(sid));
    
    }
    
    
    
    int main() {
    
        BIO *bio = BIO_new_file("example.cer", "rb");
    
        extract_signer_info(bio);
    
        BIO_free(bio);
    
        return 0;
    
    }
    
    


    이 예시 코드는 openssl_cms_verify 함수를 호출하여 CMS 인증서를 검증하고 서명자 정보를 추출하는 방법을 보여줍니다. 추출한 서명자 정보를 출력하는 코드를 추가하여 서명자 이름, 시리얼 번호, ID, 버전 번호, SID를 출력할 수 있습니다.

    2025-04-22 22:43

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 13,860건 / 19 페이지

검색

게시물 검색