Определение начального запуска функции, ключи Code и другие вопросы
Добрый день,
Подскажите пожалуйста,
существует ли легальная возможность для исполняемого внутри ключа кода узнать выполняется ли он первый раз после включения ключа или же это повторные запуски?
Также очень хочется отключить все что связано с шифрованием обмена между ключом и драйвером, поскольку эта штука очень сильно затормаживает работу программы, в частности я реализовал протокол обмена SSL между хранимым кодом и программой, и нету никакой необходимости чтото шифровать повторно.
Кроме того, я проверил скорость обмена данными с ключом, получается порядка 20килобайт в секунду (это код который ничего не делает, просто пустая функция)! Учитывая что алгоритм AES внутри ключа - исполняемого кода работает со скоростью больше мегабайта в секунду, непонятно куда уходит вся производительность. Так что если есть возможность ускорить все это , прошу указать на примерах как именно, примутся даже варианты не гарантирующие стабильной работы и/или не проверенные разработчиками.
Еще один вопрос связан с генератором случайных чисел встроенным в апи ключа, что является источником случайности в ключе? Грубо говоря это реализация накапливающая энтропию или просто генератор бесконечной псевдослучайной последовательности? Какая вероятность того, что после сброса ключа этот генератор выдаст ту же последовательность что и в прошлый раз?
И еще маленький вопрос - сам ключ при сбросе как то инициализирует ОЗУ память кода пользователя? Тоесть, можно ли рассчитывать что память алгоритма будет забита при сбросе нулями например?
PS вот картинка иллюстрирующая тормоза : http://neekeetos.embedders.org/transfer.jpg,
вертикальная шкала это задержка отклика( в милисекундах) брелка с пустой функцией, горизонтальная - размер буфера приема в байтах, в названии линий цифра возле W означает размер буфера передачи. Это картинка с ноутбука с процессором Core2duo 1,6Ghz, чуть быстрее работает на рабочем компьютере, примерно пропорционально частоте процессора, те в ~2 раза. На ноутбуке если пересчитать скорость передачи выходит 12кб/с максимум, на компьютере порядка 25кб/с