Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 / Flutter Plugin Argon2 algorithm

Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 / Flutter Plugin Argon2 algorithm

Flutter Tokyo Meetup #16 の LT 資料です!

4681d7bd0f8c32b6e3e582891938e577?s=128

Takahiro Ikeuchi

August 11, 2021
Tweet

Transcript

  1. © 2021 iktakahiro Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 2021.08.11 - Takahiro

    Ikeuchi Flutter Tokyo Meetup #16
  2. © 2021 iktakahiro 池内 孝啓(いけうち たかひろ) 株式会社Hakali 取締役CTO • @iktakahiro

    • https://github.com/iktakahiro Flutter 歴2.5年, Go, TypeScript, Python
  3. © 2021 iktakahiro おしながき 1. Argon 2 とは 2. fargon2

    の概要 3. MethodChannel を活かしたパッケージづくりにまつわる Tips 4. 課題と困っていること ※ 本日のスライドはLT後にシェアいたします
  4. © 2021 iktakahiro 20時間くらい前に公開しました! https://pub.dev/packages/fargon2 ※ LT駆動開発

  5. © 2021 iktakahiro 動機 1. AES のための鍵導出関数が欲しかった(リサーチ目的) 2. 既存パッケージが欲しいものと違った 3.

    MethodChannel を使ったプラグイン開発をしてみたかった
  6. © 2021 iktakahiro Argon2 とは? • あるごん・つー • 鍵導出(Key Derivation)関数の1つ

    • 2015年に開催された Password Hash Competition にて優勝 • パスワードハッシュの生成や、AES で用いる key の生成に利用できる • https://github.com/P-H-C/phc-winner-argon2 ※ Argon2 そのものの解説ではないので、詳細は割愛!
  7. © 2021 iktakahiro 今回つくったもの : fargon2 とは? • ふぁるごん・つー •

    Argon2 のハッシュ生成関数を Flutter アプリ上で気軽に扱えるように したもの • 以下の2つのライブラリの Wrapper ◦ Swift 実装 : CatCrypto ◦ Kotlin 実装 : argon2kt • Platform Specific なコードを実行するために MethodChannel を利用
  8. © 2021 iktakahiro MethodChannel とは? • Writing custom platform-specific code

    • Flutter, Dart コードをつうじて iOS / Android ネイティブなコードや機能を 呼び出す仕組み ※ 概要については解説が多いので本日は割愛!
  9. © 2021 iktakahiro MethodChannel を利用したプラグインを実装する流れ 1. プラグイン用に Flutter プロジェクトを作成 2.

    Dart のコードを書く 3. Android 用のコードを書く(今回は Kotlin) 4. iOS 用のコードを書く(今回は Swift) 5. 公開!
  10. © 2021 iktakahiro 1. プラグイン用に Flutter プロジェクトを作成 template オプションを plugin

    に指定すること これで大体雛形ができる
  11. © 2021 iktakahiro 2. Dart のコードを書く ※ コードは一部抜粋です

  12. © 2021 iktakahiro 3-1. Android 用 Kotlin のコードを書く

  13. © 2021 iktakahiro 3-2. Android 向けに依存関係を解決 build.gradle にパッケージ情報を追加

  14. © 2021 iktakahiro 4-1. iOS 用 Swift のコードを書く

  15. © 2021 iktakahiro 4-2. iOS 向けに依存関係を解決 .podspec にパッケージ情報を追加

  16. © 2021 iktakahiro 簡単!! と思いきや 1. example ディレクトリのコードを iOS 向けにビルドするには

    example/ios/Podfile の編集が必要 2. テストが難しい(後述)
  17. © 2021 iktakahiro 5. 公開! • dart pub publish !!

    • コードコメントや example の 有無などで PUB POINTS が変動
  18. © 2021 iktakahiro How to use fargon2

  19. © 2021 iktakahiro 課題と困っていること • テストが書けない ◦ そんな馬鹿なと思ったけど、書けない ◦ setMockMethodCallHandler()

    のコレジャナイ感 • Xcode のプロジェクトファイルがないので、Xcode で書けない ◦ そんな馬鹿なと思ったけど、書けない 解決策求む!!
  20. © 2021 iktakahiro 告知タイム

  21. https://www.awarefy.app ありのままの自分を理解し、 ストレスと上手に付き合う

  22. We’re Hiring!! • UI デザイナ(採用強化中!) • Web デザイナ • アプリ開発エンジニア

    • カスタマーサクセス https://hakali.co.jp/contact @iktakahiro