Статус: Новичок
Группы: Участники
Зарегистрирован: 27.01.2021(UTC) Сообщений: 3
|
Автор: Санчир Момолдаев Добрый день! опишите вашу текущую проблему/ошибку укажите используемые версии php csp и cades Пока ответа нет, продолжаю разбираться. Видимо, дело в некорректном патч файле по адресу - https://www.cryptopro.ru...s/php7_support.patch.zipПри его применении создается файл PHPCadesCPSignedData.cpp.rej , что легко не заметить сразу, со следующим содержимым Код:
--- PHPCadesCPSignedData.cpp (revision 161471)
+++ PHPCadesCPSignedData.cpp (working copy)
@@ -66,20 +70,26 @@
int lVal;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OOll", &zHashedData,
- hash_dat_class_entry, &zSigner, sig_ce,
+ hashed_data_ce, &zSigner, signer_ce,
&lCadesType, &lEncodingType) == FAILURE)
RETURN_WITH_EXCEPTION(E_INVALIDARG);
CadesType = (CADESCOM_CADES_TYPE)lCadesType;
EncodingType = (CAPICOM_ENCODING_TYPE)lEncodingType;
+
+ zend_object *zobj = Z_OBJ_P(getThis());
+ signed_data_obj *obj =
+ (signed_data_obj *)((char *)zobj - XtOffsetOf(signed_data_obj, zobj));
- sig_obj *pSigner =
- (sig_obj *)zend_object_store_get_object(zSigner TSRMLS_CC);
- hash_dat_obj *pHashedData =
- (hash_dat_obj *)zend_object_store_get_object(zHashedData TSRMLS_CC);
+ zobj = Z_OBJ_P(zSigner);
+ signer_obj *pSigner =
+ (signer_obj *)((char *)zobj - XtOffsetOf(signer_obj, zobj));
- sig_dat_obj *obj =
- (sig_dat_obj *)zend_object_store_get_object(getThis() TSRMLS_CC);
+ zobj = Z_OBJ_P(zHashedData);
+ hashed_data_obj *pHashedData =
+ (hashed_data_obj *)((char *)zobj - XtOffsetOf(hashed_data_obj, zobj));
+
+
HR_ERRORCHECK_RETURN(obj->m_pCppCadesImpl->SignHash(
pSigner->m_pCppCadesImpl, pHashedData->m_pCppCadesImpl, CadesType,
EncodingType, &bVal));
Видимо, пропатчить не удается следующий фрагмент - Код:
int lVal;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OOll", &zHashedData,
- hash_dat_class_entry, &zSigner, sig_ce,
+ hashed_data_ce, &zSigner, signer_ce,
&lCadesType, &lEncodingType) == FAILURE)
RETURN_WITH_EXCEPTION(E_INVALIDARG);
ибо в файле PHPCadesCPSignedData.cpp на этом месте Код:
int lVal;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Olll", &zSigner,
signer_ce, &lCadesType, &lDetached,
&lEncodingType) == FAILURE)
RETURN_WITH_EXCEPTION(E_INVALIDARG);
Пока сам смотрю как с этим бороться. Но от помощи разработчиков не откажусь.
|