Как открытый ключ Ecma сопоставляется с реальным открытым ключом? - PullRequest
1 голос
/ 22 мая 2019

В основном все сборки Microsoft, которые считаются стандартной библиотекой, такой как mscorlib.dll, включают в себя поддельный 16-байтовый открытый ключ

 00000000000000000400000000000000

Он определен в ECMA-335 (спецификации CLI) как Ecma / Standard PublicКлюч.Он используется для вычисления токена открытого ключа b77a5c561934e089.Однако, чтобы создать, а затем проверить подпись сборки (строгое имя), вам нужны реальные ключи.Реальный открытый ключ RSA всегда имеет длину не менее 128 байт.Так где это?

Многие такие сборки включают AssemblyKeyFileAttribute с файлом EcmaPublicKey.snk.Но этот файл содержит только 16 байтов для самого открытого ключа Ecma, то есть он используется только для сборки сборки, а не для загрузки.Кроме того, такие сборки используют как 128-байтовые, так и 256-байтовые сигнатуры строгих имен, что означает, что открытый ключ Ecma должен отображаться как минимум в две разные пары ключей RSA разных размеров.

Я заметил, что в проекте Mono используется конфигурацияфайлы, в которых b77a5c561934e089 сопоставлен с реальным открытым ключом, но Windows, вероятно, обрабатывает его по-другому.Я нашел несколько старых сообщений, связанных с этой проблемой, но ни один не дает никаких законных ответов.

...