このページでは

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、BasicConstraints、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::PEM0PEM エンコーディングの使用
QOpcUaX509CertificateSigningRequest::Encoding::DER1DER エンコーディングを使用

enum class QOpcUaX509CertificateSigningRequest::MessageDigest

この列挙型は、使用するメッセージダイジェストを指定します。

定数定数値説明
QOpcUaX509CertificateSigningRequest::MessageDigest::SHA2560SHA256 メッセージダイジェストの使用

メンバ関数のドキュメント

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.