Класс SecureArray
Публичные функции
SecureArray & | append (const SecureArray &a) |
char & | at (int index) |
const char & | at (int index) const |
void | clear () |
const char * | constData () const |
char * | data () |
const char * | data () const |
void | fill (char fillChar, int fillToPosition=-1) |
bool | isEmpty () const |
bool | operator!= (const MemoryRegion &other) const |
SecureArray & | operator+= (const SecureArray &a) |
SecureArray & | operator= (const QByteArray &a) |
SecureArray & | operator= (const SecureArray &from) |
bool | operator== (const MemoryRegion &other) const |
char & | operator[] (int index) |
const char & | operator[] (int index) const |
bool | resize (int size) |
SecureArray () | |
SecureArray (const char *str) | |
SecureArray (const MemoryRegion &a) | |
SecureArray (const QByteArray &a) | |
SecureArray (const SecureArray &from) | |
SecureArray (int size, char ch=0) | |
int | size () const |
QByteArray | toByteArray () const |
Публичные функции, унаследованные от QCA::MemoryRegion
const char & | at (int index) const |
const char * | constData () const |
const char * | data () const |
bool | isEmpty () const |
bool | isNull () const |
bool | isSecure () const |
MemoryRegion (const char *str) | |
MemoryRegion (const MemoryRegion &from) | |
MemoryRegion (const QByteArray &from) | |
MemoryRegion & | operator= (const MemoryRegion &from) |
MemoryRegion & | operator= (const QByteArray &from) |
int | size () const |
QByteArray | toByteArray () const |
Защищённые методы
void | set (const QByteArray &from) |
void | set (const SecureArray &from) |
Защищённые функции, унаследованные от QCA::MemoryRegion
char & | at (int index) |
char * | data () |
MemoryRegion (bool secure) | |
MemoryRegion (const QByteArray &from, bool secure) | |
MemoryRegion (int size, bool secure) | |
bool | resize (int size) |
void | set (const QByteArray &from, bool secure) |
void | setSecure (bool secure) |
Подробное описание
Безопасные массивы байтов.
Класс SecureArray
предоставляет массив из пула памяти, который безопасен до некоторого уровня. В
данном контексте безопасный обозначает, что содержимое памяти не дожлно стать доступным другим
приложениям. Для сравнения, данные QByteArray
или QString
могут хранится в страницах,
которые могут быть выгружены на диск или освобождены без предварительной очистки.
Следует обратить внимание, что данный класс можно разделять между несколькими потоками исполнения, так как реализация основана на механизме копирования при записи.
Примеры
aes-cmac.cpp, ciphertest.cpp, eventhandlerdemo.cpp, hashtest.cpp, keyloader.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp, randomtest.cpp, rsatest.cpp и saslclient.cpp.
Описание конструкторов и деструктора
SecureArray() [1/6]
QCA::SecureArray::SecureArray () |
Создаёт безопасный массив байтов нулевой длины.
SecureArray() [2/6]
QCA::SecureArray::SecureArray (int size, charch = 0) | explicit |
Создаёт безопасный массив байтов указанной длины.
Параметры
size | Количество байтов в создаваемом массиве |
ch | Изначальное значение каждого байта |
SecureArray() [3/6]
QCA::SecureArray::SecureArray (const char * str) |
Создаёт безопасный массив байтов из строки.
Следует обратить внимание, что конструктор копирует данные, а не формирует ссылку на переданный массив.
Параметры
str | Источник данных (в формате null-терминированой строки) |
SecureArray() [4/6]
QCA::SecureArray::SecureArray (const QByteArray & a) |
Создаёт безопасный массив байтов из объекта QByteArray
.
Следует обратить внимание, что конструктор копирует данные, а не формирует ссылку на переданный массив.
Параметры
a | Источник данных |
См. также operator=()
SecureArray() [5/6]
QCA::SecureArray::SecureArray (const MemoryRegion & a) |
Создаёт безопасный массив байтов из объекта MemoryRegion.
Следует обратить внимание, что конструктор копирует данные, а не добавляет ссылку на переданный массив.
Параметры
a | Источник данных |
См. также operator=()
SecureArray() [6/6]
QCA::SecureArray::SecureArray (const SecureArray & from) |
Создаёт копию другого безопасного массива байтов, используя поверхностное копирование.
Параметры
from | Источник данных и длины |
Описание методов
operator=() [1/2]
SecureArray& QCA::SecureArray::operator= (const SecureArray & from) |
Формирует ссылку на данные, не выполняет глубокое копирование.
Параметры
from | Ссылка на массив |
operator=() [2/2]
SecureArray& QCA::SecureArray::operator= (const QByteArray & a) |
Возвращает копию, а не ссылку.
Параметры
a | Массив для копирования |
clear()
void QCA::SecureArray::clear () |
Очищает содержимое массива и делает его пустым.
Примеры
operator [1/2]
char& QCA::SecureArray::operator[] (int index) |
Возвращает ссылку на байт по указаной позиции.
Параметры
index | Номер байта для получения, нумерация начинается с нуля |
operator [2/2]
const char& QCA::SecureArray::operator[] (int index) const |
Возвращает ссылку на байт по указаной позиции.
Параметры
index | Номер байта для получения, нумерация начинается с нуля |
data() [1/2]
char* QCA::SecureArray::data () |
Указатель на данные в защищённом массиве.
Можно передавать данную ссылку в функцию memcpy
или подобную ей. Для получения данных по
указанному отступу лучше использовать метод
at()
или оператор []
.
Примеры
ciphertest.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp и rsatest.cpp.
data() [2/2]
const char* QCA::SecureArray::data () const |
Указатель на данные в защищённом массиве.
Можно передавать данную ссылку в функцию memcpy
или подобную ей. Для получения данных по
указанному отступу лучше использовать метод
at()
или оператор []
.
constData()
const char* QCA::SecureArray::constData () const |
Указатель на данные в защищённом массиве.
Можно передавать данную ссылку в функцию memcpy
или подобную ей. Для получения данных по
указанному отступу лучше использовать метод
at()
или оператор []
.
at() [1/2]
char& QCA::SecureArray::at (int index) |
Возвращает ссылку на байт по указаной позиции.
Параметры
index | Номер байта для получения, нумерация начинается с нуля |
at() [2/2]
const char& QCA::SecureArray::at (int index) const |
Возвращает ссылку на байт по указаной позиции.
Параметры
index | Номер байта для получения, нумерация начинается с нуля |
size()
int QCA::SecureArray::size () const |
Возвращает количество байтов в массиве.
Примеры
isEmpty()
bool QCA::SecureArray::isEmpty () const |
Проверяет, содержит ли массив какие-нибудь байты.
Метод эквивалентен проверке
(size()
!= 0
). Следует обратить внимание, что если память под массив была выделена, метод
isEmpty()
возвращает false
, даже если никакие данные не были добавлены.
Возвращает true
, если массив нулевой длины, false
в противном случае.
Примеры
resize()
bool QCA::SecureArray::resize (int size) |
Изменяет длину данного массива. Если новая длина меньше старой длины, лишние данные безопасно отбрасываются.
Если новая длина массива больше или равна старой длине, существующие данные копируются в массив.
Параметры
size | Новая длина массива |
fill()
void QCA::SecureArray::fill (charfillChar, int fillToPosition = -1) |
Заполняет массив данных указанным символом.
Параметры
fillChar | Символ для заполнения массива |
fillToPosition | Количество символов для заполнения. Если не указан (или равен -1 ), то заполняет массив до указанной длины |
Примечание.
Данная функция не увеличивает размер массива. Если выполнить запрос на заполнение данными больше, чем текущая длина массива, то будет заполнен текущий размер массива.
Количество символов для заполнения считается, начиная с единицы. Если выполнить запрос fill('x', 10)
, то он заполнит массив.
Примеры
toByteArray()
QByteArray QCA::SecureArray::toByteArray () const |
Копирует содержимое защищённого массива в стандартный QByteArray
.
Следует обратить внимание, что данная функция выполняет глубокое копированне данных.
Примеры
ciphertest.cpp, eventhandlerdemo.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp и rsatest.cpp.
append()
SecureArray& QCA::SecureArray::append (const SecureArray & a) |
Добавляет защищённый байтовый массив в конец этого массива.
Параметры
a | Массив, который нужно добавить к данному массиву |
Примеры
ciphertest.cpp и md5crypt.cpp.
operator==()
bool QCA::SecureArray::operator== (const MemoryRegion & other) const |
Оператор равенства.
Возвращает true
, если оба массива имеют одинаковые данные и одинаковую длину.
Параметры
other | Объект MemoryRegion для сравнения |
operator!=()
bool QCA::SecureArray::operator!= (const MemoryRegion & other) const | inline |
Оператор неравенства.
Возвращает true
, если массивы имеют различную длину или если одинаковую длину, но различные
данные.
Параметры
other | Объект MemoryRegion для сравнения |
operator+=()
SecureArray& QCA::SecureArray::operator+= (const SecureArray & a) |
Добавляет защищённый байтовый массив в конец этого массива.
Параметры
a | Массив, который нужно добавить к данному массиву |
set() [1/2]
void QCA::SecureArray::set (const SecureArray & from) | protected |
Присваивает содержимое предоставленного массива байтов данному объекту.
Параметры
from | Массив байтов для копирования |
set() [2/2]
void QCA::SecureArray::set (const QByteArray & from) | protected |
Присваивает содержимое предоставленного массива байтов данному объекту.
Параметры
from | Массив байтов для копирования |