2015-04-14 15 views
6

Tôi đang cố gắng đưa OpenSSL vào dự án Swift OS X để xác thực nhận.Thêm openSSL vào dự án Swift OS X để xác thực việc nhận xác nhận

Tôi đã xây dựng thành công các tệp thư viện và tiêu đề OpenSSL cần thiết. Tôi đã thêm chúng vào dự án của mình, nhưng khi làm như vậy không được nhắc tạo tệp tiêu đề bắc cầu. Tôi đã tạo tệp tiêu đề bắc cầu theo cách thủ công bằng #import cho từng tệp tiêu đề openssl. Trong cài đặt xây dựng dự án, tôi đã đặt tiêu đề cầu nối C mục tiêu trong "trình biên dịch nhanh - tạo mã" thành tiêu đề bắc cầu của tôi. Tôi đã tạo các tệp ans1c cho định dạng tải trọng như được mô tả trong hướng dẫn lập trình xác nhận biên nhận: "Liệt kê định nghĩa 1-1 ASN.1 của định dạng tải trọng" và thêm chúng vào tiêu đề bắc cầu của tôi.

Tôi nhận được nhiều lỗi biên dịch khi tạo, chủ yếu cho các tên kiểu không xác định trong tệp tiêu đề openSSL mà tôi đã nghĩ sẽ được xác định trong tệp tiêu đề ans1c, nhưng không. Tôi cũng gặp lỗi "Không thể nhập tiêu đề cầu nối ... (tệp tiêu đề bắc cầu của tôi)".

Tôi đang hết ý tưởng và có thể phải từ bỏ openSSL để xác thực biên lai. Nếu bất cứ ai biết tôi đang làm gì sai, hoặc nếu bạn có một phương pháp thay thế để làm xác nhận, tôi rất thích nghe nó. Ứng dụng của tôi sẽ có IAP, vì vậy có vẻ như tôi cần một số cách kiểm tra biên nhận.

+0

Tôi tin rằng mình đã phân lập được sự cố hiện tại của mình, nhưng tôi không biết cách sửa nó. Tôi đã xây dựng hai dự án xương trần mà tôi đã nhập thư viện openSSL và các tiêu đề, một dự án trong Swift và một trong Mục tiêu C. Với phiên bản C mục tiêu tôi có thể xây dựng mà không có lỗi. Với phiên bản Swift, kết quả xây dựng trong nhiều lỗi trình biên dịch, hầu hết là các tên kiểu không xác định cho một vài kiểu openSSL. Khi tôi đưa các tệp tiêu đề vào dự án Swift, tôi không được nhắc tạo tiêu đề bắc cầu, điều này khiến tôi nghi ngờ rằng tôi không nhập đúng các tiêu đề này. – jbaraga

Trả lời

3

Cuối cùng tôi đã tìm ra nguồn gốc của lỗi trình biên dịch. XCode là rất cầu kỳ về nơi các tiêu đề openssl được. Nếu tôi liên kết trực tiếp đến thư mục tiêu đề mang tên "openssl", tôi sẽ gặp lỗi trình biên dịch. Nếu tôi liên kết đến thư mục mẹ có tiêu đề "include", không có lỗi!

Tôi không hiểu hành vi này, nhưng ít nhất bây giờ tôi có một giải pháp. Nhờ các hướng dẫn trên Receigen cho adding OpenSSL as a static library, mà cuối cùng tôi đã theo dõi chính xác, tôi đã có thể khám phá nguồn gốc của lỗi.

+2

Tôi cũng đã chiến đấu với điều này, đối với bất kỳ người mới nào, nó chỉ ra rằng trong openssl 1.0.2a nó cũng cần thiết để điều chỉnh tệp openssl/rsa.h để bỏ qua "I" như được định nghĩa trong complex.h từ ca cao/khung nền tảng. Điều này có thể được thực hiện bằng cách đặt "#undef I" trong tệp rsa.h, ngay phía trên "struct rsa_meth_st" – Rien

+0

@jbaraga Tôi đang đối mặt với cùng một vấn đề openssl với swift. Hãy chia sẻ giải pháp với tôi. – vipulk617

+0

Đó là khó tính, nhưng nếu bạn làm theo các hướng dẫn trên Receigen chính xác, nó sẽ hoạt động. Nếu không, bạn có thể thử các hướng dẫn được đăng tại đây: [link] (http://swiftrien.blogspot.com/2015/05/osx-receipt-validation-in-swift-part-1.html). Tôi không thấy cần thiết để cập nhật tệp openssl/rsa.h, như đã nêu trong các hướng dẫn đó, nhưng bạn nên thử nếu bạn tiếp tục gặp sự cố. – jbaraga

Các vấn đề liên quan