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::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.