Development」タグアーカイブ

iOS 開発で使用する証明書、プロビジョニングプロファイルの内容を確認する方法

iOS 開発を行っていて、証明書要求(CertificateSigningRequest.certSigningRequest)を作成することがありますが、この内容が知りたくなった場合、ターミナルで以下のコマンドを実行します。

openssl req -inform pem -in CertificateSigningRequest.certSigningRequest -text

iOS Provisioning Portal から取得した証明書の内容が知りたければ、以下のコマンドを実行します。

openssl x509 -inform der -in distribution_identity.cer -text

他の開発環境へ証明書やプライベートキーを持っていく場合、p12 ファイルを作成し転送しますが、そのファイルの内容が知りたくなったら、以下のコマンドを実行します。
.p12 は通常パスワードをかけてあるはずなので、要求があればパスワードを入力します。

openssl pkcs12 -info -in 証明書.p12

プロビジョニングプロファイルの内容(証明書)が見たい場合は、以下のコマンドを実行します。

openssl pkcs7 -inform der -print_certs -in your.mobileprovision -text

プロビジョニングプロファイルには plist ファイルが埋め込まれています。これは vi コマンドなどでファイルを開くと確認できますし、以下のコマンドでも確認できます。

security cms -D -i your.mobileprovision

iOS プロジェクトで Base64 エンコード/デコードを行う

iOS プロジェクトで Base64 エンコードが必要になったので、取り急ぎ簡単な方法を探しました。
確認は Mac OS X 10.7.3 / Xcode 4.3.1 で行っています。

(1) http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html から NSData_Base64.zip をダウンロードし、解凍します。

(2) NSData_Base64 フォルダ内にある NSData+Base64.h と NSData+Base64.m の2ファイルを開発中のプロジェクトに追加します。

(3) あとはエンコードしたいところで、

// Encode base64
NSData *targetData = ...
NSString *encodedString = [targetData base64EncodedString];

デコードなら、

// Decode base64
NSString *base64String = ...
NSData * decodedData = [NSData dataFromBase64String:base64String];

といった具合に使用します。NSData+Base64.h のインポートを忘れないようにしましょう。

OpenSSL を使っても Base64 エンコーディングできるようですが、OpenSSL 関連のライブラリは iOS に含まれていないので、今回その方法は採用しませんでした。
ここ http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html には OpenSSL を使用した方法も説明されているので、興味のある方はどうぞ。

ちなみに、-base64EncodedString を使用した場合、64文字ごとに改行した Base64 文字列が生成されます。このとき使用される改行コードは CR+LF です。改行して欲しくないとか、80文字ごとで改行して欲しいなどの要求がある場合は、ソースを少しだけ調整すれば対応可能なようですので、ソースを一読されることをお勧めします。

iOS 用 OpenSSL ライブラリの作成

iOS アプリでデータの暗号化、復号を行う場合に、OpenSSL を使用したいことがあると思います。
iOS には Common Crypto というライブラリもありますので、こちらも検討してみることをお勧めしますが、
ここでは OpenSSL ライブラリの作成方法を簡単に説明します。
確認は Mac OS X 10.7.3 / Xcode 4.3.1 で行っています。

OpenSSL ライブラリ(libssl.a と libcrypto.a)の作成は以下の方法が簡単です。

(1) https://github.com/x2on/OpenSSL-for-iPhone からプロジェクトをダウンロードし、zip を解凍します。
試したときは x2on-OpenSSL-for-iPhone-openssl-1.0.0d-4-gc637f77.zip がダウンロードされました。

(2) シェルスクリプト build-libssl.sh がプロジェクトフォルダ内にあるので、これを開き、ベースとなる OpenSSL のバージョンと iOS SDK のバージョンを確認します。必要であれば調整します。

###########################################################################
#  Change values here                                                     #
#                                                                         #
VERSION="1.0.0g"                                                          #
SDKVERSION="5.0"                                                          #
#                                                                         #
###########################################################################

対応する iOS SDK が存在していないと、ライブラリの作成は失敗します。

(3) build-libssl.sh をターミナルで実行します。OpenSSL のソースが自動的にダウンロードされ、ライブラリの作成が始まります。作成されるライブラリは、i386、armv6、armv7 アーキテクチャ用のモジュールをまとめたスタティックライブラリです。

(4) ライブラリの作成が完了したら、プロジェクトフォルダ内の ./include と ./lib を、OpenSSL ライブラリを必要とするプロジェクトにコピーして使用します。OpenSSL を追加したプロジェクトのビルド設定にある検索パスも設定しておきましょう。前出の include と lib を openssl フォルダにまとめてプロジェクトに追加した場合、Header Search Paths に $(SRCROOT)/openssl/include を Library Search Paths に $(SRCROOT)/openssl/lib のように設定します。検索パスはライブラリを追加した場所に応じて適当に調整してください。

Ringle 1.3.1 リリース

Ringle 1.3.1 と Ringle Lite 1.3.1 が11月8日 App Store に並びました。

今回は以下の問題の修正を行っています。

  • iPhone OS の言語環境設定で、ある特定の書式を選択している場合にクラッシュする問題を修正

今回のレビュー期間は以下の通り。

Ringle 1.3.1
10月30日提出 –> 11月8日 Ready for Sale(9日後)
Ringle Lite 1.3.1
10月30日提出 –> 11月8日 Ready for Sale(9日後)