Skip to content
This repository has been archived by the owner on Jan 20, 2023. It is now read-only.

Rewrite flutter_sodium using FFI #35

Closed
kozw opened this issue May 11, 2020 · 12 comments
Closed

Rewrite flutter_sodium using FFI #35

kozw opened this issue May 11, 2020 · 12 comments
Assignees
Labels
enhancement New feature or request

Comments

@kozw
Copy link
Contributor

kozw commented May 11, 2020

The FFI implementation has recently been started in the ffi branch. Tracking progress of the entire libsodium API (725 symbols):

  • argon2_ctx
  • argon2_decode_string
  • argon2_encode_string
  • argon2_fill_memory_blocks
  • argon2_fill_segment_avx2
  • argon2_fill_segment_avx512f
  • argon2_fill_segment_ref
  • argon2_fill_segment_ssse3
  • argon2_finalize
  • argon2_hash
  • argon2_initialize
  • argon2_validate_inputs
  • argon2_verify
  • argon2i_hash_encoded
  • argon2i_hash_raw
  • argon2i_verify
  • argon2id_hash_encoded
  • argon2id_hash_raw
  • argon2id_verify
  • blake2b
  • blake2b_compress_avx2
  • blake2b_compress_ref
  • blake2b_compress_sse41
  • blake2b_compress_ssse3
  • blake2b_final
  • blake2b_init
  • blake2b_init_key
  • blake2b_init_key_salt_personal
  • blake2b_init_param
  • blake2b_init_salt_personal
  • blake2b_long
  • blake2b_pick_best_implementation
  • blake2b_salt_personal
  • blake2b_update
  • crypto_aead_aegis128l_abytes
  • crypto_aead_aegis128l_decrypt
  • crypto_aead_aegis128l_decrypt_detached
  • crypto_aead_aegis128l_encrypt
  • crypto_aead_aegis128l_encrypt_detached
  • crypto_aead_aegis128l_is_available
  • crypto_aead_aegis128l_keybytes
  • crypto_aead_aegis128l_keygen
  • crypto_aead_aegis128l_messagebytes_max
  • crypto_aead_aegis128l_npubbytes
  • crypto_aead_aegis128l_nsecbytes
  • crypto_aead_aegis256_abytes
  • crypto_aead_aegis256_decrypt
  • crypto_aead_aegis256_decrypt_detached
  • crypto_aead_aegis256_encrypt
  • crypto_aead_aegis256_encrypt_detached
  • crypto_aead_aegis256_is_available
  • crypto_aead_aegis256_keybytes
  • crypto_aead_aegis256_keygen
  • crypto_aead_aegis256_messagebytes_max
  • crypto_aead_aegis256_npubbytes
  • crypto_aead_aegis256_nsecbytes
  • crypto_aead_aes256gcm_abytes
  • crypto_aead_aes256gcm_beforenm
  • crypto_aead_aes256gcm_decrypt
  • crypto_aead_aes256gcm_decrypt_afternm
  • crypto_aead_aes256gcm_decrypt_detached
  • crypto_aead_aes256gcm_decrypt_detached_afternm
  • crypto_aead_aes256gcm_encrypt
  • crypto_aead_aes256gcm_encrypt_afternm
  • crypto_aead_aes256gcm_encrypt_detached
  • crypto_aead_aes256gcm_encrypt_detached_afternm
  • crypto_aead_aes256gcm_is_available
  • crypto_aead_aes256gcm_keybytes
  • crypto_aead_aes256gcm_keygen
  • crypto_aead_aes256gcm_messagebytes_max
  • crypto_aead_aes256gcm_npubbytes
  • crypto_aead_aes256gcm_nsecbytes
  • crypto_aead_aes256gcm_statebytes
  • crypto_aead_chacha20poly1305_abytes
  • crypto_aead_chacha20poly1305_decrypt
  • crypto_aead_chacha20poly1305_decrypt_detached
  • crypto_aead_chacha20poly1305_encrypt
  • crypto_aead_chacha20poly1305_encrypt_detached
  • crypto_aead_chacha20poly1305_ietf_abytes
  • crypto_aead_chacha20poly1305_ietf_decrypt
  • crypto_aead_chacha20poly1305_ietf_decrypt_detached
  • crypto_aead_chacha20poly1305_ietf_encrypt
  • crypto_aead_chacha20poly1305_ietf_encrypt_detached
  • crypto_aead_chacha20poly1305_ietf_keybytes
  • crypto_aead_chacha20poly1305_ietf_keygen
  • crypto_aead_chacha20poly1305_ietf_messagebytes_max
  • crypto_aead_chacha20poly1305_ietf_npubbytes
  • crypto_aead_chacha20poly1305_ietf_nsecbytes
  • crypto_aead_chacha20poly1305_keybytes
  • crypto_aead_chacha20poly1305_keygen
  • crypto_aead_chacha20poly1305_messagebytes_max
  • crypto_aead_chacha20poly1305_npubbytes
  • crypto_aead_chacha20poly1305_nsecbytes
  • crypto_aead_xchacha20poly1305_ietf_abytes
  • crypto_aead_xchacha20poly1305_ietf_decrypt
  • crypto_aead_xchacha20poly1305_ietf_decrypt_detached
  • crypto_aead_xchacha20poly1305_ietf_encrypt
  • crypto_aead_xchacha20poly1305_ietf_encrypt_detached
  • crypto_aead_xchacha20poly1305_ietf_keybytes
  • crypto_aead_xchacha20poly1305_ietf_keygen
  • crypto_aead_xchacha20poly1305_ietf_messagebytes_max
  • crypto_aead_xchacha20poly1305_ietf_npubbytes
  • crypto_aead_xchacha20poly1305_ietf_nsecbytes
  • crypto_auth
  • crypto_auth_bytes
  • crypto_auth_hmacsha256
  • crypto_auth_hmacsha256_bytes
  • crypto_auth_hmacsha256_final
  • crypto_auth_hmacsha256_init
  • crypto_auth_hmacsha256_keybytes
  • crypto_auth_hmacsha256_keygen
  • crypto_auth_hmacsha256_statebytes
  • crypto_auth_hmacsha256_update
  • crypto_auth_hmacsha256_verify
  • crypto_auth_hmacsha512
  • crypto_auth_hmacsha512256
  • crypto_auth_hmacsha512256_bytes
  • crypto_auth_hmacsha512256_final
  • crypto_auth_hmacsha512256_init
  • crypto_auth_hmacsha512256_keybytes
  • crypto_auth_hmacsha512256_keygen
  • crypto_auth_hmacsha512256_statebytes
  • crypto_auth_hmacsha512256_update
  • crypto_auth_hmacsha512256_verify
  • crypto_auth_hmacsha512_bytes
  • crypto_auth_hmacsha512_final
  • crypto_auth_hmacsha512_init
  • crypto_auth_hmacsha512_keybytes
  • crypto_auth_hmacsha512_keygen
  • crypto_auth_hmacsha512_statebytes
  • crypto_auth_hmacsha512_update
  • crypto_auth_hmacsha512_verify
  • crypto_auth_keybytes
  • crypto_auth_keygen
  • crypto_auth_primitive
  • crypto_auth_verify
  • crypto_box
  • crypto_box_afternm
  • crypto_box_beforenm
  • crypto_box_beforenmbytes
  • crypto_box_boxzerobytes
  • crypto_box_curve25519xchacha20poly1305_beforenm
  • crypto_box_curve25519xchacha20poly1305_beforenmbytes
  • crypto_box_curve25519xchacha20poly1305_detached
  • crypto_box_curve25519xchacha20poly1305_detached_afternm
  • crypto_box_curve25519xchacha20poly1305_easy
  • crypto_box_curve25519xchacha20poly1305_easy_afternm
  • crypto_box_curve25519xchacha20poly1305_keypair
  • crypto_box_curve25519xchacha20poly1305_macbytes
  • crypto_box_curve25519xchacha20poly1305_messagebytes_max
  • crypto_box_curve25519xchacha20poly1305_noncebytes
  • crypto_box_curve25519xchacha20poly1305_open_detached
  • crypto_box_curve25519xchacha20poly1305_open_detached_afternm
  • crypto_box_curve25519xchacha20poly1305_open_easy
  • crypto_box_curve25519xchacha20poly1305_open_easy_afternm
  • crypto_box_curve25519xchacha20poly1305_publickeybytes
  • crypto_box_curve25519xchacha20poly1305_seal
  • crypto_box_curve25519xchacha20poly1305_seal_open
  • crypto_box_curve25519xchacha20poly1305_sealbytes
  • crypto_box_curve25519xchacha20poly1305_secretkeybytes
  • crypto_box_curve25519xchacha20poly1305_seed_keypair
  • crypto_box_curve25519xchacha20poly1305_seedbytes
  • crypto_box_curve25519xsalsa20poly1305
  • crypto_box_curve25519xsalsa20poly1305_afternm
  • crypto_box_curve25519xsalsa20poly1305_beforenm
  • crypto_box_curve25519xsalsa20poly1305_beforenmbytes
  • crypto_box_curve25519xsalsa20poly1305_boxzerobytes
  • crypto_box_curve25519xsalsa20poly1305_keypair
  • crypto_box_curve25519xsalsa20poly1305_macbytes
  • crypto_box_curve25519xsalsa20poly1305_messagebytes_max
  • crypto_box_curve25519xsalsa20poly1305_noncebytes
  • crypto_box_curve25519xsalsa20poly1305_open
  • crypto_box_curve25519xsalsa20poly1305_open_afternm
  • crypto_box_curve25519xsalsa20poly1305_publickeybytes
  • crypto_box_curve25519xsalsa20poly1305_secretkeybytes
  • crypto_box_curve25519xsalsa20poly1305_seed_keypair
  • crypto_box_curve25519xsalsa20poly1305_seedbytes
  • crypto_box_curve25519xsalsa20poly1305_zerobytes
  • crypto_box_detached
  • crypto_box_detached_afternm
  • crypto_box_easy
  • crypto_box_easy_afternm
  • crypto_box_keypair
  • crypto_box_macbytes
  • crypto_box_messagebytes_max
  • crypto_box_noncebytes
  • crypto_box_open
  • crypto_box_open_afternm
  • crypto_box_open_detached
  • crypto_box_open_detached_afternm
  • crypto_box_open_easy
  • crypto_box_open_easy_afternm
  • crypto_box_primitive
  • crypto_box_publickeybytes
  • crypto_box_seal
  • crypto_box_seal_open
  • crypto_box_sealbytes
  • crypto_box_secretkeybytes
  • crypto_box_seed_keypair
  • crypto_box_seedbytes
  • crypto_box_zerobytes
  • crypto_core_ed25519_add
  • crypto_core_ed25519_bytes
  • crypto_core_ed25519_from_string
  • crypto_core_ed25519_from_string_ro
  • crypto_core_ed25519_from_uniform
  • crypto_core_ed25519_hashbytes
  • crypto_core_ed25519_is_valid_point
  • crypto_core_ed25519_nonreducedscalarbytes
  • crypto_core_ed25519_random
  • crypto_core_ed25519_scalar_add
  • crypto_core_ed25519_scalar_complement
  • crypto_core_ed25519_scalar_invert
  • crypto_core_ed25519_scalar_is_canonical
  • crypto_core_ed25519_scalar_mul
  • crypto_core_ed25519_scalar_negate
  • crypto_core_ed25519_scalar_random
  • crypto_core_ed25519_scalar_reduce
  • crypto_core_ed25519_scalar_sub
  • crypto_core_ed25519_scalarbytes
  • crypto_core_ed25519_sub
  • crypto_core_ed25519_uniformbytes
  • crypto_core_hchacha20
  • crypto_core_hchacha20_constbytes
  • crypto_core_hchacha20_inputbytes
  • crypto_core_hchacha20_keybytes
  • crypto_core_hchacha20_outputbytes
  • crypto_core_hsalsa20
  • crypto_core_hsalsa20_constbytes
  • crypto_core_hsalsa20_inputbytes
  • crypto_core_hsalsa20_keybytes
  • crypto_core_hsalsa20_outputbytes
  • crypto_core_ristretto255_add
  • crypto_core_ristretto255_bytes
  • crypto_core_ristretto255_from_hash
  • crypto_core_ristretto255_hashbytes
  • crypto_core_ristretto255_is_valid_point
  • crypto_core_ristretto255_nonreducedscalarbytes
  • crypto_core_ristretto255_random
  • crypto_core_ristretto255_scalar_add
  • crypto_core_ristretto255_scalar_complement
  • crypto_core_ristretto255_scalar_invert
  • crypto_core_ristretto255_scalar_is_canonical
  • crypto_core_ristretto255_scalar_mul
  • crypto_core_ristretto255_scalar_negate
  • crypto_core_ristretto255_scalar_random
  • crypto_core_ristretto255_scalar_reduce
  • crypto_core_ristretto255_scalar_sub
  • crypto_core_ristretto255_scalarbytes
  • crypto_core_ristretto255_sub
  • crypto_core_salsa20
  • crypto_core_salsa2012
  • crypto_core_salsa2012_constbytes
  • crypto_core_salsa2012_inputbytes
  • crypto_core_salsa2012_keybytes
  • crypto_core_salsa2012_outputbytes
  • crypto_core_salsa208
  • crypto_core_salsa208_constbytes
  • crypto_core_salsa208_inputbytes
  • crypto_core_salsa208_keybytes
  • crypto_core_salsa208_outputbytes
  • crypto_core_salsa20_constbytes
  • crypto_core_salsa20_inputbytes
  • crypto_core_salsa20_keybytes
  • crypto_core_salsa20_outputbytes
  • crypto_generichash
  • crypto_generichash_blake2b
  • crypto_generichash_blake2b_bytes
  • crypto_generichash_blake2b_bytes_max
  • crypto_generichash_blake2b_bytes_min
  • crypto_generichash_blake2b_final
  • crypto_generichash_blake2b_init
  • crypto_generichash_blake2b_init_salt_personal
  • crypto_generichash_blake2b_keybytes
  • crypto_generichash_blake2b_keybytes_max
  • crypto_generichash_blake2b_keybytes_min
  • crypto_generichash_blake2b_keygen
  • crypto_generichash_blake2b_personalbytes
  • crypto_generichash_blake2b_salt_personal
  • crypto_generichash_blake2b_saltbytes
  • crypto_generichash_blake2b_statebytes
  • crypto_generichash_blake2b_update
  • crypto_generichash_bytes
  • crypto_generichash_bytes_max
  • crypto_generichash_bytes_min
  • crypto_generichash_final
  • crypto_generichash_init
  • crypto_generichash_keybytes
  • crypto_generichash_keybytes_max
  • crypto_generichash_keybytes_min
  • crypto_generichash_keygen
  • crypto_generichash_primitive
  • crypto_generichash_statebytes
  • crypto_generichash_update
  • crypto_hash
  • crypto_hash_bytes
  • crypto_hash_primitive
  • crypto_hash_sha256
  • crypto_hash_sha256_bytes
  • crypto_hash_sha256_final
  • crypto_hash_sha256_init
  • crypto_hash_sha256_statebytes
  • crypto_hash_sha256_update
  • crypto_hash_sha512
  • crypto_hash_sha512_bytes
  • crypto_hash_sha512_final
  • crypto_hash_sha512_init
  • crypto_hash_sha512_statebytes
  • crypto_hash_sha512_update
  • crypto_kdf_blake2b_bytes_max
  • crypto_kdf_blake2b_bytes_min
  • crypto_kdf_blake2b_contextbytes
  • crypto_kdf_blake2b_derive_from_key
  • crypto_kdf_blake2b_keybytes
  • crypto_kdf_bytes_max
  • crypto_kdf_bytes_min
  • crypto_kdf_contextbytes
  • crypto_kdf_derive_from_key
  • crypto_kdf_hkdf_sha256_bytes_max
  • crypto_kdf_hkdf_sha256_bytes_min
  • crypto_kdf_hkdf_sha256_expand
  • crypto_kdf_hkdf_sha256_extract
  • crypto_kdf_hkdf_sha256_keybytes
  • crypto_kdf_hkdf_sha256_keygen
  • crypto_kdf_hkdf_sha512_bytes_max
  • crypto_kdf_hkdf_sha512_bytes_min
  • crypto_kdf_hkdf_sha512_expand
  • crypto_kdf_hkdf_sha512_extract
  • crypto_kdf_hkdf_sha512_keybytes
  • crypto_kdf_hkdf_sha512_keygen
  • crypto_kdf_keybytes
  • crypto_kdf_keygen
  • crypto_kdf_primitive
  • crypto_kx_client_session_keys
  • crypto_kx_keypair
  • crypto_kx_primitive
  • crypto_kx_publickeybytes
  • crypto_kx_secretkeybytes
  • crypto_kx_seed_keypair
  • crypto_kx_seedbytes
  • crypto_kx_server_session_keys
  • crypto_kx_sessionkeybytes
  • crypto_onetimeauth
  • crypto_onetimeauth_bytes
  • crypto_onetimeauth_final
  • crypto_onetimeauth_init
  • crypto_onetimeauth_keybytes
  • crypto_onetimeauth_keygen
  • crypto_onetimeauth_poly1305
  • crypto_onetimeauth_poly1305_bytes
  • crypto_onetimeauth_poly1305_final
  • crypto_onetimeauth_poly1305_init
  • crypto_onetimeauth_poly1305_keybytes
  • crypto_onetimeauth_poly1305_keygen
  • crypto_onetimeauth_poly1305_statebytes
  • crypto_onetimeauth_poly1305_update
  • crypto_onetimeauth_poly1305_verify
  • crypto_onetimeauth_primitive
  • crypto_onetimeauth_statebytes
  • crypto_onetimeauth_update
  • crypto_onetimeauth_verify
  • crypto_pwhash
  • crypto_pwhash_alg_argon2i13
  • crypto_pwhash_alg_argon2id13
  • crypto_pwhash_alg_default
  • crypto_pwhash_argon2i
  • crypto_pwhash_argon2i_alg_argon2i13
  • crypto_pwhash_argon2i_bytes_max
  • crypto_pwhash_argon2i_bytes_min
  • crypto_pwhash_argon2i_memlimit_interactive
  • crypto_pwhash_argon2i_memlimit_max
  • crypto_pwhash_argon2i_memlimit_min
  • crypto_pwhash_argon2i_memlimit_moderate
  • crypto_pwhash_argon2i_memlimit_sensitive
  • crypto_pwhash_argon2i_opslimit_interactive
  • crypto_pwhash_argon2i_opslimit_max
  • crypto_pwhash_argon2i_opslimit_min
  • crypto_pwhash_argon2i_opslimit_moderate
  • crypto_pwhash_argon2i_opslimit_sensitive
  • crypto_pwhash_argon2i_passwd_max
  • crypto_pwhash_argon2i_passwd_min
  • crypto_pwhash_argon2i_saltbytes
  • crypto_pwhash_argon2i_str
  • crypto_pwhash_argon2i_str_needs_rehash
  • crypto_pwhash_argon2i_str_verify
  • crypto_pwhash_argon2i_strbytes
  • crypto_pwhash_argon2i_strprefix
  • crypto_pwhash_argon2id
  • crypto_pwhash_argon2id_alg_argon2id13
  • crypto_pwhash_argon2id_bytes_max
  • crypto_pwhash_argon2id_bytes_min
  • crypto_pwhash_argon2id_memlimit_interactive
  • crypto_pwhash_argon2id_memlimit_max
  • crypto_pwhash_argon2id_memlimit_min
  • crypto_pwhash_argon2id_memlimit_moderate
  • crypto_pwhash_argon2id_memlimit_sensitive
  • crypto_pwhash_argon2id_opslimit_interactive
  • crypto_pwhash_argon2id_opslimit_max
  • crypto_pwhash_argon2id_opslimit_min
  • crypto_pwhash_argon2id_opslimit_moderate
  • crypto_pwhash_argon2id_opslimit_sensitive
  • crypto_pwhash_argon2id_passwd_max
  • crypto_pwhash_argon2id_passwd_min
  • crypto_pwhash_argon2id_saltbytes
  • crypto_pwhash_argon2id_str
  • crypto_pwhash_argon2id_str_needs_rehash
  • crypto_pwhash_argon2id_str_verify
  • crypto_pwhash_argon2id_strbytes
  • crypto_pwhash_argon2id_strprefix
  • crypto_pwhash_bytes_max
  • crypto_pwhash_bytes_min
  • crypto_pwhash_memlimit_interactive
  • crypto_pwhash_memlimit_max
  • crypto_pwhash_memlimit_min
  • crypto_pwhash_memlimit_moderate
  • crypto_pwhash_memlimit_sensitive
  • crypto_pwhash_opslimit_interactive
  • crypto_pwhash_opslimit_max
  • crypto_pwhash_opslimit_min
  • crypto_pwhash_opslimit_moderate
  • crypto_pwhash_opslimit_sensitive
  • crypto_pwhash_passwd_max
  • crypto_pwhash_passwd_min
  • crypto_pwhash_primitive
  • crypto_pwhash_saltbytes
  • crypto_pwhash_scryptsalsa208sha256
  • crypto_pwhash_scryptsalsa208sha256_bytes_max
  • crypto_pwhash_scryptsalsa208sha256_bytes_min
  • crypto_pwhash_scryptsalsa208sha256_ll
  • crypto_pwhash_scryptsalsa208sha256_memlimit_interactive
  • crypto_pwhash_scryptsalsa208sha256_memlimit_max
  • crypto_pwhash_scryptsalsa208sha256_memlimit_min
  • crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive
  • crypto_pwhash_scryptsalsa208sha256_opslimit_interactive
  • crypto_pwhash_scryptsalsa208sha256_opslimit_max
  • crypto_pwhash_scryptsalsa208sha256_opslimit_min
  • crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive
  • crypto_pwhash_scryptsalsa208sha256_passwd_max
  • crypto_pwhash_scryptsalsa208sha256_passwd_min
  • crypto_pwhash_scryptsalsa208sha256_saltbytes
  • crypto_pwhash_scryptsalsa208sha256_str
  • crypto_pwhash_scryptsalsa208sha256_str_needs_rehash
  • crypto_pwhash_scryptsalsa208sha256_str_verify
  • crypto_pwhash_scryptsalsa208sha256_strbytes
  • crypto_pwhash_scryptsalsa208sha256_strprefix
  • crypto_pwhash_str
  • crypto_pwhash_str_alg
  • crypto_pwhash_str_needs_rehash
  • crypto_pwhash_str_verify
  • crypto_pwhash_strbytes
  • crypto_pwhash_strprefix
  • crypto_scalarmult
  • crypto_scalarmult_base
  • crypto_scalarmult_bytes
  • crypto_scalarmult_curve25519
  • crypto_scalarmult_curve25519_base
  • crypto_scalarmult_curve25519_bytes
  • crypto_scalarmult_curve25519_scalarbytes
  • crypto_scalarmult_ed25519
  • crypto_scalarmult_ed25519_base
  • crypto_scalarmult_ed25519_base_noclamp
  • crypto_scalarmult_ed25519_bytes
  • crypto_scalarmult_ed25519_noclamp
  • crypto_scalarmult_ed25519_scalarbytes
  • crypto_scalarmult_primitive
  • crypto_scalarmult_ristretto255
  • crypto_scalarmult_ristretto255_base
  • crypto_scalarmult_ristretto255_bytes
  • crypto_scalarmult_ristretto255_scalarbytes
  • crypto_scalarmult_scalarbytes
  • crypto_secretbox
  • crypto_secretbox_boxzerobytes
  • crypto_secretbox_detached
  • crypto_secretbox_easy
  • crypto_secretbox_keybytes
  • crypto_secretbox_keygen
  • crypto_secretbox_macbytes
  • crypto_secretbox_messagebytes_max
  • crypto_secretbox_noncebytes
  • crypto_secretbox_open
  • crypto_secretbox_open_detached
  • crypto_secretbox_open_easy
  • crypto_secretbox_primitive
  • crypto_secretbox_xchacha20poly1305_detached
  • crypto_secretbox_xchacha20poly1305_easy
  • crypto_secretbox_xchacha20poly1305_keybytes
  • crypto_secretbox_xchacha20poly1305_macbytes
  • crypto_secretbox_xchacha20poly1305_messagebytes_max
  • crypto_secretbox_xchacha20poly1305_noncebytes
  • crypto_secretbox_xchacha20poly1305_open_detached
  • crypto_secretbox_xchacha20poly1305_open_easy
  • crypto_secretbox_xsalsa20poly1305
  • crypto_secretbox_xsalsa20poly1305_boxzerobytes
  • crypto_secretbox_xsalsa20poly1305_keybytes
  • crypto_secretbox_xsalsa20poly1305_keygen
  • crypto_secretbox_xsalsa20poly1305_macbytes
  • crypto_secretbox_xsalsa20poly1305_messagebytes_max
  • crypto_secretbox_xsalsa20poly1305_noncebytes
  • crypto_secretbox_xsalsa20poly1305_open
  • crypto_secretbox_xsalsa20poly1305_zerobytes
  • crypto_secretbox_zerobytes
  • crypto_secretstream_xchacha20poly1305_abytes
  • crypto_secretstream_xchacha20poly1305_headerbytes
  • crypto_secretstream_xchacha20poly1305_init_pull
  • crypto_secretstream_xchacha20poly1305_init_push
  • crypto_secretstream_xchacha20poly1305_keybytes
  • crypto_secretstream_xchacha20poly1305_keygen
  • crypto_secretstream_xchacha20poly1305_messagebytes_max
  • crypto_secretstream_xchacha20poly1305_pull
  • crypto_secretstream_xchacha20poly1305_push
  • crypto_secretstream_xchacha20poly1305_rekey
  • crypto_secretstream_xchacha20poly1305_statebytes
  • crypto_secretstream_xchacha20poly1305_tag_final
  • crypto_secretstream_xchacha20poly1305_tag_message
  • crypto_secretstream_xchacha20poly1305_tag_push
  • crypto_secretstream_xchacha20poly1305_tag_rekey
  • crypto_shorthash
  • crypto_shorthash_bytes
  • crypto_shorthash_keybytes
  • crypto_shorthash_keygen
  • crypto_shorthash_primitive
  • crypto_shorthash_siphash24
  • crypto_shorthash_siphash24_bytes
  • crypto_shorthash_siphash24_keybytes
  • crypto_shorthash_siphashx24
  • crypto_shorthash_siphashx24_bytes
  • crypto_shorthash_siphashx24_keybytes
  • crypto_sign
  • crypto_sign_bytes
  • crypto_sign_detached
  • crypto_sign_ed25519
  • crypto_sign_ed25519_bytes
  • crypto_sign_ed25519_detached
  • crypto_sign_ed25519_keypair
  • crypto_sign_ed25519_messagebytes_max
  • crypto_sign_ed25519_open
  • crypto_sign_ed25519_pk_to_curve25519
  • crypto_sign_ed25519_publickeybytes
  • crypto_sign_ed25519_secretkeybytes
  • crypto_sign_ed25519_seed_keypair
  • crypto_sign_ed25519_seedbytes
  • crypto_sign_ed25519_sk_to_curve25519
  • crypto_sign_ed25519_sk_to_pk
  • crypto_sign_ed25519_sk_to_seed
  • crypto_sign_ed25519_verify_detached
  • crypto_sign_ed25519ph_final_create
  • crypto_sign_ed25519ph_final_verify
  • crypto_sign_ed25519ph_init
  • crypto_sign_ed25519ph_statebytes
  • crypto_sign_ed25519ph_update
  • crypto_sign_final_create
  • crypto_sign_final_verify
  • crypto_sign_init
  • crypto_sign_keypair
  • crypto_sign_messagebytes_max
  • crypto_sign_open
  • crypto_sign_primitive
  • crypto_sign_publickeybytes
  • crypto_sign_secretkeybytes
  • crypto_sign_seed_keypair
  • crypto_sign_seedbytes
  • crypto_sign_statebytes
  • crypto_sign_update
  • crypto_sign_verify_detached
  • crypto_stream
  • crypto_stream_chacha20
  • crypto_stream_chacha20_ietf
  • crypto_stream_chacha20_ietf_ext
  • crypto_stream_chacha20_ietf_ext_xor_ic
  • crypto_stream_chacha20_ietf_keybytes
  • crypto_stream_chacha20_ietf_keygen
  • crypto_stream_chacha20_ietf_messagebytes_max
  • crypto_stream_chacha20_ietf_noncebytes
  • crypto_stream_chacha20_ietf_xor
  • crypto_stream_chacha20_ietf_xor_ic
  • crypto_stream_chacha20_keybytes
  • crypto_stream_chacha20_keygen
  • crypto_stream_chacha20_messagebytes_max
  • crypto_stream_chacha20_noncebytes
  • crypto_stream_chacha20_xor
  • crypto_stream_chacha20_xor_ic
  • crypto_stream_keybytes
  • crypto_stream_keygen
  • crypto_stream_messagebytes_max
  • crypto_stream_noncebytes
  • crypto_stream_primitive
  • crypto_stream_salsa20
  • crypto_stream_salsa2012
  • crypto_stream_salsa2012_keybytes
  • crypto_stream_salsa2012_keygen
  • crypto_stream_salsa2012_messagebytes_max
  • crypto_stream_salsa2012_noncebytes
  • crypto_stream_salsa2012_xor
  • crypto_stream_salsa208
  • crypto_stream_salsa208_keybytes
  • crypto_stream_salsa208_keygen
  • crypto_stream_salsa208_messagebytes_max
  • crypto_stream_salsa208_noncebytes
  • crypto_stream_salsa208_xor
  • crypto_stream_salsa20_keybytes
  • crypto_stream_salsa20_keygen
  • crypto_stream_salsa20_messagebytes_max
  • crypto_stream_salsa20_noncebytes
  • crypto_stream_salsa20_xor
  • crypto_stream_salsa20_xor_ic
  • crypto_stream_xchacha20
  • crypto_stream_xchacha20_keybytes
  • crypto_stream_xchacha20_keygen
  • crypto_stream_xchacha20_messagebytes_max
  • crypto_stream_xchacha20_noncebytes
  • crypto_stream_xchacha20_xor
  • crypto_stream_xchacha20_xor_ic
  • crypto_stream_xor
  • crypto_stream_xsalsa20
  • crypto_stream_xsalsa20_keybytes
  • crypto_stream_xsalsa20_keygen
  • crypto_stream_xsalsa20_messagebytes_max
  • crypto_stream_xsalsa20_noncebytes
  • crypto_stream_xsalsa20_xor
  • crypto_stream_xsalsa20_xor_ic
  • crypto_verify_16
  • crypto_verify_16_bytes
  • crypto_verify_32
  • crypto_verify_32_bytes
  • crypto_verify_64
  • crypto_verify_64_bytes
  • escrypt_PBKDF2_SHA256
  • escrypt_alloc_region
  • escrypt_free_local
  • escrypt_free_region
  • escrypt_gensalt_r
  • escrypt_init_local
  • escrypt_kdf_nosse
  • escrypt_kdf_sse
  • escrypt_parse_setting
  • escrypt_r
  • fe25519_frombytes
  • fe25519_invert
  • fe25519_tobytes
  • ge25519_add_cached
  • ge25519_double_scalarmult_vartime
  • ge25519_from_hash
  • ge25519_from_uniform
  • ge25519_frombytes
  • ge25519_frombytes_negate_vartime
  • ge25519_has_small_order
  • ge25519_is_canonical
  • ge25519_is_on_curve
  • ge25519_is_on_main_subgroup
  • ge25519_p1p1_to_p2
  • ge25519_p1p1_to_p3
  • ge25519_p3_to_cached
  • ge25519_p3_tobytes
  • ge25519_scalarmult
  • ge25519_scalarmult_base
  • ge25519_sub_cached
  • ge25519_tobytes
  • randombytes
  • randombytes_buf
  • randombytes_buf_deterministic
  • randombytes_close
  • randombytes_implementation_name
  • randombytes_random
  • randombytes_seedbytes
  • randombytes_set_implementation
  • randombytes_stir
  • randombytes_uniform
  • ristretto255_from_hash
  • ristretto255_frombytes
  • ristretto255_p3_tobytes
  • sc25519_invert
  • sc25519_is_canonical
  • sc25519_mul
  • sc25519_muladd
  • sc25519_reduce
  • sodium_add
  • sodium_allocarray
  • sodium_base642bin
  • sodium_base64_encoded_len
  • sodium_bin2base64
  • sodium_bin2hex
  • sodium_compare
  • sodium_crit_enter
  • sodium_crit_leave
  • sodium_free
  • sodium_hex2bin
  • sodium_increment
  • sodium_init
  • sodium_is_zero
  • sodium_library_minimal
  • sodium_library_version_major
  • sodium_library_version_minor
  • sodium_malloc
  • sodium_memcmp
  • sodium_memzero
  • sodium_misuse
  • sodium_mlock
  • sodium_mprotect_noaccess
  • sodium_mprotect_readonly
  • sodium_mprotect_readwrite
  • sodium_munlock
  • sodium_pad
  • sodium_runtime_has_aesni
  • sodium_runtime_has_armcrypto
  • sodium_runtime_has_avx
  • sodium_runtime_has_avx2
  • sodium_runtime_has_avx512f
  • sodium_runtime_has_neon
  • sodium_runtime_has_pclmul
  • sodium_runtime_has_rdrand
  • sodium_runtime_has_sse2
  • sodium_runtime_has_sse3
  • sodium_runtime_has_sse41
  • sodium_runtime_has_ssse3
  • sodium_scalarmult_curve25519_sandy2x_fe51_mul
  • sodium_scalarmult_curve25519_sandy2x_fe51_nsquare
  • sodium_scalarmult_curve25519_sandy2x_fe51_pack
  • sodium_scalarmult_curve25519_sandy2x_ladder
  • sodium_set_misuse_handler
  • sodium_stackzero
  • sodium_stream_salsa20_xmm6
  • sodium_stream_salsa20_xmm6_xor_ic
  • sodium_sub
  • sodium_unpad
  • sodium_version_string
@kozw kozw self-assigned this May 12, 2020
@AKushWarrior
Copy link

Are the completed APIs stable with tests?

@kozw
Copy link
Contributor Author

kozw commented May 28, 2020

Not yet, it's work in progress. Also not released yet to pub.dartlang.org as there are still some issues to be ironed out.

@AKushWarrior
Copy link

Okay, I'll be keeping an eye out.

Has the potential to be the best cryptographic package for Flutter by far.

@kozw
Copy link
Contributor Author

kozw commented May 28, 2020

nice

@p3root
Copy link

p3root commented Jun 10, 2020

Any eta when a beta version is gona be released? Your package looks pretty solid. Do you have a sponsor page as well?

@qdm12
Copy link

qdm12 commented Jun 10, 2020

Hello, thanks for the great library, indeed the most promising crypto library for flutter.

A quick question, would you know if using the sodium ffi would work on desktop (using go-flutter for now)? Would there be a way to bundle the sodium library in the flutter app?

Thanks!

@AKushWarrior
Copy link

AKushWarrior commented Jun 10, 2020

@qdm12 not the author but... I would doubt that it works on desktop. As far as I can tell, FFI on flutter depends on some platform specific components, for which there's no desktop guide.

@kozw
Copy link
Contributor Author

kozw commented Jun 10, 2020

Any eta when a beta version is gona be released?

Dart bindings for the most interesting APIs of libsodium are complete. The release mostly depends on the FFI deployment story which doesn't work for flutter_sodium. See also flutter/flutter#33227

Update: just published flutter_sodium 0.1.0 to pub.dev. Mind you, this is still beta.

@kozw
Copy link
Contributor Author

kozw commented Jun 10, 2020

A quick question, would you know if using the sodium ffi would work on desktop (using go-flutter for now)? Would there be a way to bundle the sodium library in the flutter app?

I'm not sure this library works with go-flutter. Probably not, there is currently no solution for packaging native libraries (in both mobile and desktop apps). See also flutter/flutter#33227

Apart from the deployment issues, ffi seems to work fine with native libraries on a desktop. flutter_sodium FFI library works great with the MacOS installed libsodium library. This scenario is used for the unit tests.

@AKushWarrior
Copy link

@kozw a cursory Google search turned up an official tutorial on how to bind to native libraries from flutter.

it's kind of hacky, and I don't know if you've already considered it already, but let me know if you need a link.

@kozw
Copy link
Contributor Author

kozw commented Mar 12, 2021

As of flutter_sodium 0.2.0, the stable 1.0.0 ffi version is used. Closing this issue.

API coverage tracking has moved to #61

@kozw kozw closed this as completed Mar 12, 2021
@Sunbreak
Copy link

Thanks for your article https://asim.ihsan.io/flutter-ffi-libsodium/. Got inspired with the compote function


BTW

As discussed in the article, it should be possible to automatically parse the libsodium C headers and code in order to generate the FFI bindings and wrapper Dart code.

You could use package:ffigen now. Checkout https://github.com/woodemi/libusb.dart

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants