Я использую phpseclib для анализа манифеста приложения Apple (для покупок в приложении).
Я могу разобрать его в C # с библиотекой ASN1 Liping Dai и все, как ожидалось.
Также у меня есть два веб-хостинга: «A» с php 5.4.45 и OpenSSL 1.0.1p 9 июля 2015 года и «B» с php 5.5.27 OpenSSL 1.0.1e-fips 11 февраля 2013 года.
Не уверен, что винить, но на хосте «A» phpseclib / ASN1 анализирует манифест из строки байтов, как и ожидалось, в то время как на новом хосте «B» я столкнулся со странной проблемой. Все значения BIGINT (type = integer) были проанализированы в Math_Bigint в режиме MATH_BIGINTEGER_MODE_GMP (phpseclib / Math / BigInteger.php). Я симулировал отладку в c # и php и обнаружил, что, хотя структура верна, значения int неверны — были некоторые значения ресурсов, которые дали неверные значения int.
Я решил это, комментируя MATH_BIGINTEGER_MODE_GMP в конструкторе phpseclib / Math / BigInteger.php :: Math_BigInteger, и таким образом переключил его в режим MATH_BIGINTEGER_MODE_BCMATH. Теперь это работает как на хосте «A». Но это похоже на магию, и я ненавижу магию в коде. Кто-нибудь сталкивался с этим?
Задача ещё не решена.
Других решений пока нет …