@fapsi
Безработный

Как средствами PHP разобрать такую структуру?

Как средствами PHP разобрать такую структуру данных (ASN.1)?
Нужна получить информацию об организации, выдавшей сертификат, о владельце ключа
Пример. Взято с Хабра

SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.7.2 (signedData)
[0] {
SEQUENCE {
INTEGER 0x01 (1 decimal)
SET {
SEQUENCE {
OBJECTIDENTIFIER 1.3.14.3.2.26 (id_sha1)
NULL
}
}
SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.7.1 (data)
[0] {
OCTETSTRING 540065007300740020006D00650073007300610067006500
}
}
[0] {
SEQUENCE {
SEQUENCE {
[0] {
INTEGER 0x02 (2 decimal)
}
INTEGER 0x00D901B8B82F74CA0E8D84485A2265E1C3
SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.1.5 (sha1WithRSAEncryption)
NULL
}
SEQUENCE {
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.3 (commonName)
UTF8String 'Test CA'
}
}
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.10 (organizationName)
UTF8String 'Test'
}
}
}
SEQUENCE {
UTCTime '150429123320Z'
UTCTime '150506123320Z'
}
SEQUENCE {
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.12 (title)
UTF8String 'Test'
}
}
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.11 (organizationalUnitName)
UTF8String 'Test'
}
}
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.10 (organizationName)
UTF8String 'Test'
}
}
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.3 (commonName)
UTF8String '[TEST] Test'
}
}
}
SEQUENCE {
SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.1.1 (rsaEncryption)
NULL
}
BITSTRING 0x308189028181009298ED87B0E9DB66AB06D18E7B1B1740109881D306F3B5CAA7FCD4FFCBA22D9848F9
1E10250FC61C455DB7A6765760E7BFBFDB66E0D7FC1F0BA1991BEEC00DAA76EE9AB8C6855DD5C8FAAFF8FD1267D
E6F2DBE5C3EB1881F49B290AADDB285A646BA9314658CC5205AAC59625951F17FBC1E7AD79FF88B3B482A432B7E20
444B0203010001 : 0 unused bit(s)
}
[3] {
SEQUENCE {
SEQUENCE {
OBJECTIDENTIFIER 2.5.29.15 (keyUsage)
OCTETSTRING 030204F0
}
SEQUENCE {
OBJECTIDENTIFIER 2.5.29.37 (extKeyUsage)
BOOLEAN TRUE
OCTETSTRING 302006082B0601050507030406082B06010505070302060A2B0601040182370A030C
}
SEQUENCE {
OBJECTIDENTIFIER 2.5.29.14 (subjectKeyIdentifier)
OCTETSTRING 0414C7058A12A4B5B73EF4E5876C34B9BB32155E9691
}
SEQUENCE {
OBJECTIDENTIFIER 2.5.29.35 (authorityKeyIdentifier)
OCTETSTRING 301680146AE7AB14AAE8B4C0A89E189D8168B1199FFB25B0
}
}
}
}
SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.1.5 (sha1WithRSAEncryption)
NULL
}
BITSTRING 0x2007EFBF72C4EDB88FB4036AB8F90E1684897FB5C50E3117CF809DB1FBC1C68BCF3F9C34517621552930E9F
3B739F54CE081C1047067C50CAE0780B244CB183F0E6867BCEBAA95758F7C18465BAD963070CA630999548687270AD6DE3
6266A856453B5032259727F3E464360C2AAEC709EF70F13F5D66649ECFE7A5219D12740 : 0 unused bit(s)
}
}
SET {
SEQUENCE {
INTEGER 0x01 (1 decimal)
SEQUENCE {
SEQUENCE {
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.3 (commonName)
UTF8String 'Test CA'
}
}
SET {
SEQUENCE {
OBJECTIDENTIFIER 2.5.4.10 (organizationName)
UTF8String 'Test'
}
}
}
INTEGER 0x00D901B8B82F74CA0E8D84485A2265E1C3
}
SEQUENCE {
OBJECTIDENTIFIER 1.3.14.3.2.26 (id_sha1)
NULL
}
SEQUENCE {
OBJECTIDENTIFIER 1.2.840.113549.1.1.1 (rsaEncryption)
NULL
}
OCTETSTRING 571404A32C015B61B957F002950A33E09475CA66DED090938AE21AFE6E0B39C9023850DE7C38482736E97
BFF6CB4DBB0605CCD787854525499A9C42B28D7BAAD19B26D0D43B6231B5EDCB23E70FFB4681D1C3B6FD5A40D508F55
457E047D2CC5C3803A2327D2E2B41A052ED13E3A1E9788D912AEB35649E93497EF4770E1669E
}
}
}
}
}
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Flying
Есть множество готовых библиотек для этой задачи
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы