QOpcUaX509CertificateSigningRequest Class
QOpcUaX509CertificateSigningRequest: 인증서 서명 요청 생성. 더 보기...
| 헤더: | #include <QOpcUaX509CertificateSigningRequest> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpcUa) target_link_libraries(mytarget PRIVATE Qt6::OpcUa) |
| qmake: | QT += opcua |
공개 유형
| enum class | Encoding { PEM, DER } |
| enum class | MessageDigest { SHA256 } |
공개 함수
| QOpcUaX509CertificateSigningRequest() | |
| ~QOpcUaX509CertificateSigningRequest() | |
| void | addExtension(QOpcUaX509Extension *extension) |
| QByteArray | createRequest(const QOpcUaKeyPair &privateKey) |
| QByteArray | createSelfSignedCertificate(const QOpcUaKeyPair &privateKey, int validityInDays = 365) |
| QOpcUaX509CertificateSigningRequest::Encoding | encoding() const |
| QOpcUaX509CertificateSigningRequest::MessageDigest | messageDigest() const |
| void | setEncoding(QOpcUaX509CertificateSigningRequest::Encoding encoding) |
| void | setMessageDigest(QOpcUaX509CertificateSigningRequest::MessageDigest digest) |
| void | setSubject(const QOpcUaX509DistinguishedName &subject) |
| const QOpcUaX509DistinguishedName & | subject() const |
상세 설명
이 클래스는 현재 기술 미리보기(Technology Preview)로 제공되므로, 이 클래스가 제공하는 API 및 기능은 사전 공지 없이 언제든지 변경될 수 있습니다.
실제로 서명 요청 데이터를 생성하기 전에, 해당 특정 요청에 필요한 모든 확장을 추가해야 합니다. 현재 지원되는 확장은 SubjectAlternativeName, BasicConstrains, KeyUsage 및 ExtendedKeyUsage입니다.
// Generate key
QOpcUaKeyPair key;
key.generateRsaKey(QOpcUaKeyPair::RsaKeyStrength::Bits1024);
QOpcUaX509CertificateSigningRequest csr;
QOpcUaX509DistinguishedName dn;
dn.setEntry(QOpcUaX509DistinguishedName::Type::CommonName, "QtOpcUaViewer");
dn.setEntry(QOpcUaX509DistinguishedName::Type::CountryName, "DE");
dn.setEntry(QOpcUaX509DistinguishedName::Type::LocalityName, "Berlin");
dn.setEntry(QOpcUaX509DistinguishedName::Type::StateOrProvinceName, "Berlin");
dn.setEntry(QOpcUaX509DistinguishedName::Type::OrganizationName, "The Qt Company");
csr.setSubject(dn);
QOpcUaX509ExtensionSubjectAlternativeName *san = new QOpcUaX509ExtensionSubjectAlternativeName;
san->addData(QOpcUaX509ExtensionSubjectAlternativeName::Type::DNS, "foo.com");
san->addData(QOpcUaX509ExtensionSubjectAlternativeName::Type::DNS, "foo.com");
san->addData(QOpcUaX509ExtensionSubjectAlternativeName::Type::URI, "urn:foo.com:The%20Qt%20Company:QtOpcUaViewer");
san->setCritical(true);
csr.addExtension(san);
QOpcUaX509ExtensionBasicConstraints *bc = new QOpcUaX509ExtensionBasicConstraints;
bc->setCa(false);
bc->setCritical(true);
csr.addExtension(bc);
QOpcUaX509ExtensionKeyUsage *ku = new QOpcUaX509ExtensionKeyUsage;
ku->setCritical(true);
ku->setKeyUsage(QOpcUaX509ExtensionKeyUsage::KeyUsage::DigitalSignature);
ku->setKeyUsage(QOpcUaX509ExtensionKeyUsage::KeyUsage::NonRepudiation);
ku->setKeyUsage(QOpcUaX509ExtensionKeyUsage::KeyUsage::KeyEncipherment);
ku->setKeyUsage(QOpcUaX509ExtensionKeyUsage::KeyUsage::DataEncipherment);
ku->setKeyUsage(QOpcUaX509ExtensionKeyUsage::KeyUsage::CertificateSigning);
csr.addExtension(ku);
QOpcUaX509ExtensionExtendedKeyUsage *eku = new QOpcUaX509ExtensionExtendedKeyUsage;
eku->setCritical(true);
eku->setKeyUsage(QOpcUaX509ExtensionExtendedKeyUsage::KeyUsage::EmailProtection);
csr.addExtension(eku);
QByteArray csrData = csr.createRequest(key);QOpcUaX509ExtensionSubjectAlternativeName, QOpcUaX509ExtensionBasicConstraints 및 QOpcUaX509ExtensionKeyUsage도 참조하십시오 .
멤버 유형 문서
enum class QOpcUaX509CertificateSigningRequest::Encoding
이 열거형 타입은 생성된 인증서 서명 요청의 인코딩 방식을 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QOpcUaX509CertificateSigningRequest::Encoding::PEM | 0 | PEM 인코딩 사용 |
QOpcUaX509CertificateSigningRequest::Encoding::DER | 1 | DER 인코딩 사용 |
enum class QOpcUaX509CertificateSigningRequest::MessageDigest
이 열거형 유형은 사용할 메시지 다이제스트를 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QOpcUaX509CertificateSigningRequest::MessageDigest::SHA256 | 0 | SHA256 메시지 다이제스트 사용 |
멤버 함수 설명서
QOpcUaX509CertificateSigningRequest::QOpcUaX509CertificateSigningRequest()
빈 인증서 서명 요청을 생성합니다.
[noexcept] QOpcUaX509CertificateSigningRequest::~QOpcUaX509CertificateSigningRequest()
요청을 삭제하고 모든 확장 기능을 해제합니다.
void QOpcUaX509CertificateSigningRequest::addExtension(QOpcUaX509Extension *extension)
요청에 인증서 확장자를 추가합니다.
extension 객체의 소유권이 이 클래스로 이전됩니다.
QOpcUaX509ExtensionSubjectAlternativeName, QOpcUaX509ExtensionBasicConstraints 및 QOpcUaX509ExtensionKeyUsage도 참조하십시오 .
QByteArray QOpcUaX509CertificateSigningRequest::createRequest(const QOpcUaKeyPair &privateKey)
CA에 서명을 요청하기 위한 인증서 서명 요청을 생성합니다. privateKey 에 지정된 개인 키가 요청에 서명하는 데 사용됩니다. 요청 데이터는 setEncoding()에서 설정된 인코딩 방식으로 바이트 배열 형태로 반환됩니다.
QByteArray QOpcUaX509CertificateSigningRequest::createSelfSignedCertificate(const QOpcUaKeyPair &privateKey, int validityInDays = 365)
이 요청을 기반으로 즉시 사용할 수 있는 자체 서명 인증서를 생성합니다. privateKey 에 지정된 개인 키가 요청에 서명하는 데 사용됩니다. validityInDays 에서 유효 기간(일 단위)을 지정할 수 있습니다. 요청 데이터는 setEncoding()에서 설정된 인코딩 방식으로 바이트 배열 형태로 반환됩니다.
QOpcUaX509CertificateSigningRequest::Encoding QOpcUaX509CertificateSigningRequest::encoding() const
사용된 요청 인코딩을 반환합니다.
setEncoding()도 참조하십시오 .
QOpcUaX509CertificateSigningRequest::MessageDigest QOpcUaX509CertificateSigningRequest::messageDigest() const
사용된 메시지 다이제스트를 반환합니다.
setMessageDigest()도 참조하십시오 .
void QOpcUaX509CertificateSigningRequest::setEncoding(QOpcUaX509CertificateSigningRequest::Encoding encoding)
사용되는 요청 인코딩을 encoding 로 설정합니다. 기본 요청 인코딩은 PEM입니다.
encoding()도 참조하십시오 .
void QOpcUaX509CertificateSigningRequest::setMessageDigest(QOpcUaX509CertificateSigningRequest::MessageDigest digest)
사용 중인 메시지 다이제스트를 digest 로 설정합니다. 기본 메시지 다이제스트는 SHA256입니다.
messageDigest()도 참조하십시오 .
void QOpcUaX509CertificateSigningRequest::setSubject(const QOpcUaX509DistinguishedName &subject)
이 요청에 대한 ‘ subject ’을 설정합니다. subject가 없으면 요청을 생성할 수 없습니다.
subject()도 참조하십시오 .
const QOpcUaX509DistinguishedName &QOpcUaX509CertificateSigningRequest::subject() const
이 요청의 주체를 반환합니다.
setSubject()도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.