Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet69/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   65   66   67   68   69   70   71   72   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ПриМеЧание
Вспомогательный.класс.System Reflection AssemblyName.позволяет.легко.генери-
ровать.имя.для.сборки,.а.также.получать.отдельные.части.имени.сборки .Он.поддер-
живает.ряд.открытых.экземплярных.свойств:.CultureInfo,.FullName,.KeyPair,.Name.и.
Version.—.и.предоставляет.открытые.методы.экземпляров,.такие.как.GetPublicKey,.
GetPublicKeyToken,.SetPublicKey.и.SetPublicKeyToken 
В главе 2 я показал, как назначить имя файлу сборки, как задать номера версии 
и идентификатор регионального стандарта. У сборки с нестрогим именем атрибуты 
номера версии и региональных стандартов могут быть включены в метаданные ма-
нифеста. Однако в этом случае CLR всегда игнорирует номер версии, а при поиске 
сопутствующих сборок использует лишь идентификатор региональных стандар-
тов. Поскольку сборки с нестрогими именами всегда развертываются в закрытом 
режиме, для поиска файла сборки в базовом каталоге приложения или в одном из 


98
Глава.3 .Совместно.используемые.сборки.и.сборки.со.строгим.именем
его подкаталогов, указанном атрибутом 
privatePath
конфигурационного XML-
файла, CLR просто берет имя сборки (добавляя к нему расширение 
DLL
или 
EXE
).
Кроме имени файла, у сборки со строгим именем есть номер версии и идентифи-
катор региональных стандартов. Кроме того, она подписана при помощи закрытого 
ключа издателя.
Первый этап создания такой сборки — получение ключа при помощи утилиты 
Strong Name (
SN exe
), поставляемой в составе .NET Framework SDK и Microsoft 
Visual Studio. Эта утилита поддерживает множество функций, которыми пользу-
ются, задавая в командной строке соответствующие параметры. Заметьте: все пара-
метры командной строки 
SN exe
чувствительны к регистру. Чтобы сгенерировать 
пару ключей, выполните следующую команду:
SN –k MyCompany.snk
Эта команда заставит 
SN exe
создать файл 
MyCompany snk
, содержащий открытый 
и закрытый ключи в двоичном формате.
Числа, образующие открытый ключ, очень велики. При необходимости после 
создания этого файла можно использовать 
SN exe
, чтобы увидеть открытый ключ. 
Для этого нужно выполнить 
SN exe
дважды: сначала с параметром 
–p
, чтобы создать 
файл, содержащий только открытый ключ (
MyCompany.PublicKey
)
1
:
SN –p MyCompany.keys MyCompany.PublicKey
Затем 
SN exe
выполняется с параметром 
–tp
с указанием файла, содержащего 
открытый ключ:
SN –tp MyCompany.PublicKey
На своем компьютере я получил следующий результат:
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.17929
Copyright (c) Microsoft Corporation. All rights reserved.
Public key (hash algorithm: sha256):
00240000048000009400000006020000002400005253413100040000010001003f9d621b702111
850be453b92bd6a58c020eb7b804f75d67ab302047fc786ffa3797b669215afb4d814a6f294010
b233bac0b8c8098ba809855da256d964c0d07f16463d918d651a4846a62317328cac893626a550
69f21a125bc03193261176dd629eace6c90d36858de3fcb781bfc8b817936a567cad608ae672b6
1fb80eb0
Public key token is 3db32f38c8b42c9a
При этом невозможно заставить 
SN exe
аналогичным образом отобразить за-
крытый ключ.
1
В этом примере используется механизм Enhanced Strong Naming, появившийся в .NET 
Framework 4.5. Чтобы создать сборку, совместимую с предыдущими версиями .NET Framework, 
вам также придется создать подпись другой стороны (counter-signature) с использованием 
атрибута AssemblySignatureKey. За подробностями обращайтесь по адресу http://msdn.
microsoft.com/en-us/library/hh415055(v=vs.110).aspx.


99
Назначение.сборке.строгого.имени
Большой размер открытых ключей затрудняет работу с ними. Чтобы облегчить 
жизнь разработчику (и конечному пользователю), были созданы 
маркеры от-
крытого ключа
. Маркер открытого ключа — это 64-разрядный хеш-код открытого 
ключа. Если вызвать утилиту 
SN exe
с параметром 
–tp
, то после значения ключа 
она выводит соответствующий маркер открытого ключа.
Теперь мы знаем, как создать криптографическую пару ключей, и получение 
сборки со строгим именем не должно вызывать затруднений. При компиляции 
сборки необходимо задать компилятору параметр 
/keyfile:
имя_файла
:
csc /keyfile:MyCompany.snk Program.cs
Обнаружив в исходном тексте этот параметр, компилятор C# открывает задан-
ный файл (
MyCompany snk
), подписывает сборку закрытым ключом и встраивает 
открытый ключ в манифест сборки. Заметьте: подписывается лишь файл сборки, 
содержащий манифест, другие файлы сборки нельзя подписать явно.
В Visual Studio новая пара ключей создается в окне свойств проекта. Для этого 
перейдите на вкладку 
Signing
, установите флажок 
Sign
the
assembly
, а затем в поле 
со списком 
Choose
a
strong
name
key
file
выберите вариант 

.
Слова «подписание файла» означают здесь следующее: при компоновке сборки 
со строгим именем в таблицу метаданных манифеста 
FileDef
заносится список всех 
файлов, составляющих эту сборку. Каждый раз, когда к манифесту добавляется имя 
файла, рассчитывается хеш-код содержимого этого файла, и полученное значение 
сохраняется вместе с именем файла в таблице 
FileDef
. Можно заменить алгоритм 
хеширования, используемый по умолчанию, вызвав 
AL exe
с параметром 
/algid
или задав на уровне сборки следующий атрибут, определяемый пользователем, — 
System.Reflection.AssemblyAlgorithmIdAttribute
. По умолчанию хеш-код вы-
числяется по алгоритму SHA-1.
После компоновки PE-файла с манифестом рассчитывается хеш-код всего со-
держимого этого файла (за исключением подписи Authenticode Signature, строгого 
имени сборки и контрольной суммы заголовка PE), как показано на рис. 3.1. Для 
этой операции применяется алгоритм SHA-1, здесь его нельзя заменить никаким 
другим. Значение хеш-кода подписывается закрытым ключом издателя, а по-
лученная в результате цифровая подпись RSA заносится в зарезервированный 
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish