QOpcUaX509CertificateSigningRequest Class
QOpcUaX509인증서 서명 요청 인증서 서명 요청을 만듭니다. 더 보기...
헤더: | #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 |
상세 설명
이 클래스는 현재 기술 미리보기로 제공되고 있으며, 따라서 이 클래스에서 제공하는 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, QOpcUaX509ExtensionKeyUsage 을참조하세요 .
멤버 유형 문서
enum class QOpcUaX509CertificateSigningRequest::Encoding
이 열거형 유형은 생성된 인증서 서명 요청의 인코딩을 지정합니다.
상수 | 값 | 설명 |
---|---|---|
QOpcUaX509CertificateSigningRequest::Encoding::PEM | 0 | PEM 인코딩 사용 |
QOpcUaX509CertificateSigningRequest::Encoding::DER | 1 | DER 인코딩 사용 |
enum class QOpcUaX509CertificateSigningRequest::MessageDigest
이 열거형 유형은 사용할 메시지 다이제스트를 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QOpcUaX509CertificateSigningRequest::MessageDigest::SHA256 | 0 | SHA256 메시지 다이제스트 사용 |
멤버 함수 문서
QOpcUaX509CertificateSigningRequest::QOpcUaX509CertificateSigningRequest()
빈 인증서 서명 요청을 만듭니다.
[noexcept]
QOpcUaX509CertificateSigningRequest::~QOpcUaX509CertificateSigningRequest()
요청을 삭제하고 모든 확장 프로그램을 해제합니다.
void QOpcUaX509CertificateSigningRequest::addExtension(QOpcUaX509Extension *extension)
요청에 인증서 확장을 추가합니다.
extension 개체의 소유권이 이 클래스로 이전됩니다.
QOpcUaX509ExtensionSubjectAlternativeName, QOpcUaX509ExtensionBasicConstraints, QOpcUaX509ExtensionKeyUsage, 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()도 참조하세요 .
const QOpcUaX509DistinguishedName &QOpcUaX509CertificateSigningRequest::subject() const
이 요청의 주제를 반환합니다.
setSubject()도 참조하세요 .
© 2025 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.