週休七日

趣味のこととか、技術のこととか、読書感想文とか

SwiftでRFC8032互換のEd255519をsha-3実装で便利に使用する。

すごい長いタイトルですが、利用機会があったので実装しました。
実装したと言っても、すでにある pebble8888/ed25519swift をFolkして便利に使えるようなWrapperを作りながらsha-3に対応しました。

Ed25519

公式サイト
EdDSAの一つです。
EdDSAの特徴として署名周りの暗号化処理が高速なことが挙げられます

利用機会

なぜこのようなことをしたかというと、 Hyperledger Iroha に接続するアプリケーションを実装する上でEd25519の暗号処理が必要だからです。
かつて Iroha-ios というライブラリで暗号周りを開発 (といっても orlp/ed25519 をSwiftでラップしたもの)していました。
しかしIrohaの使用アルゴリズムが変わってしまい利用できなくなってしまったので作りました。
Hyperledger Irohaは Ed25519 + sha3 で暗号周りを実装しています。
おそらく公式としてIroha−iosが更新されていくと思うので安定版としての利用はそちらを待ちましょう。

変更点

すべての処理 (keypair生成、signature作成、verify) をBase64で扱えるように変更しました。
また、sha512を使用していたところをsha3-512に変更しました。

利用方法

//キーペアの生成
let keypair = func generate_keypair()  

//署名用のメッセージ
let message = "message"
//署名の作成
let signature = sign(message, keypair.pub, keypair.pri)

//署名の検証
verify(signature, message, keypair.pub)

すべてBase64 Stringで返ってくるのでIrohaと通信する際には、

let data = Data(base64Encoded: `String`, options: [])!
return data.bytes

上記のような処理が必要です。