int sodium_init(void) { if (sodium_crit_enter() != 0) { return -1; } if (initialized != 0) { if (sodium_crit_leave() != 0) { return -1; } return 1; } _sodium_runtime_get_cpu_features(); randombytes_stir(); _sodium_alloc_init(); _crypto_pwhash_argon2i_pick_best_implementation(); _crypto_generichash_blake2b_pick_best_implementation(); _crypto_onetimeauth_poly1305_pick_best_implementation(); _crypto_scalarmult_curve25519_pick_best_implementation(); _crypto_stream_chacha20_pick_best_implementation(); initialized = 1; if (sodium_crit_leave() != 0) { return -1; } return 0; }
int sodium_init(void) { if (initialized != 0) { return 1; } _sodium_runtime_get_cpu_features(); randombytes_stir(); _sodium_alloc_init(); _crypto_generichash_blake2b_pick_best_implementation(); _crypto_onetimeauth_poly1305_pick_best_implementation(); initialized = 1; return 0; }