Класс QOpcUaX509CertificateSigningRequest
Класс QOpcUaX509CertificateSigningRequest создаёт запрос на подписание сертификата. Подробнее...
| Заголовок: | #include <QOpcUaX509CertificateSigningRequest> |
| qmake: | QT += opcua |
| С момента: | Qt 5.14 |
Типы публичного доступа
| Перечисление | Encoding { PEM, DER } |
| Перечисление | 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.
Документация по типам членов
перечисление QOpcUaX509CertificateSigningRequest::Encoding
Этот тип перечисления определяет кодировку сгенерированного запроса на подписание сертификата.
| Константа | Значение | Описание |
|---|---|---|
QOpcUaX509CertificateSigningRequest::Encoding::PEM |
0 |
Использование кодировки PEM |
QOpcUaX509CertificateSigningRequest::Encoding::DER |
1 |
Использование кодировки DER |
перечисление QOpcUaX509CertificateSigningRequest::MessageDigest
Этот тип перечисления определяет используемый дайджест сообщения.
| Константа | Значение | Описание |
|---|---|---|
QOpcUaX509CertificateSigningRequest::MessageDigest::SHA256 |
0 |
Использование дайджеста сообщения SHA256 |
Документация по функциям-членам
QOpcUaX509CertificateSigningRequest::QOpcUaX509CertificateSigningRequest()
Создаёт пустой запрос на подписание сертификата.
QOpcUaX509CertificateSigningRequest::~QOpcUaX509CertificateSigningRequest()
Уничтожает запрос и освобождает все расширения.
void QOpcUaX509CertificateSigningRequest::addExtension(QOpcUaX509Extension *extension)
Добавляет расширение сертификата в запрос.
Владение объектом extension будет передано этому классу.
См. также QOpcUaX509ExtensionSubjectAlternativeName, QOpcUaX509ExtensionBasicConstraints, QOpcUaX509ExtensionKeyUsage и QOpcUaX509ExtensionKeyUsage.
QByteArray QOpcUaX509CertificateSigningRequest::createRequest(const QOpcUaKeyPair &privateKey)
Создаёт запрос на подписание сертификата, который необходимо отправить в центр сертификации. Используется закрытый ключ из 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
Возвращает subject этого запроса.
См. также setSubject().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qopcuax509certificatesigningrequest.html