本页内容

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::PEM0使用 PEM 编码
QOpcUaX509CertificateSigningRequest::Encoding::DER1使用 DER 编码

enum class QOpcUaX509CertificateSigningRequest::MessageDigest

此枚举类型指定要使用的消息摘要。

常量值描述
QOpcUaX509CertificateSigningRequest::MessageDigest::SHA2560使用 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.