Поделиться через


Интерфейс IX509PublicKey (certenroll.h)

Интерфейс IX509PublicKey представляет открытый ключ в паре открытых и закрытых ключей. Открытый ключ включается в запрос сертификата, отправляемый в центр сертификации (ЦС), и в сертификат, полученный от ЦС. Дополнительные сведения см. в разделе Пары открытого и закрытого ключей.

Элемент управления регистрацией сертификатов передает открытый и закрытый ключи в массивы байтов. В следующем примере сертификата показан 1024-разрядный открытый ключ, созданный с помощью алгоритма подписи RSA, XCN_OID_RSA_RSA (1.2.840.113549.1.1.1).


...
Public Key Algorithm:
    Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
    Algorithm Parameters:
    05 00
Public Key Length: 1024 bits
Public Key: UnusedBits = 0
    0000  30 81 89 02 81 81 00 8f  e2 41 2a 08 e8 51 a8 8c
    0010  b3 e8 53 e7 d5 49 50 b3  27 8a 2b cb ea b5 42 73
    0020  ea 02 57 cc 65 33 ee 88  20 61 a1 17 56 c1 24 18
    0030  e3 a8 08 d3 be d9 31 f3  37 0b 94 b8 cc 43 08 0b
    0040  70 24 f7 9c b1 8d 5d d6  6d 82 d0 54 09 84 f8 9f
    0050  97 01 75 05 9c 89 d4 d5  c9 1e c9 13 d7 2a 6b 30
    0060  91 19 d6 d4 42 e0 c4 9d  7c 92 71 e1 b2 2f 5c 8d
    0070  ee f0 f1 17 1e d2 5f 31  5b b1 9c bc 20 55 bf 3a
    0080  37 42 45 75 dc 90 65 02  03 01 00 01
...

Открытый ключ состоит из 1024-разрядного модуля, созданного путем умножения двух больших простого числа и 96-разрядной экспоненты. Алгоритм RSA использует экспоненту и простой числа в стандартной формуле Евклида для создания закрытого ключа. Модуль и степень можно более четко определить, изучив следующие выходные данные ASN.1 того же открытого ключа. Так как модуль начинается с байта (0x8F), для которого задан бит знака, 0x00 добавляется в начало, чтобы целое число оставалось без знака. Другие алгоритмы открытых ключей создают открытые ключи, состоящие из разных составных частей.


30 81 89                                  ; SEQUENCE (89 Bytes)
   02 81 81                               ; INTEGER (81 Bytes)
   |  00                                 // Modulus 
   |  8f e2 41 2a 08 e8 51 a8  8c b3 e8 53 e7 d5 49 50
   |  b3 27 8a 2b cb ea b5 42  73 ea 02 57 cc 65 33 ee
   |  88 20 61 a1 17 56 c1 24  18 e3 a8 08 d3 be d9 31
   |  f3 37 0b 94 b8 cc 43 08  0b 70 24 f7 9c b1 8d 5d
   |  d6 6d 82 d0 54 09 84 f8  9f 97 01 75 05 9c 89 d4
   |  d5 c9 1e c9 13 d7 2a 6b  30 91 19 d6 d4 42 e0 c4
   |  9d 7c 92 71 e1 b2 2f 5c  8d ee f0 f1 17 1e d2 5f
   |  31 5b b1 9c bc 20 55 bf  3a 37 42 45 75 dc 90 65
   02 03                                  ; INTEGER (3 Bytes)
      01 00 01                           // Exponent


Наследование

Интерфейс IX509PublicKey наследуется от интерфейса IDispatch . IX509PublicKey также имеет следующие типы элементов:

Методы

Интерфейс IX509PublicKey содержит следующие методы.

 
IX509PublicKey::ComputeKeyIdentifier

Создает идентификатор из 160-разрядного хэша SHA-1 открытого ключа.
IX509PublicKey::get_Algorithm

Извлекает идентификатор объекта (OID) для алгоритма открытого ключа.
IX509PublicKey::get_EncodedKey

Извлекает массив байтов, содержащий открытый ключ.
IX509PublicKey::get_EncodedParameters

Извлекает массив байтов, содержащий параметры, связанные с алгоритмом открытого ключа.
IX509PublicKey::get_Length

Извлекает длину открытого ключа.
IX509PublicKey::Initialize

Инициализирует объект из идентификатора объекта алгоритма открытого ключа (OID) и из массивов байтов, содержащих открытый ключ и связанные параметры, если таковые есть.
IX509PublicKey::InitializeFromEncodedPublicKeyInfo

Инициализирует объект из массива байтов, содержащего открытый ключ.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header certenroll.h

См. также раздел

Интерфейсы CertEnroll

IDispatch

IX509PrivateKey

Пары открытого и закрытого ключей