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



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


раздел PE-файла (при хешировании PE-файла этот раздел исключается), и в 
CLR-заголовок PE-файла записывается адрес, по которому встроенная цифровая 
подпись находится в файле.
В этот PE-файл также встраивается открытый ключ издателя (он записывается 
в таблицу 
AssemblyDef
метаданных манифеста). Комбинация имени файла, версии 
сборки, региональных стандартов и значения открытого ключа составляет строгое 
имя сборки, которое гарантированно является уникальным. Две разных компании 
ни при каких обстоятельствах не смогут создать две одинаковые сборки, скажем, 
с именем 
Calculus
, с той же парой ключей (без явной передачи ключей).
Теперь сборка и все ее файлы готовы к упаковке и распространению.


100
Глава.3 .Совместно.используемые.сборки.и.сборки.со.строгим.именем
рис. 3.1.
.Подписание.сборки
Как отмечено в главе 2, при компиляции исходного текста компилятор обна-
руживает все типы и члены, на которые ссылается исходный текст. Также ком-
пилятору необходимо указать все сборки, на которые ссылается данная сборка. 
В случае компилятора C# для этого применяется параметр 
/reference
. В задачу 
компилятора входит внедрение таблицы метаданных 
AssemblyRef
в результи-
рующий управляемый модуль. Каждая запись таблицы метаданных 
AssemblyRef
описывает файл сборки, на которую ссылается данная сборка, и состоит из имени 
файла сборки (без расширения), номера версии, регионального стандарта и значе-
ния открытого ключа.
ВниМание
Поскольку.значение.открытого.ключа.велико,.в.том.случае,.когда.сборка.ссылается.на.
множество.других.сборок,.значения.открытых.ключей.могут.занять.значительную.часть.
результирующего.файла .Для.экономии.места.в.компании.Microsoft.хешируют.откры-
тый.ключ.и.берут.последние.8.байт.полученного.хеш-кода .В.таблице.AssemblyRef.на.
самом.деле.хранятся.именно.такие.усеченные.значения.открытого.ключа.—.маркеры.
отрытого.ключа .В.общем.случае.разработчики.и.конечные.пользователи.намного.
чаще.встречаются.с.маркерами,.чем.с.полными.значениями.ключа 
Вместе.с.тем.нужно.иметь.в.виду,.что.среда.CLR.никогда.не.использует.маркеры.от-
крытого.ключа.в.процессе.принятия.решений,.касающихся.безопасности.или.доверия,.
потому.что.одному.маркеру.может.соответствовать.несколько.открытых.ключей 
Далее приведены метаданные таблицы 
AssemblyRef
(полученные средствами 
ILDasm exe
) для файла 
MultiFileLibrary dll
, обсуждавшегося в главе 2:


101
Назначение.сборке.строгого.имени
AssemblyRef #1 (23000001)
Token: 0x23000001
Public Key or Token: b7 7a 5c 56 19 34 e0 89
Name: mscorlib
Version: 4.0.0.0
Major Version: 0x00000004
Minor Version: 0x00000000
Build Number: 0x00000000
Revision Number: 0x00000000
Locale:
HashValue Blob:
Flags: [none] (00000000)
Из этих сведений видно, что файл 
MultiFileLibrary dll
ссылается на тип, располо-
женный в сборке со следующими атрибутами:
"MSCorLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
К сожалению, в утилите 
ILDasm exe
используется термин 
Locale
, хотя на самом 
деле там должно быть слово 
Culture
.
Взглянув на содержимое таблицы метаданных 
AssemblyDef
файла 
MultiFileLibrary 
dll
, мы увидим следующее:
Assembly
------------------------------------
Token: 0x20000001
Name : MultiFileLibrary
Public Key :
Hash Algorithm : 0x00008004
Version: 3.0.0.0
Major Version: 0x00000003
Minor Version: 0x00000000
Build Number: 0x00000000
Revision Number: 0x00000000
Locale:
Flags : [none] (00000000)
Это эквивалентно следующей строке:
"MultiFileLibrary, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null"
Здесь открытый ключ не определен, поскольку сборка 
MultiFileLibrary dll
, соз-
данная в главе 2, не была подписана открытым ключом и, следовательно, является 
сборкой с нестрогим именем. Если бы я создал файл с ключами при помощи ути-
литы 
SN exe
, а затем скомпилировал сборку с параметром 
/keyfile
, то получилась 
бы подписанная сборка. Если просмотреть метаданные полученной таким образом 
сборки при помощи утилиты 
ILDasm exe
, в соответствующей записи таблицы 
AssemblyDef
обнаружится заполненное поле 
Public Key
, говорящее о том, что это 
сборка со строгим именем. Кстати, запись таблицы 
AssemblyDef
всегда хранит пол-
ное значение открытого ключа, а не его маркер. Полный открытый ключ гарантирует 


102
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   66   67   68   69   70   71   72   73   ...   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