Класс 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, который обеспечивает импорт из строки.
Примечание.
Есть также конструктор, который может импортировать из файла.