Мне всегда было интересно узнать, что находится под капотом популярного менеджера паролей KeePass 2. Сегодня я решил этим заняться. Благо, что KeePass 2 распространяется по свободной лицензии GNU, которая обязывает публиковать исходный код проектов, в том числе, если на их базе было построено что-то ещё. Исходный код можно скачать zip-архивом с сайта SourceForge.net.
Казалось бы, качай, компилируй, изучай! Но не все так просто. При попытки компиляции скачанных исходников Visual Studio выдаст следующую ошибку:
Не удалось импортировать следующий файл ключей: KeePass.pfx. Возможно, файл ключа защищен паролем. Чтобы исправить эту ошибку, повторите попытку импорта сертификата, или вручную установите сертификат в CSP сильного имени с использованием следующего имени контейнера ключей: VS_KEY_66D0808EE0476674
и
Отменен импорт файла ключа "KeePass.pfx".
Эти ошибки появляются появляются из-за того, что после сборки проекта Visual Studio пытается подписать сборку ключом разработчиков, который в оригинале должен храниться как раз в этом файле. Но в распространяемых исходниках этого ключа, естественно, нет. Иначе любой желающий мог мы внедрить в код любую закладку, подписать его сертификатами разработчиков и выдать свой “троянский” менеджер паролей за оригинальный KeePass.
Отсутствие ключа в KeePass.pfx не убирает желания скомпилировать исходники. После непродолжительных поисков в интернете по запросу KeePass.pfx, я нашёл решение этой проблемы. В свойствах решения “KeePass” и “KeePassLib”, во вкладке “Подписывание” необходимо убрать галочку “Подписать сборку”.
Помимо этого, вкладка “События сборки” в поле “Командная строка события после сборки” содержит следующую команду:
"$(FrameworkSDKDir)bin\sgen.exe" /assembly:"$(TargetPath)" /force /nologo /compiler:/keycontainer:VS_KEY_27A70973F3FC3787 /compiler:/delaysign-
Её тоже необходимо удалить.
После проведения всех описанных выше манипуляций сборка KeePass 2 из исходников должна пройти успешно. Всем хороших форков ;)
Полезная статья? Их будет больше, если вы поддержите меня!