Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 /...
Search
Takahiro Ikeuchi
August 11, 2021
Programming
2
870
Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 / Flutter Plugin Argon2 algorithm
Flutter Tokyo Meetup #16 の LT 資料です!
Takahiro Ikeuchi
August 11, 2021
Tweet
Share
More Decks by Takahiro Ikeuchi
See All by Takahiro Ikeuchi
AI長期記憶システム構築のための LLMマルチエージェントの取り組み / Awarefy-LLM-Multi-Agent
iktakahiro
2
750
最新のAIツールは何を解決しようとしているのか - Python エンジニアが取り組むべき "越境" とは - / Python-Engineer-in-AI-Era
iktakahiro
1
240
AWS Step Functions と Amazon Bedrock で構築する 可用性の高いAIサービス / Awarefy-AI-AWS-Bedrock-Step-Functions
iktakahiro
1
630
Flutter アプリの将来のインフラ移行に備える 疎結合なソフトウェア・アーキテクチャ / Flutter code Architecture for Infrastructure Migration
iktakahiro
0
1.9k
[Amazon EKS on AWS Fargate] スタートアップの "次の3年" を支えるためのインフラ技術 / AWS DEV DAY EKS ON FARGATE
iktakahiro
2
1.4k
可視化からはじめる ITエンジニアの セルフ・アウェアネス入門 / self-awareness-for-software-engineers
iktakahiro
0
450
Python で学ぶ実践的なドメイン駆動設計とレイヤードアーキテクチャ / DDD and Onion Architecture in Python
iktakahiro
16
23k
持続可能なエンジニアであるための 3つの こころがまえ / Be a Sustainable Engineer
iktakahiro
4
3k
Bitrise で Flutter アプリの CI を構築する際の勘所 / Tips for building Flutter app CI in Bitrise
iktakahiro
0
890
Other Decks in Programming
See All in Programming
テストコード書いてみませんか?
onopon
2
110
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
270
Go の GC の不得意な部分を克服したい
taiyow
3
790
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
400
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
100
tidymodelsによるtidyな生存時間解析 / Japan.R2024
dropout009
1
790
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
390
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
280
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
360
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1k
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
260
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Facilitating Awesome Meetings
lara
50
6.1k
How to Ace a Technical Interview
jacobian
276
23k
Making Projects Easy
brettharned
116
5.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
For a Future-Friendly Web
brad_frost
175
9.4k
KATA
mclloyd
29
14k
Unsuck your backbone
ammeep
669
57k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Transcript
© 2021 iktakahiro Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 2021.08.11 - Takahiro
Ikeuchi Flutter Tokyo Meetup #16
© 2021 iktakahiro 池内 孝啓(いけうち たかひろ) 株式会社Hakali 取締役CTO • @iktakahiro
• https://github.com/iktakahiro Flutter 歴2.5年, Go, TypeScript, Python
© 2021 iktakahiro おしながき 1. Argon 2 とは 2. fargon2
の概要 3. MethodChannel を活かしたパッケージづくりにまつわる Tips 4. 課題と困っていること ※ 本日のスライドはLT後にシェアいたします
© 2021 iktakahiro 20時間くらい前に公開しました! https://pub.dev/packages/fargon2 ※ LT駆動開発
© 2021 iktakahiro 動機 1. AES のための鍵導出関数が欲しかった(リサーチ目的) 2. 既存パッケージが欲しいものと違った 3.
MethodChannel を使ったプラグイン開発をしてみたかった
© 2021 iktakahiro Argon2 とは? • あるごん・つー • 鍵導出(Key Derivation)関数の1つ
• 2015年に開催された Password Hash Competition にて優勝 • パスワードハッシュの生成や、AES で用いる key の生成に利用できる • https://github.com/P-H-C/phc-winner-argon2 ※ Argon2 そのものの解説ではないので、詳細は割愛!
© 2021 iktakahiro 今回つくったもの : fargon2 とは? • ふぁるごん・つー •
Argon2 のハッシュ生成関数を Flutter アプリ上で気軽に扱えるように したもの • 以下の2つのライブラリの Wrapper ◦ Swift 実装 : CatCrypto ◦ Kotlin 実装 : argon2kt • Platform Specific なコードを実行するために MethodChannel を利用
© 2021 iktakahiro MethodChannel とは? • Writing custom platform-specific code
• Flutter, Dart コードをつうじて iOS / Android ネイティブなコードや機能を 呼び出す仕組み ※ 概要については解説が多いので本日は割愛!
© 2021 iktakahiro MethodChannel を利用したプラグインを実装する流れ 1. プラグイン用に Flutter プロジェクトを作成 2.
Dart のコードを書く 3. Android 用のコードを書く(今回は Kotlin) 4. iOS 用のコードを書く(今回は Swift) 5. 公開!
© 2021 iktakahiro 1. プラグイン用に Flutter プロジェクトを作成 template オプションを plugin
に指定すること これで大体雛形ができる
© 2021 iktakahiro 2. Dart のコードを書く ※ コードは一部抜粋です
© 2021 iktakahiro 3-1. Android 用 Kotlin のコードを書く
© 2021 iktakahiro 3-2. Android 向けに依存関係を解決 build.gradle にパッケージ情報を追加
© 2021 iktakahiro 4-1. iOS 用 Swift のコードを書く
© 2021 iktakahiro 4-2. iOS 向けに依存関係を解決 .podspec にパッケージ情報を追加
© 2021 iktakahiro 簡単!! と思いきや 1. example ディレクトリのコードを iOS 向けにビルドするには
example/ios/Podfile の編集が必要 2. テストが難しい(後述)
© 2021 iktakahiro 5. 公開! • dart pub publish !!
• コードコメントや example の 有無などで PUB POINTS が変動
© 2021 iktakahiro How to use fargon2
© 2021 iktakahiro 課題と困っていること • テストが書けない ◦ そんな馬鹿なと思ったけど、書けない ◦ setMockMethodCallHandler()
のコレジャナイ感 • Xcode のプロジェクトファイルがないので、Xcode で書けない ◦ そんな馬鹿なと思ったけど、書けない 解決策求む!!
© 2021 iktakahiro 告知タイム
https://www.awarefy.app ありのままの自分を理解し、 ストレスと上手に付き合う
We’re Hiring!! • UI デザイナ(採用強化中!) • Web デザイナ • アプリ開発エンジニア
• カスタマーサクセス https://hakali.co.jp/contact @iktakahiro