Класс PublicKey
#include <QtCrypto>
Диаграмма кооперации класса QCA::PublicKey:

Публичные функции
| bool | canDecrypt () const |
| bool | canEncrypt () const |
| bool | canVerify () const |
| bool | decrypt (const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg) |
| SecureArray | encrypt (const SecureArray &a, EncryptionAlgorithm alg) |
| int | maximumEncryptSize (EncryptionAlgorithm alg) const |
| PublicKey & | operator= (const PublicKey &from) |
| PublicKey () | |
| PublicKey (const PrivateKey &k) | |
| PublicKey (const PublicKey &from) | |
| PublicKey (const QString &fileName) | |
| void | startVerify (SignatureAlgorithm alg, SignatureFormat format=DefaultFormat) |
| QByteArray | toDER () const |
| DHPublicKey | toDH () const |
| DSAPublicKey | toDSA () const |
| ECPublicKey | toEC () const |
| GOSTPublicKey | toGOST () const |
| QString | toPEM () const |
| bool | toPEMFile (const QString &fileName) const |
| RSAPublicKey | toRSA () const |
| void | update (const MemoryRegion &a) |
| bool | validSignature (const QByteArray &sig) |
| bool | verifyMessage (const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat) |
Публичные функции, унаследованные от QCA::PKey
| int | bitSize () const |
| bool | canExport () const |
| bool | canKeyAgree () const |
| bool | isDH () const |
| bool | isDSA () const |
| bool | isEC () const |
| bool | isGOST () const |
| bool | isNull () const |
| bool | isPrivate () const |
| bool | isPublic () const |
| bool | isRSA () const |
| bool | operator!= (const PKey &a) const |
| PKey & | operator= (const PKey &from) |
| bool | operator== (const PKey &a) const |
| PKey () | |
| PKey (const PKey &from) | |
| PrivateKey | toPrivateKey () const |
| PublicKey | toPublicKey () const |
| Type | type () const |
Публичные функции, унаследованные от QCA::Algorithm
| Algorithm (const Algorithm &from) | |
| void | change (const QString &type, const QString &provider) |
| void | change (Provider::Context *c) |
| Provider::Context * | context () |
| const Provider::Context * | context () const |
| Algorithm & | operator= (const Algorithm &from) |
| Provider * | provider () const |
| Provider::Context * | takeContext () |
| QString | type () const |
Статические публичные функции
| static PublicKey | fromDER (const QByteArray &a, ConvertResult *result=nullptr, const QString &provider=QString()) |
| static PublicKey | fromPEM (const QString &s, ConvertResult *result=nullptr, const QString &provider=QString()) |
| static PublicKey | fromPEMFile (const QString &fileName, ConvertResult *result=nullptr, const QString &provider=QString()) |
Статические публичные функции, унаследованные от QCA::PKey
| static QList<Type > | supportedIOTypes (const QString &provider=QString()) |
| static QList<Type > | supportedTypes (const QString &provider=QString()) |
Защищённые методы
| PublicKey (const QString &type, const QString &provider) |
Защищённые функции, унаследованные от QCA::PKey
| PKey (const QString &type, const QString &provider) | |
| void | set (const PKey &k) |
| DHPrivateKey | toDHPrivateKey () const |
| DHPublicKey | toDHPublicKey () const |
| DSAPrivateKey | toDSAPrivateKey () const |
| DSAPublicKey | toDSAPublicKey () const |
| ECPrivateKey | toECPrivateKey () const |
| ECPublicKey | toECPublicKey () const |
| GOSTPrivateKey | toGOSTPrivateKey () const |
| GOSTPublicKey | toGOSTPublicKey () const |
| RSAPrivateKey | toRSAPrivateKey () const |
| RSAPublicKey | toRSAPublicKey () const |
Защищённые функции, унаследованные от QCA::Algorithm
| Algorithm () |
| Algorithm (const QString &type, const QString &provider) |
Дополнительные унаследованные члены
Публичные типы, унаследованные от QCA::PKey
| enum | Type { RSA , DSA , DH , EC , GOST , UNKNOWN } |
Подробное описание
Общий открытый ключ.
Примеры
Описание конструкторов и деструктора
PublicKey() [1/5]
| QCA::PublicKey::PublicKey () |
Создаёт пустой (null) открытый ключ.
PublicKey() [2/5]
| QCA::PublicKey::PublicKey (const PrivateKey & k) |
Создаёт открытый ключ на основе указанного закрытого ключа.
Параметры
| k | Закрытый ключ, из которого будут извлечены части открытого ключа |
PublicKey() [3/5]
| QCA::PublicKey::PublicKey (const QString & fileName) |
Импортирует открытый ключ из представления PEM в файле.
Параметры
| fileName | Имя файла, содержащего открытый ключ |
См. также fromPEMFile как альтернативный метод.
PublicKey() [4/5]
| QCA::PublicKey::PublicKey (const PublicKey & from) |
Конструктор копирования.
Параметры
| from | Объект PublicKey для копирования |
PublicKey() [5/5]
| QCA::PublicKey::PublicKey (const QString & type, const QString & provider ) | protected |
Создаёт новый ключ указанного типа.
Параметры
| type | Тип создаваемого ключа |
| provider | Криптопровайдер, который будет использоваться, если требуется |
Описание методов
operator=()
| PublicKey & QCA::PublicKey::operator= (const PublicKey & from) |
Оператор присваивания.
Параметры
| from | Объект PublicKey для копирования |
toRSA()
| RSAPublicKey QCA::PublicKey::toRSA () const |
Удобный метод преобразования этого ключа в RSAPublicKey.
Следует обратить внимание, что если ключ не является ключом RSA (например, он DSA или DH), тогда будет получен нулевой ключ.
toDSA()
| DSAPublicKey QCA::PublicKey::toDSA () const |
Удобный метод преобразования этого ключа в DSAPublicKey.
Следует обратить внимание, что если ключ не является ключом DSA (например, он RSA или DH), тогда будет получен нулевой ключ.
toDH()
| DHPublicKey QCA::PublicKey::toDH () const |
Удобный метод преобразования этого ключа в DHPublicKey.
Следует обратить внимание, что если ключ не является ключом DH (например, он DSA или RSA), тогда будет получен нулевой ключ.
toEC()
| ECPublicKey QCA::PublicKey::toEC () const |
Удобный метод преобразования этого ключа в ECPublicKey.
Следует обратить внимание, что если ключ не является ключом эллиптической кривой (например, он RSA или DH), тогда будет получен нулевой ключ.
toGOST()
| GOSTPublicKey QCA::PublicKey::toGOST () const |
Удобный метод преобразования этого ключа в GOSTPublicKey.
Следует обратить внимание, что если ключ не является ключом ГОСТ (например, он RSA или эллиптическая кривая), тогда будет получен нулевой ключ.
canEncrypt()
| bool QCA::PublicKey::canEncrypt () const |
Проверяет, можно ли использовать этот ключ для шифрования.
Возвращает true, если ключ можно использовать для шифрования.
Примеры
canDecrypt()
| bool QCA::PublicKey::canDecrypt () const |
Проверяет, можно ли использовать этот ключ для дешифрования.
Возвращает true, если ключ можно использовать для дешифрования.
canVerify()
| bool QCA::PublicKey::canVerify () const |
Проверяет, можно ли использовать этот ключ для проверки подписей.
Возвращает true, если ключ можно использовать для верификации.
Примеры
maximumEncryptSize()
| int QCA::PublicKey::maximumEncryptSize (EncryptionAlgorithm alg) const |
Максимальный размер сообщения, которое можно зашифровать с помощью указанного алгоритма.
Параметры
| alg | Алгоритм для проверки |
encrypt()
| SecureArray QCA::PublicKey::encrypt (const SecureArray & a, EncryptionAlgorithm alg ) |
Шифрует сообщение, используя указанный алгоритм.
Параметры
| a | Сообщение для шифрования |
| alg | Используемый алгоритм |
Примеры
decrypt()
| bool QCA::PublicKey::decrypt (const SecureArray & in, SecureArray * out, EncryptionAlgorithm alg ) |
Расшифровывает сообщение.
Параметры
| in | Зашифрованные данные |
| out | Данные в виде обычного текста |
| alg | Используемый алгоритм |
Примечание.
Эта синхронная операция может потребовать обработки событий, поэтому её нельзя вызывать из того же потока, что и EventHandler.
startVerify()
| void QCA::PublicKey::startVerify (SignatureAlgorithm alg, SignatureFormat format = DefaultFormat ) |
Инициализирует процесс проверки подписи.
Параметры
| alg | Используемый алгоритм подписи |
| format | Конкретный формат для использования в DSA |
Примеры
update()
| void QCA::PublicKey::update (const MemoryRegion & a) |
Обновляет процесс проверки подписи дополнительными данными.
Параметры
| a | Массив, содержащий данные, которые нужно добавить в подпись |
Примеры
validSignature()
| bool QCA::PublicKey::validSignature (const QByteArray & sig) |
Проверяет, что подпись действительна для сообщения.
Ниже показан процесс проверки правильности подписи:
// следует обратить внимание, что открытый ключ имеет тип PublicKey
if( pubkey.canVerify() )
{
pubkey.startVerify( QCA::EMSA3_MD5 );
pubkey.update( theMessage ); // может вызываться несколько раз
if ( pubkey.validSignature( theSignature ) )
{
// тогда подпись действительна
}
else
{
// тогда подпись недействительна
}
}
Параметры
| sig | Подпись для проверки |
Возвращает true, если подпись верна.
Примеры
verifyMessage()
| bool QCA::PublicKey::verifyMessage (const MemoryRegion & a, const QByteArray & sig, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat ) |
Одноэтапная проверка сообщения.
Если нужно верифицировать всё сообщение, данный метод предлагает более удобный подход к проверке.
Параметры
| a | Сообщение для проверки подписи |
| sig | Подпись, которую нужно проверить |
| alg | Используемый алгоритм |
| format | Используемый формат подписи для DSA |
Возвращает true, если подпись действительна для сообщения.
Примеры
toDER()
| QByteArray QCA::PublicKey::toDER () const |
Экспортирует ключ в формате особых правил кодирования (DER).
toPEM()
| QString QCA::PublicKey::toPEM () const |
Экспортирует ключ в формате почты с повышенной секретностью (PEM).
См. также toPEMFile
предоставляет удобный способ сохранить закодированный ключ PEM в файл.
fromPEM
предоставляет действие, обратное
toPEM,
преобразуя закодированный ключ PEM в PublicKey.
toPEMFile()
| bool QCA::PublicKey::toPEMFile (const QString & fileName) const |
Экспортирует ключ в формате почты с повышенной секретностью (PEM) в файл.
Параметры
| fileName | Имя (и путь, если необходимо) файла, в который будет сохранён закодированный ключ PEM |
См. также toPEM
для версии, которая экспортируется в QString, что может быть полезно, если нужно выполнить более
сложную обработку.
fromPEMFile
предоставляет действие, обратное
toPEMFile,
считывая закодированный ключ PEM из файла.
fromDER()
| static PublicKey QCA::PublicKey::fromDER (const QByteArray & a, ConvertResult * result = nullptr, const QString & provider = QString() ) | static |
Импортирует ключ в формате особых правил кодирования (DER).
Эта функция принимает двоичный массив, который, как предполагается, содержит открытый ключ в формате
DER и возвращает этот ключ. Если не важна успешность импорта, следует проверить результат, как
показано ниже.
QCA::ConvertResult conversionResult;
QCA::PublicKey publicKey = QCA::PublicKey::fromDER(keyArray, &conversionResult);
if (! QCA::ConvertGood == conversionResult)
{
std::cout << "Не удалось прочитать открытый ключ" << std::endl;
}
Параметры
| a | Массив, содержащий ключ в кодировке DER |
| result | Указатель на переменную, которая возвращает, было ли преобразование успешным (ConvertGood) или нет |
| provider | Имя криптопровайдера, используемого для импорта |
fromPEM()
| static PublicKey QCA::PublicKey::fromPEM (const QString & s, ConvertResult * result = nullptr, const QString & provider = QString() ) | static |
Импортирует ключ в формате почты с повышенной секретностью (PEM).
Эта функция принимает строку, которая, как предполагается, содержит открытый ключ в формате PEM
и возвращает этот ключ. Если не важна успешность импорта, следует проверить результат, как показано
ниже.
QCA::ConvertResult conversionResult;
QCA::PublicKey publicKey = QCA::PublicKey::fromPEM(keyAsString, &conversionResult);
if (! QCA::ConvertGood == conversionResult)
{
std::cout << "Не удалось прочитать открытый ключ" << std::endl;
}
Параметры
| s | Строка, содержащая ключ в кодировке PEM |
| result | Указатель на переменную, которая возвращает, было ли преобразование успешным (ConvertGood) или нет |
| provider | Имя криптопровайдера, используемого для импорта |
См. также toPEM, который предоставляет действие, обратное fromPEM(),
fromPEMFile, который обеспечивает импорт прямо из файла.
fromPEMFile()
| static PublicKey QCA::PublicKey::fromPEMFile (const QString & fileName, ConvertResult * result = nullptr, const QString & provider = QString() ) | static |
Импортирует ключ в формате почты с повышенной секретностью (PEM) из файла.
Эта функция принимает имя файла, которое, как предполагается, содержит открытый ключ в формате
PEM и возвращает этот ключ. Если не важна успешность импорта, следует проверить результат, как
показано ниже.
QCA::ConvertResult conversionResult;
QCA::PublicKey publicKey = QCA::PublicKey::fromPEMFile(fileName, &conversionResult);
if (! QCA::ConvertGood == conversionResult)
{
std::cout << "Не удалось прочитать открытый ключ" << std::endl;
}
Параметры
| fileName | Строка, содержащая имя файла |
| result | Указатель на переменную, которая возвращает, было ли преобразование успешным (ConvertGood) или нет |
| provider | Имя криптопровайдера, используемого для импорта |
См. также toPEMFile, который предоставляет действие, обратное fromPEMFile()
fromPEM, который обеспечивает импорт из строки.
Примечание.
Есть также конструктор, который может импортировать из файла.