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 |
详细说明
该类目前作为技术预览版提供,因此该类提供的 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()。
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.