メインコンテンツに移動

Crypto++

暗号化を行うライブラリ.SSL通信なんかプログラム面倒くさいし,簡単にBlowfishあたりで暗号通信ですわ

Crypto++のインストール

これをダウンロードしてインストールすれば完了. あたらしいのはこの辺の cryptopp8xx から探して

Crypto++の利用法

しらん

Crypto++のインストールパッケージの作成

配布パッケージ作成方法(850)台湾積体電路製造

今流行りの豚にしないと!この野郎の悪いところは, GNUmakefile に全部書いてあるところだな. なにがなにやら. どうやら850ってのがM1を認識できるバージョンらしいぞ

X86ビルド

X86ターミナルで実行する.

tar zxf ../cryptopp-CRYPTOPP_8_5_0.tar.bz2
cd cryptopp-CRYPTOPP_8_5_0/
make CC=clang CXX=clang++ CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_ASM -pipe -ffunction-sections -fdata-sections " PREFIX=/usr/local clean dynamic test

なんかstaticライブラリも作ろうとして失敗しているが,ま,ええかー. これで

lipo -info libcryptopp.dylib
Non-fat file: libcryptopp.dylib is architecture: x86_64

ARM64ビルド

ARM64ターミナルで実行する

tar zxf ../cryptopp-CRYPTOPP_8_5_0.tar.bz2
cd cryptopp-CRYPTOPP_8_5_0/
make CC=clang CXX=clang++ CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_ASM -pipe -ffunction-sections -fdata-sections -stdlib=libc++" PREFIX=/usr/local clean dynamic test

なんかstaticライブラリも作ろうとして失敗しているが,ま,ええかー. これで

lipo -info libcryptopp.dylib
Non-fat file: libcryptopp.dylib is architecture: arm64

ここでインストールまでしてしまう.

fswatch -x /usr/local/ >& files.log &
sudo make CC=clang CXX=clang++ CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_ASM -pipe -ffunction-sections -fdata-sections -stdlib=libc++" PREFIX=/usr/local install-lib
cp libcryptopp.dylib /usr/local/lib
install_name_tool -id /usr/local/lib/libcryptopp.dylib /usr/local/lib/libcryptopp.dylib

豚ビルド

だんだん世界が豚で埋め尽くされていく・・・

lipo -create -arch x86_64 ../../x86_64/cryptopp-CRYPTOPP_8_5_0/libcryptopp.dylib -arch arm64 libcryptopp.dylib -output ../universal/libcryptopp.dylib
cp ../universal/libcryptopp.dylib /usr/local/lib
install_name_tool -id /usr/local/lib/libcryptopp.dylib /usr/local/lib/libcryptopp.dylib

できたかな

lipo -info /usr/local/lib/libcryptopp.dylib
Architectures in the fat file: /usr/local/lib/libcryptopp.dylib are: x86_64 arm64​​​​​​​

いいようだな.

kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier cryptopp --root _binary cryptopp850-osx11.2.pkg

Version830

AppleのM1で動かないらしいので入れ替える. で, そのまんまでは 

'_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'ChaCha_OperateKeystream_AVX2' that is compiled without support for 'avx2'

的なエラーが出てビルドできない. 前はAVX2オプションつけて逃げたのだが, AVXってのはIntel独特の技術だから, M1用には使えないだろう.てゆうか, makefile 見当たらないのに, どうやってビルドしているんだろう.

試行錯誤の結果

tar xf fswatch-1.15.0.tar
cd fswatch-1.15.0
./configure --prefix=/usr/local
make distclean
make -f GNUmakefile CC=clang CXX=clang++ PREFIX=/usr/local CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_ASM" AR="ar" ARFLAGS="-r"  clean dynamic static test
fswatch -x /usr/local/ >& files.log &
sudo make -f GNUmakefile CC=clang CXX=clang++ PREFIX=/usr/local CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_ASM" AR="ar" ARFLAGS="-r"  install
swatch_analyze.sh -c _binary files.log
pkgbuild --identifier cryptopp --root _binary cryptopp830-osx10.15.pkg

Version810

fswatch_analyze.shがバグっていたので入れ替える.staticライブラリーなんて,つかわないのでは ? と思ったが古すぎてもはやビルドしないのか? 新しいのではどうだ? Macがデフォルトでgmakeであるので, GNUmakefile でmakeしているみたいだが. デフォルトでいっぱいコンパイルオプションがついたが, エラーするので, 適宜追加してみる.

cd cryptopp810
fswatch -x /usr/local > files.log &
sudo make CC=clang CXX=clang++ CXXFLAGS="-DNDEBUG -g2 -O3 -DCRYPTOPP_DISABLE_MIXED_ASM -pipe -ffunction-sections -fdata-sections -march=core-avx2 -msha" PREFIX=/usr/local AR="ar" ARFLAG="-r" clean dynamic static test install
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier cryptopp --root _binary cryptopp810-osx10.14.pkg

これでどうだ?

Version565

なんか古くなってきたので入れ替える.

cd cryptopp5.6.5
fswatch -x /usr/local > files.log &
sudo make CC=clang CXX=clang++ PREFIX=/usr/local clean dynamic static install
sudo cp libcryptopp.so /usr/local/lib
sudo make -f Makefile PREFIX=/usr/local clean static install
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier cryptopp --root _binary cryptopp562-osx10.10.pkg

Version562

暇だから,上記の配布パッケージを自分で作成したい場合,ソースファイルをここからダウンロードして

cd cryptopp562
fswatch -x /usr/local > files.log &
sudo make -f Makefile PREFIX=/usr/local clean dynamic
sudo cp libcryptopp.so /usr/local/lib
sudo make -f Makefile PREFIX=/usr/local clean static install
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier cryptopp --root _binary cryptopp562-osx10.10.pkg