Мне нужно встроить закрытые ключи RSA в мое приложение.
Мои ключи RSA генерируются на основе серийного номера и опции продукта.
Пример serial # 1_opt1.private (этот файл содержит ключ, который я хочу встроить в код)
serial # 1_opt1.public (если пользователю, например, реселлеру оборудования необходим доступ к ограниченной функции, я отправляю ему этот файл, чтобы разблокировать конкретную опцию)
Каждому клиенту нужен / может потребоваться свой набор ключей в зависимости от опций, которые он имеет право использовать.
В моем приложении есть стандартный набор функций, который должен быть у каждого (базовое управление оборудованием).
Мое видение заключается в том, что у стандартного набора функций нет серийного номера и встроенных ключей.
Так что ни одна из ограниченных функций не будет работать, но все стандартные вещи будут работать.
Программа будет иметь номер версии, но без серийного номера в разделе about / help
Если мне нужно включить ограниченную функцию [s], я компилирую программу, используя MSbuild, с серийным номером, сгенерированным для этого клиента в командной строке.
MSBuild возьмет серийный номер и вставит его, где я могу получить к нему доступ в своем коде
Я надеюсь, что это закончится в файле properties.settings ??? и поместите его в серийный номер с именем var, который по умолчанию будет пустым.
Теперь, когда MSBuild поместил серийный номер в правильное место, я теперь хочу, чтобы он пошел поискать файл serial # 1_opt1.private с закрытым ключом [s] и поместил его / их где-нибудь? где я могу получить к ним доступ ... но, надеюсь, не там, где их легко найти.
Когда мое приложение запускается, я использую закрытые ключи для шифрования «чего-то», и, если у пользователя есть файл с открытыми ключами, он может расшифровать это «что-то», что позволит ему использовать эту конкретную опцию.
Если у него есть все файлы с открытым ключом для всех опций, он может сделать все, что я могу с аппаратным обеспечением ... как в случае, если он испортит его, его нужно вернуть на завод для повторной калибровки.
Кто-нибудь может сказать мне, если это правильный подход?
Если нет, то какой будет правильный подход?
И если это так, как я могу заставить MSBuild выполнять эти трюки?