2015-10-05 10 views
7

Sto lavorando su un'applicazione per Mac che utilizza i seguenti file di intestazioneXcode 7 - file "OpenSSL/pkcs7.h" non trovato in Xcode 7

#include <openssl/pkcs7.h> 
#include <openssl/objects.h> 
#include <openssl/sha.h> 
#include <openssl/x509.h> 
#include <openssl/err.h> 

ho recentemente aggiornato l'OSX Yosemite per OSX El Capitan e Xcode da 6.4 a 7.0

Il progetto è stato eseguito correttamente prima dell'aggiornamento. Ora questi file non sono disponibili.

Cosa devo fare per farlo funzionare di nuovo?

Una delle soluzioni era per iOS che utilizzava cacao in cialde.

C'è un altro modo senza utilizzare i cacao?

risposta

3

Apple si è deprecato openssl qualche tempo fa, non fa più parte dell'SDK e la libreria stessa non viene fornita con OS X a partire dal 10.11.

Reference here

Lei non ha citato quello che stai usando OpenSSL. La soluzione dipende dalle tue esigenze. Se devi usare openssl (ad esempio troppo del tuo codice dipende da questo), devi ottenere openssl da te stesso, compilare le intestazioni scaricate e includere la libreria con la distribuzione dell'app. Cocoapods sembra un modo ragionevole per gestirlo se non vuoi farlo manualmente.

Oppure modificare il codice per utilizzare altre librerie fornite con OS X come Security Transforms o CommonCrypto.

UPDATE: Sembra che la documentazione di Apple è un po 'fuorviante (sorpresa!). Le librerie dinamiche per la versione precedente di openssl (0.9.8) sono ancora distribuite con 10.11. Ho appena controllato una nuova installazione di 10.11 e libcrypto e libssl sono ancora lì.

Se ciò è sufficiente (ad esempio, si utilizza semplicemente openssl per la convalida dello scontrino di App Store) è possibile ottenere semplicemente i file di intestazione da 10.10 SDK (scaricalo da Apple con xcode 6.4) e compilare la propria app solo le intestazioni. Non hai bisogno dei binari di openssl effettivi.

+0

Sono di fronte al problema di generare l'URL firmato per il recupero di contenuti privati ​​dal bucket S3 utilizzando Cloud Front. Ma Openssl riceve l'errore in Swift. Qualsiasi altra soluzione per generare l'URL firmato. Si prega di suggerirlo. – vipulk617

+0

Questo non è correlato alla domanda originale ma non è necessario che openssl firmi richieste AWS, hai solo bisogno di HMAC, cerca Swift e HMAC su Google e troverai degli esempi. – danielv

+0

Ho provato a utilizzare HMAC e a richiedere il cloud front in modo da ottenere il messaggio di accesso negato in risposta. openssl funziona bene nell'obiettivo C ma non è veloce. Hai qualche codice demo o risorsa per accedere ai contenuti privati ​​dal cloud front in modo rapido. Quindi per favore condividilo. – vipulk617