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


Кодирование имени субъекта

При инициализации объекта IX500DistinguishedName с отличительным именем для идентификации субъекта запроса сертификата создается последовательность абстрактного синтаксиса (ASN.1) в кодировке DISTINGUISHED ENCODING RULES (DER). Например, предположим, что различающееся имя субъекта состоит из следующих относительных различающихся имен (RDN):

E=Administrator@jdomcsc.nttest.microsoft.com
CN=Administrator
CN=Users
DC=jdomcsc
DC=nttest
DC=microsoft
DC=com

Объект **IX500DistinguishedName** создает следующую последовательность в кодировке DER (ASN.1). Обратите внимание, что последовательность закодирована в обратном порядке. Этот пример является производным отраздела PKCS #7 Renewal Encoded ASN.1 .
0a0d: 30 81 c4          ; SEQUENCE (c4 Bytes)
0a10: |  31 13          ; SET (13 Bytes)
0a12: |  |  30 11               ; SEQUENCE (11 Bytes)
0a14: |  |     06 0a            ; OBJECT_ID (a Bytes)
0a16: |  |     |  09 92 26 89 93 f2 2c 64  01 19
      |  |     |     ; 0.9.2342.19200300.100.1.25 Domain Component (DC)
0a20: |  |     16 03        ; IA5_STRING (3 Bytes)
0a22: |  |        63 6f 6d                                          ; com
      |  |           ; "com"
0a25: |  31 19          ; SET (19 Bytes)
0a27: |  |  30 17               ; SEQUENCE (17 Bytes)
0a29: |  |     06 0a            ; OBJECT_ID (a Bytes)
0a2b: |  |     |  09 92 26 89 93 f2 2c 64  01 19
      |  |     |     ; 0.9.2342.19200300.100.1.25 Domain Component (DC)
0a35: |  |     16 09            ; IA5_STRING (9 Bytes)
0a37: |  |        6d 69 63 72 6f 73 6f 66  74                       ; microsoft
      |  |           ; "microsoft"
0a40: |  31 16          ; SET (16 Bytes)
0a42: |  |  30 14               ; SEQUENCE (14 Bytes)
0a44: |  |     06 0a            ; OBJECT_ID (a Bytes)
0a46: |  |     |  09 92 26 89 93 f2 2c 64  01 19
      |  |     |     ; 0.9.2342.19200300.100.1.25 Domain Component (DC)
0a50: |  |     16 06            ; IA5_STRING (6 Bytes)
0a52: |  |        6e 74 74 65 73 74                                 ; nttest
      |  |           ; "nttest"
0a58: |  31 17          ; SET (17 Bytes)
0a5a: |  |  30 15               ; SEQUENCE (15 Bytes)
0a5c: |  |     06 0a            ; OBJECT_ID (a Bytes)
0a5e: |  |     |  09 92 26 89 93 f2 2c 64  01 19
      |  |     |     ; 0.9.2342.19200300.100.1.25 Domain Component (DC)
0a68: |  |     16 07            ; IA5_STRING (7 Bytes)
0a6a: |  |        6a 64 6f 6d 63 73 63                              ; jdomcsc
      |  |           ; "jdomcsc"
0a71: |  31 0e          ; SET (e Bytes)
0a73: |  |  30 0c               ; SEQUENCE (c Bytes)
0a75: |  |     06 03            ; OBJECT_ID (3 Bytes)
0a77: |  |     |  55 04 03
      |  |     |     ; 2.5.4.3 Common Name (CN)
0a7a: |  |     13 05            ; PRINTABLE_STRING (5 Bytes)
0a7c: |  |        55 73 65 72 73                                    ; Users
      |  |           ; "Users"
0a81: |  31 16          ; SET (16 Bytes)
0a83: |  |  30 14               ; SEQUENCE (14 Bytes)
0a85: |  |     06 03            ; OBJECT_ID (3 Bytes)
0a87: |  |     |  55 04 03
      |  |     |     ; 2.5.4.3 Common Name (CN)
0a8a: |  |     13 0d            ; PRINTABLE_STRING (d Bytes)
0a8c: |  |        41 64 6d 69 6e 69 73 74  72 61 74 6f 72           ; Administrator
      |  |           ; "Administrator"
0a99: |  31 39          ; SET (39 Bytes)
0a9b: |     30 37               ; SEQUENCE (37 Bytes)
0a9d: |        06 09            ; OBJECT_ID (9 Bytes)
0a9f: |        |  2a 86 48 86 f7 0d 01 09  01
      |        |     ; 1.2.840.113549.1.9.1 Email Address (E)
0aa8: |        16 2a            ; IA5_STRING (2a Bytes)
0aaa: |           41 64 6d 69 6e 69 73 74  72 61 74 6f 72 40 6a 64  ; Administrator@jd
0aba: |           6f 6d 63 73 63 2e 6e 74  74 65 73 74 2e 6d 69 63  ; omcsc.nttest.mic
0aca: |           72 6f 73 6f 66 74 2e 63  6f 6d                    ; rosoft.com
      |              ; "Administrator@jdomcsc.nttest.microsoft.com"

Как описано в разделе "Имена субъектов", каждое RDN в различаемом имени состоит из набора атрибутов, а каждый атрибут содержит идентификатор объекта (OID) и значение. Чтобы понять, как объект IX500DistinguishedName кодирует различающееся имя, рассмотрите общее имя CN=Users.

0a73: |  |  30 0c               ; SEQUENCE (c Bytes)
0a75: |  |     06 03            ; OBJECT_ID (3 Bytes)
0a77: |  |     |  55 04 03
      |  |     |     ; 2.5.4.3 Common Name (CN)
0a7a: |  |     13 05            ; PRINTABLE_STRING (5 Bytes)
0a7c: |  |        55 73 65 72 73                                    ; Users
      |  |           ; "Users"

Синтаксис передачи DER объекта ASN.1 всегда содержит тип, длину и триплет значения, а каждое поле в триплете содержит один или несколько байтов. При кодировании CN=Users состоит из OID и строкового значения. Точечная десятичная нотация cn OID — 2.5.4.3, а строковое значение — Users. Строковое значение представлено в виде PRINTABLE_STRING типа данных. Числовое значение типа, связанное с OBJECT_ID , всегда 0x06, а числовой тип, связанный с PRINTABLE_STRING , всегда 0x13. Длина общего имени Users составляет 0x05 байтов. Длина идентификатора OID составляет 0x03 байтов, а его значение равно 0x55 0x04 0x03.

Примечание

Чтобы преобразовать первые две цифры OID 2.5.4.3 в шестнадцатеричное значение 0x55, умножьте первую цифру OID на 40 (2 x 40) и добавьте вторую цифру (5) перед преобразованием в шестнадцатеричное.

 

PKCS #7 Обновление ASN.1

Примеры запросов

Имена субъектов