PHP-PKPass Не работает с iOS 7. Добавьте дату и время подписания прохода с использованием атрибута времени подписи S/MIME в PHP.

Привет, я новичок в ios 7 и php. Я пытался заставить этот класс PHP-PKPass работать с ios 7 он отлично работает с моим браузером Safari. Я могу визуализировать билет, когда пытаюсь загрузить пакет, чтобы добавить его в свою сберегательную книжку. Safari сообщает мне: «Не удается загрузить файл». ://www.rivertechservices.com/passbookpass/index.php" rel="nofollow">пример работы с моими сертификатами я просмотрел журналы телефона, там написано:

Предоставленный идентификатор passTypeIdentifier или teamIdentifier может не соответствовать вашему сертификату, или цепочка доверия сертификата не может быть проверена.

все мои сертификаты работают нормально, json правильный, так как я могу визуализировать его на своем Mac, исследование, которое я провел до сих пор, указывает на то, что пакет необходимо подписать с помощью даты и времени сервера, не применяемого в ios 6, но принудительного в ios 7

кто-нибудь может помочь с добавлением даты и времени подписания прохода с использованием атрибута времени подписи S/MIME через php в текущий класс php?

 protected function createSignature($manifest) {
            $paths = $this->paths();

            file_put_contents($paths['manifest'], $manifest);

            $pkcs12 = file_get_contents($this->certPath);
            $certs = array();
            if(openssl_pkcs12_read($pkcs12, $certs, $this->certPass) == true) {
                    $certdata = openssl_x509_read($certs['cert']);
                    $privkey = openssl_pkey_get_private($certs['pkey'], $this->certPass );

                    if(!empty($this->WWDRcertPath)){

                            if(!file_exists($this->WWDRcertPath)){
                                    $this->sError = 'WWDR Intermediate Certificate does not exist';
                                    return false;
                            }

                            openssl_pkcs7_sign($paths['manifest'], $paths['signature'], $certdata, $privkey, array(), PKCS7_BINARY | PKCS7_DETACHED, $this->WWDRcertPath);
                    }else{
                            openssl_pkcs7_sign($paths['manifest'], $paths['signature'], $certdata, $privkey, array(), PKCS7_BINARY | PKCS7_DETACHED);
                    }

                    $signature = file_get_contents($paths['signature']);
                    $signature = $this->convertPEMtoDER($signature);
                    file_put_contents($paths['signature'], $signature);

                    return true;
            } else {
                    $this->sError = 'Could not read the certificate';
                    return false;
            }
    }

person user3008885    schedule 19.11.2013    source источник


Ответы (2)


Попробуйте передать свои сертификаты и ключи в виде ссылок на файлы. Например.

openssl_pkcs7_sign($paths['manifest'],
            $paths['signature'],
            'file://' . $certs['cert'],
            array('file://' . $certs['cert'], $this->certPass),
            array(),
            PKCS7_BINARY|PKCS7_DETACHED,
            $this->WWDRcertPath);
person PassKit    schedule 19.11.2013
comment
я все еще получаю ту же ошибку, похоже, Apple что-то изменила, я попробовал новую библиотеку passkit cdn .simon.waldherr.eu/projects/passkit.php та же ошибка Не удается загрузить файл - person user3008885; 20.11.2013
comment
О чем говорят журналы консоли устройства (включите ведение журнала Passbook в меню разработчика на устройстве и мониторьте в Xcode). Если вы не видите журналы устройства, можете опубликовать ссылку на свой пакет .pkpass, и я могу взглянуть. - person PassKit; 20.11.2013
comment
пример работы с моими сертификатами rivertechservices.com/passbookpass/index.php - person user3008885; 20.11.2013

Я создал новый идентификатор пропуска, сгенерировал новый сертификат p12, теперь он работает!!! Спасибо за вашу помощь :)

person user3008885    schedule 20.11.2013
comment
Как вы заставили его работать? После использования ответа @passkit сафари на рабочем столе показывает миллиард проблем с php, и все данные искажены :( - person CJT3; 18.07.2014