2013-11-19 3 views
2

Привет, новый для ios 7 и php . Ив пытался сделать это PHP-PKPass Class для работы с ios 7 он отлично работает с моим браузером Safari. Я могу визуализировать билет, когда я пытаюсь загрузить пакет, чтобы добавить его в сафари на моей сберегательной книжке, говорит мне: «Не могу скачать файл» это ссылка, где у нее есть sample running with my certificates Я посмотрел в телефонных журналах говорится:PHP-PKPass Не работает с iOS 7, добавьте дату и время, в которые был подписан протокол, используя атрибут S-MIME-времени подписания в PHP

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

все мои сертификаты работают нормально, json прав, так как я могу визуализировать его на своем Mac, исследование, которое Ive сделало до сих пор, указывает на пакет, который должен быть подписан с датой сервера, не выполняемой в 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; 
      } 
    } 

ответ

1

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

openssl_pkcs7_sign($paths['manifest'], 
      $paths['signature'], 
      'file://' . $certs['cert'], 
      array('file://' . $certs['cert'], $this->certPass), 
      array(), 
      PKCS7_BINARY|PKCS7_DETACHED, 
      $this->WWDRcertPath); 
+0

im все еще получаю ту же ошибку, похоже, что яблоко изменило что-то, я попробовал новую библиотеку passkit http://cdn.simon.waldherr.eu/projects/passkit.php ту же ошибку "Can not скачать файл " – user3008885

+0

Что говорят консольные журналы устройства (включите ведение журнала Passbook из меню разработчика на устройстве и монитора в Xcode). Если вы не видите журналы устройств, можете ли вы разместить ссылку на свой пакет .pkpass, и я могу взглянуть на это. – PassKit

+0

образец работает с моими сертификатами http://www.rivertechservices.com/passbookpass/index.php – user3008885

0

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

+0

Как вы его заработали? После использования @ passkit на рабочем столе сафари показывает миллиард проблем с php, и все данные искажены :( –