Приложение представляет собой ядро, основанное на Apache Felix и для полной функциональности требует обязательные (required) jar-модули (OSGi bundles) при запуске. Они должны находиться в src/main/resources/kncabundles при сборке. Также для сборки требуется криптопровайдер НУЦ KalkanCrypt.
ncalayer.der представляет собой подписанный CMS (в оригинале - JSON-файл), изначально входит в состав приложения и распаковывается при первом запуске. В дальнейшем скачивается из указанного в updurl адреса. Содержит служебную информацию, такую как:
- доступность обновлений как для ядра, так и для бандлов;
- bundles - разрешенные бандлы;
- syspkgs - экспортируемые пакеты ядром (с версии 1.1).
При запуске (с версии 1.1 также и при установке) бандлы из кэша сверяются со списком из ncalayer.der, а при несоответствиях удаляются.
Бандлы идентифицируются по:
- symname - Bundle-SymbolicName;
- csernum - Code-signing certificate's serial number;
- chash - Code-signing certificate's hash with SHA-256.
Обязательные параметры:
-
name - название бандла для отображения в окне "Управление модулями";
-
version - номер версии;
-
info - краткая информация об обновлении;
-
url - адрес для скачивания бандла;
-
hash - хэш бандла.
Также у бандлов могут быть опциональные параметры, такие как:
- hidden - бандл скрыт в окне "Управления модулями", но его можно установить вручную. А обновляться будет автоматически;
- required - бандл является обязательным для успешного запуска приложения.
trusted.jks содержит сертификаты КУЦ и НУЦ, а также сертификаты для верификации файла обновления (ncalayer.der). То есть до истечения срока действия сертификата подписанта необходимо заранее включить его новый сертификат и обновить приложение. Некоторое время файл обновления будет подписываться старым ключом, а в дальнейшем уже будет использоваться новый ключ.