Key results
- 29 of 31 pull requests merged
- Covers all major primitives
- Up to 29× faster hashing on large payloads
During Google Summer of Code 2026 I built an experimental Android backend for Dart’s package:webcrypto, mentored by Jonas Finnemann Jensen and Hamdaan Ali Quatil. Instead of shipping BoringSSL as a native library, the backend calls Android’s built-in Java Cryptography Architecture (JCA) through bindings generated with package:jnigen.
What landed
I opened 31 pull requests against google/webcrypto.dart; 29 are merged.
| Primitive | Pull requests |
|---|---|
| SecureRandom · HMAC | #298 |
| SHA-1 / 256 / 384 / 512 | #296 |
| AES-GCM · AES-CBC · AES-CTR | #300 · #304 · #316 |
| RSASSA-PKCS1-v1_5 · RSA-OAEP · RSA-PSS | #323 · #340 · #341, #375 |
| ECDSA (P-256/384/521) · ECDH | #351 · #360 |
| HKDF | #356 |
Along the way I sent fixes to master: AES-GCM tag-length test vectors (#312), JWK base64url validation (#329), the canonical RSA-OAEP JWK alg (#337) and a documentation fix (#339).
Validation
On an Android 16 (API 36) emulator the suite ran 1,397 passing tests; all 46 failures are in PBKDF2, which remains experimental (#357). AES-GCM passed 81 of 81 vectors on API 24 and API 36, and RSA-PSS 366 of 366 on API 36. The work lives on the android-jca-branch integration branch.