Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
K/NでCryptoKit使いたかった
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
RyuNen344
November 29, 2022
Technology
630
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
K/NでCryptoKit使いたかった
RyuNen344
November 29, 2022
More Decks by RyuNen344
See All by RyuNen344
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
0
110
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
410
せめて、ネイティブらしく
ryunen344
2
3.3k
Cache Me If You Can
ryunen344
3
9.4k
WindowInsetsだってテストしたい
ryunen344
2
440
サプライチェーン攻撃に備える
ryunen344
1
4.1k
Okioに愛を込めて
ryunen344
3
3.1k
Firebase Hostingを使ってPasskeyをandroidアプリで試してみよう
ryunen344
2
2.2k
Xcode Meets Gradle
ryunen344
0
460
Other Decks in Technology
See All in Technology
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
3
610
Patterns in AI Driven Software Development
akosma
PRO
0
420
Consistency for mere mortals - A gentle guide to consistency
ufried
0
110
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
8
5.1k
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
730
生き様としてのSRE
hokkai7go
1
150
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
150
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
520
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
470
Agent Loopを組み込んだ アンビエントなAI機能を実現する / Ambient AI fetures with Agent Loop
nekorush14
0
130
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
120
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
1
110
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
41k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
320
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
660
Prompt Engineering for Job Search
mfonobong
0
570
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
290
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Un-Boring Meetings
codingconduct
0
480
Transcript
Kotlin NativeͰCryptoKit͍ ͔ͨͬͨɾɾɾɾɾ 2022.11.27 Mobileษڧձ Wantedly × νʔϜϥϘ #7 Bunjiro
Miyoshi
About Me • νʔϜϥϘॴଐ • (ࣗশ)ϚϧνϓϥοτϑΥʔϜܳਓ • Jetpack Compose࠷ߴʂʂ
͢͜ͱɾ͞ͳ͍͜ͱ • ͢͜ͱ • CryptoKitͱ • ͳͥCryptoKitΛ͍͍͔ͨ • Kotlin NativeͷSwift/Obj-C
Interop • ͞ͳ͍͜ͱ • KMMͱ(͕࣌ؒΓͳ͘ͳΔ) • androidଆʹدΓఴͬͨ༰(΄΅androidؔͳ͍͔͠͠ͳ͍) • ඇରশ҉߸पΓ(K/NͰSecurity Framework͑Δ)
CryptoKitͱ • Appleެࣜͷ҉߸ԽϥΠϒϥϦ • iOS13͔Β༻Ͱ͖Δ • LinuxͰ͑ΔΑ͏ʹಛघͳϋʔυΣΞॲཧΛඞཁͱ͠ͳ͍APIΛ ൈ͖ग़ͨ͠OSS൛͋Δ • ݱࡏiOSͰAESHashͷ࣮Λ͍ͨ͠ͳΒ͜ΕΛ͏ͷ͕σϑΝΫ
τ
ͳͥCryptoKitΛ͍͍͔ͨ#Tink • KMMͰ҉߸ԽॲཧΛԿͰ࣮͢Δ͔໎ͬͨ • Google/TinkΛinterop͢Δ༧ఆͩͬͨ • androidͷ҉߸ԽॲཧݱࡏTinkҰͳঢ়ଶͩ͠ɾɾɾɾ • arm64ରԠʹۤ͠ΜͰ͍ΔΒ͘͠ରԠΛ͍ͬͯΒΕͳ͍ •
→ https://github.com/google/tink/issues/554
ͳͥCryptoKitΛ͍͍͔ͨ#CommonCrypto • iOSʹRuntimeʹCommonCrypto͕ಉࠝ͞Ε͍ͯΔ • → https://opensource.apple.com/source/CommonCrypto • CͰ࣮͞Ε͍ͯΔFramework • ରশ҉߸(AES-CBC,
AES-ECB)ɺϋογϡؔɺμΠδΣετؔͳ Ͳ͕༻Ͱ͖Δ
ͳͥCryptoKitΛ͍͍͔ͨ#CommonCrypto
ͳͥCryptoKitΛ͍͍͔ͨ • CryptoKit͡Όͳ͍ͱͰ͖ͳ͍͜ͱ • AEAD(AES-GCM)ͳͲͷೝূϞʔυ • ॺ໊पΓͷॲཧ • ٯʹCryptoKitͩͱͰ͖ͳ͍ॲཧ͋Δ •
MD2ɺ4ͳͲͷڧͷ͍μΠδΣετ͋·Γ༻͠ͳ͍ͷͳ ͷͰؾʹ͠ͳͯ͘Α͍
AES-GCM͕͍͍ͨ • CommonCryptoʹGCM࣮ͷϔομʔϑΝΠϧ͋Δɾɾɾɾ • https://opensource.apple.com/source/CommonCrypto/ CommonCrypto-60061/lib/CommonCryptorGCM.c.auto.html • ඇެ։APIʹͳ͍ͬͯͯK/NͰ͑ͳ͍ɾɾɾɾɾ
Ͳ͏ͤϥούʔΛͭ͘ΔͳΒCryptoKitʹ͍ͨ͠ • ͖ͬͱJetBrainsͷK/NνʔϜ͍͍ͨͱࢥͬͯͨΜ͡Όͳ͍͔ͳͱ अਪ • ͓ΉΖʹKotlinͷϦϙδτϦΛோΊͯΈΔ • K/N͕औΓࠐΉDarwinͷAPI👇ʹ͓͍ͯ͋Δ • https://github.com/JetBrains/kotlin/tree/master/kotlin-native/
platformLibs/src/platform/ios
Μɾɾɾɾɾʁ
Μɾɾɾɾɾʁ
͋ɺ͋Δʂʂʂ
Swift/Objective-C Interop • def.disabledͱ͍͏ෆԺͳϑΝΠϧ໊ʹͳ͍ͬͯΔ • obj-c͔Βݺͼग़ͤΔΑ͏ʹͳͬͯΔSwift Framework͑Δ͕pure SwiftͷFrameworkK/NʹऔΓࠐΊͳ੍͍͕͋ΔͨΊdisable
Swift/Objective-C Interop • def.disabledͱ͍͏ෆԺͳϑΝΠϧ໊ʹͳ͍ͬͯΔ • obj-c͔Βݺͼग़ͤΔΑ͏ʹͳͬͯΔSwift Framework͑Δ͕pure SwiftͷFrameworkK/NʹऔΓࠐΊͳ੍͍͕͋ΔͨΊdisable ཁ͢Δʹͦͷ··Ͱ͑ͳ͍
Swift/Objective-C Interop • ͏ʹ@objc͕༩͞Ε͍ͯΔϥούʔͷϥΠϒϥϦΛ࡞͠ɺͦ ΕΛK/NʹऔΓࠐΉඞཁ͕͋Δ • ಉ͜͡ͱΛߟ͍͑ͯΔਓ͍Δ • https://youtrack.jetbrains.com/issue/KT-54729/KMM-Native-iOS- use-CryptoKit
Ͳ͏͍͏ϥούʔϥΠϒϥϦ͕΄͍͔͠ • K/NϥΠϒϥϦͱͯ͠ެ։͞Ε͍ͯΔ • -> KMMʹՃ͢Δ͚ͩͰCryptoKit͑ΔΑ͏ʹͳͬͯ΄͍͠ • ϥούʔϥΠϒϥϦdynamic libraryͱͯ͠CryptoKitΛͱΓ͜ΜͰ΄͍͠ •
-> όΠφϦຊମʹCryptoKitͷϏϧυੜΛؚΜͰ΄͘͠ͳ͍ • (ͨΓલ͕ͩ)CryptoKit͔ΒͷΤϥʔΛͪΌΜͱϋϯυϦϯάͰ͖ΔIFʹ ͳͬͯͯ΄͍͠
ϥούʔϥΠϒϥϦΛ࡞Δ • Swift InteropʹerrorൖपΓʹ᠘͕͋Δ • Swift/Objective-C error-throwing methods aren't imported
to Kotlin as exception- throwing • https://kotlinlang.org/docs/native-objc-interop.html#errors-and-exceptions • Kotlin -> Obj-CɺObj-C -> Kotlinͷ྆ํʹ੍͕͋Δ • ࠓճͷϢʔεέʔεͩͱSwift -> Obj-C ->KotlinͷܗʹͳΔͨΊͦΕͧΕͷݴޠײͷนΛߟྀͯ͠ ࣮͢Δඞཁ͕͋Δ • iOSͷ։ൃݴޠͷσϑΝΫτ͕Obj-C͔ΒSwiftʹΓସΘͬͨλΠϛϯάͷࢿྉ͕ʹཱͪͦ͏
·ͱΊ • ࠓճ༻ҙͰ͖ͨ෦͜͜·Ͱ • ࢲࣗࠓճඞཁͷΈͷఆ͔ٛ͠ߦΘͣɺCryptoKitશମͷϥοϓʹͨͲΓண͔ͳ ͔ͬͨ(୭͔ҰॹʹΓ·ͤΜ͔ɾɾɾ) • Swift InteropपΓʹΤϥʔൖͷ᠘͕͋Δ •
Swift/KotlinޓରԠͷissue͋Δ͕͕͔͔࣌ؒΓͦ͏ͳͷͰϥούʔϥΠϒϥϦΛ ࡞ΔҎ֎ʹݱঢ়खஈ͕ͳͦ͞͏ • https://youtrack.jetbrains.com/issue/KT-49521/Support-direct-interoperability-with- Swift
12݄10ͷKotlin Festొஃ͠·͢ ͓࣌ؒ͋Δ͔ͨͥͻ