Karakuri.com

ベンチャー企業で働くソフトウェアエンジニアの技術録

Swiftで暗号ライブラリCommonCryptoを使ってAESや3DESなど導入する

スポンサーリンク

WindowsやAndroidは暗号ライブラリが豊富にあるので困らないのですが、iOSのSwiftだと暗号ライブラリが少なくとても大変です。有志が様々なライブラリを作ってはいるのですが、例えば3DESだと対応しているライブラリは皆無です。結局iOSに標準で入っているCommonCryptoというC言語のライブラリを使うのが最も安全という話になります。今回はCommonCryptoをSwiftで使うのに苦労したので、その使用方法を書き残しておきます。

CommonCryptoをSwiftで使う方法

ググると様々な方法が出てくるのですが、Xcode9では失敗しました。結論から言うと、まずアプリディレクトリ(TestAppというアプリならTestAppディレクトリ)の中にCommonCryptoというディレクトリを作成します。そしてその中にmodule.mapというファイルを作って、中に下記のように書いておきます。

module CommonCrypto {
    header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
    export *
}

どうもこのheaderで指定する場所がXcodeのバージョンによって違うみたい?そんな勝手に変えられたら分からないですよねえ…。だからググっても動かないわけです。ちなみにXcode10ではどうなってるか調べてないです。すみません。

CommonCryptoをSwiftから呼び出す方法

あとはimportすれば呼び出せるはずです。

import CommonCrypto

辛いですねえ。