{"id":27159658,"url":"https://github.com/holepunchto/sodium-universal","last_synced_at":"2026-01-27T20:58:46.560Z","repository":{"id":19589209,"uuid":"87425310","full_name":"holepunchto/sodium-universal","owner":"holepunchto","description":"Universal wrapper for sodium-javascript and sodium-native working in Node.js and the Browser","archived":false,"fork":false,"pushed_at":"2025-04-06T09:54:59.000Z","size":19,"stargazers_count":69,"open_issues_count":5,"forks_count":16,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-06T10:29:53.975Z","etag":null,"topics":["browser","cryptography","libsodium","nodejs","universal"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/holepunchto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-06T12:11:03.000Z","updated_at":"2025-04-06T09:54:36.000Z","dependencies_parsed_at":"2024-01-16T05:41:55.985Z","dependency_job_id":"89a04f15-82fa-40de-a80d-ab8ad14b5bc6","html_url":"https://github.com/holepunchto/sodium-universal","commit_stats":{"total_commits":35,"total_committers":3,"mean_commits":"11.666666666666666","dds":0.4,"last_synced_commit":"2eaa0f72cb217a0da790207bae8c76f93c7e6e51"},"previous_names":["holepunchto/sodium-universal"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holepunchto%2Fsodium-universal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holepunchto%2Fsodium-universal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holepunchto%2Fsodium-universal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holepunchto%2Fsodium-universal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/holepunchto","download_url":"https://codeload.github.com/holepunchto/sodium-universal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247941692,"owners_count":21022038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser","cryptography","libsodium","nodejs","universal"],"created_at":"2025-04-08T23:00:48.283Z","updated_at":"2026-01-27T20:58:46.554Z","avatar_url":"https://github.com/holepunchto.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# sodium-universal\n\nUniversal wrapper for `sodium-javascript` and `sodium-native` working in Node.js and the Browser\n\n```sh\nnpm install sodium-universal\n```\n\n`sodium-native` ships with prebuilds for macOS, Windows, and Linux.\n\nNote that the module itself is generated on a prepublish hook.\n\n## Usage\n\n```js\nvar sodium = require('sodium-universal')\n\nvar rnd = Buffer.allocUnsafe(12) // Cryptographically random data\nsodium.randombytes_buf(rnd)\n\nconsole.log(rnd.toString('hex'))\n```\n\nWorks seamlessly with Node.js:\n\n```sh\n$ node example.js\nc7dbd46a6cc84ff2e0d1285c\n```\n\nAnd the browser:\n\nFirst install the peer dep, `sodium-javascript`.\n\n```sh\nnpm install --save sodium-javascript\n```\n\nAnd then browserify\n\n```sh\nbrowserify example.js \u003e bundle.js\n```\n\n## Introduction\n\n[`libsodium`](https://download.libsodium.org/doc/) is a collection of cryptographic primitives, providing a low-level foundation to build higher-level cryptographic applications and protocols. It is often put in contrast to RSA based cryptography and OpenSSL, even though they all share overlapping algorithms and target slightly different audiences. Sodium is a collection of modern collection of primitives, fulfilling the same cryptographic tasks, but based on simpler and more efficient algorithms.\n\nThis library provides seamless bindings to [`sodium-native`](https://github.com/sodium-friends/sodium-native), which is the original C implementation of `libsodium` exposed as a Node native module. For the browser we expose [`sodium-javascript`](https://github.com/sodium-friends/sodium-javascript), using the `package.json` [`browser`](https://github.com/defunctzombie/package-browser-field-spec) field, which is supported by most bundlers.\n\n## API\n\nPlease refer to [`sodium-native`](https://github.com/sodium-friends/sodium-native#api) and [`sodium-javascript`](https://github.com/sodium-friends/sodium-javascript#api). Note that the two modules do not yet have feature parity, where `sodium-native` is the more featureful of the two.\n\n## Compatibilty\n\n\u003c!-- Generated by build-scripts/symbols.js with\n     sodium-native@3.2.0\n     sodium-javascript@0.6.0 --\u003e\n\n| C Library Symbol                                         |   `sodium-native`    | `sodium-javascript`  |\n| :------------------------------------------------------- | :------------------: | :------------------: |\n| `crypto_aead_chacha20poly1305_ietf_ABYTES`               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_decrypt`              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_decrypt_detached`     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_encrypt`              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_encrypt_detached`     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_KEYBYTES`             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_keygen`               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX`     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_NPUBBYTES`            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_chacha20poly1305_ietf_NSECBYTES`            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_aead_xchacha20poly1305_ietf_ABYTES`              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_decrypt`             |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_decrypt_detached`    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_encrypt`             |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_encrypt_detached`    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_KEYBYTES`            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_keygen`              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX`    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_NPUBBYTES`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_aead_xchacha20poly1305_ietf_NSECBYTES`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_auth`                                            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_auth_BYTES`                                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_auth_KEYBYTES`                                   |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_auth_verify`                                     |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_BEFORENMBYTES`                               | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_box_BOXZEROBYTES`                                | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_box_detached`                                    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_easy`                                        |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_keypair`                                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_MACBYTES`                                    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_NONCEBYTES`                                  |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_open_detached`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_open_easy`                                   |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_box_PUBLICKEYBYTES`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_seal`                                        |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_seal_open`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_SEALBYTES`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_SECRETKEYBYTES`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_seed_keypair`                                |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_SEEDBYTES`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_box_ZEROBYTES`                                   | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_core_ed25519_add`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_BYTES`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_from_uniform`                       |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_is_valid_point`                     |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_NONREDUCEDSCALARBYTES`              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_add`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_complement`                  |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_invert`                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_negate`                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_random`                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_reduce`                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_scalar_sub`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_SCALARBYTES`                        |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_sub`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_core_ed25519_UNIFORMBYTES`                       |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_generichash`                                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_BYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_BYTES_MAX`                           |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_BYTES_MIN`                           |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_final`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_generichash_init`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_generichash_KEYBYTES`                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_KEYBYTES_MAX`                        |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_KEYBYTES_MIN`                        |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_generichash_keygen`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_generichash_STATEBYTES`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_generichash_update`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash`                                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_BYTES`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_sha256`                                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_sha256_BYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_sha256_final`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha256_init`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha256_STATEBYTES`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha256_update`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha512`                                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_sha512_BYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_hash_sha512_final`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha512_init`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha512_STATEBYTES`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_hash_sha512_update`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_kdf_BYTES_MAX`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kdf_BYTES_MIN`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kdf_CONTEXTBYTES`                                |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kdf_derive_from_key`                             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kdf_KEYBYTES`                                    |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kdf_keygen`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_client_session_keys`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_kx_keypair`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_PUBLICKEYBYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_SECRETKEYBYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_seed_keypair`                                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_SEEDBYTES`                                    |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_kx_server_session_keys`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_kx_SESSIONKEYBYTES`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth`                                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_onetimeauth_BYTES`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_final`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_init`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_KEYBYTES`                            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_STATEBYTES`                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_update`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_onetimeauth_verify`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_pwhash`                                          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_BYTES_MAX`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_BYTES_MIN`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_SALTBYTES`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256`                     |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_BYTES_MAX`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_BYTES_MIN`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_SALTBYTES`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_str`                 |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_str_needs_rehash`    |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_str_verify`          |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_scryptsalsa208sha256_STRBYTES`            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_str`                                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_str_needs_rehash`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_str_verify`                               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_pwhash_STRBYTES`                                 |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_scalarmult_base`                                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_scalarmult_BYTES`                                |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_scalarmult_ed25519`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_ed25519_base`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_ed25519_base_noclamp`                 |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_ed25519_BYTES`                        |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_ed25519_noclamp`                      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_ed25519_SCALARBYTES`                  |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_scalarmult_SCALARBYTES`                          |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox`                                       | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_secretbox_BOXZEROBYTES`                          | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_secretbox_detached`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_easy`                                  |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_KEYBYTES`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_MACBYTES`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_NONCEBYTES`                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_open`                                  | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_secretbox_open_detached`                         |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_open_easy`                             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_secretbox_ZEROBYTES`                             | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_secretstream_xchacha20poly1305_ABYTES`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_HEADERBYTES`      |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_init_pull`        |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_init_push`        |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_KEYBYTES`         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_keygen`           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX` |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_pull`             |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_push`             |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_rekey`            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_secretstream_xchacha20poly1305_STATEBYTES`       |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_shorthash`                                       |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_shorthash_BYTES`                                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_shorthash_KEYBYTES`                              |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign`                                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_BYTES`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_detached`                                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_ed25519_pk_to_curve25519`                   |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_sign_ed25519_sk_to_curve25519`                   |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_sign_ed25519_sk_to_pk`                           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_sign_keypair`                                    |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_open`                                       |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_PUBLICKEYBYTES`                             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_SECRETKEYBYTES`                             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_seed_keypair`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_SEEDBYTES`                                  |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_sign_verify_detached`                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream`                                          |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20`                                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf`                            |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf_KEYBYTES`                   |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX`           |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf_NONCEBYTES`                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf_xor`                        |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_ietf_xor_ic`                     |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_KEYBYTES`                        |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_MESSAGEBYTES_MAX`                |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_NONCEBYTES`                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_xor`                             |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_chacha20_xor_ic`                          |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_KEYBYTES`                                 |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_NONCEBYTES`                               |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_stream_salsa20_KEYBYTES`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_salsa20_MESSAGEBYTES_MAX`                 |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_salsa20_NONCEBYTES`                       |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_salsa20_xor`                              |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_salsa20_xor_ic`                           |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20`                                |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20_KEYBYTES`                       |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20_MESSAGEBYTES_MAX`               |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20_NONCEBYTES`                     |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20_xor`                            |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xchacha20_xor_ic`                         |  :white_check_mark:  | :small_red_triangle: |\n| `crypto_stream_xor`                                      |  :white_check_mark:  |  :white_check_mark:  |\n| `crypto_verify_16`                                       | :small_red_triangle: |  :white_check_mark:  |\n| `crypto_verify_32`                                       | :small_red_triangle: |  :white_check_mark:  |\n| `randombytes_buf`                                        |  :white_check_mark:  |  :white_check_mark:  |\n| `randombytes_buf_deterministic`                          |  :white_check_mark:  | :small_red_triangle: |\n| `randombytes_random`                                     |  :white_check_mark:  | :small_red_triangle: |\n| `randombytes_SEEDBYTES`                                  |  :white_check_mark:  | :small_red_triangle: |\n| `randombytes_uniform`                                    |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_add`                                             |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_compare`                                         |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_free`                                            |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_increment`                                       |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_is_zero`                                         |  :white_check_mark:  |  :white_check_mark:  |\n| `sodium_malloc`                                          |  :white_check_mark:  |  :white_check_mark:  |\n| `sodium_memcmp`                                          |  :white_check_mark:  |  :white_check_mark:  |\n| `sodium_memzero`                                         |  :white_check_mark:  |  :white_check_mark:  |\n| `sodium_mlock`                                           |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_mprotect_noaccess`                               |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_mprotect_readonly`                               |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_mprotect_readwrite`                              |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_munlock`                                         |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_pad`                                             |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_sub`                                             |  :white_check_mark:  | :small_red_triangle: |\n| `sodium_unpad`                                           |  :white_check_mark:  | :small_red_triangle: |\n\n### Missing altogether (Ctrl + F friendly)\n\n`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_KEYBYTES`, `crypto_aead_chacha20poly1305_keygen`, `crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX`, `crypto_aead_chacha20poly1305_NPUBBYTES`, `crypto_aead_chacha20poly1305_NSECBYTES`, `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_keygen`, `crypto_auth_primitive`, `crypto_box`, `crypto_box_afternm`, `crypto_box_beforenm`, `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_afternm`, `crypto_box_easy_afternm`, `crypto_box_MESSAGEBYTES_MAX`, `crypto_box_open`, `crypto_box_open_afternm`, `crypto_box_open_detached_afternm`, `crypto_box_open_easy_afternm`, `crypto_box_primitive`, `crypto_core_ed25519_from_hash`, `crypto_core_ed25519_HASHBYTES`, `crypto_core_ed25519_random`, `crypto_core_ed25519_scalar_mul`, `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_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_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_primitive`, `crypto_hash_primitive`, `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_primitive`, `crypto_kx_primitive`, `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_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_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_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_strprefix`, `crypto_pwhash_str_alg`, `crypto_pwhash_strprefix`, `crypto_scalarmult_curve25519`, `crypto_scalarmult_curve25519_base`, `crypto_scalarmult_curve25519_BYTES`, `crypto_scalarmult_curve25519_SCALARBYTES`, `crypto_scalarmult_primitive`, `crypto_scalarmult_ristretto255`, `crypto_scalarmult_ristretto255_base`, `crypto_scalarmult_ristretto255_BYTES`, `crypto_scalarmult_ristretto255_SCALARBYTES`, `crypto_secretbox_keygen`, `crypto_secretbox_MESSAGEBYTES_MAX`, `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_secretstream_xchacha20poly1305_tag_final`, `crypto_secretstream_xchacha20poly1305_tag_message`, `crypto_secretstream_xchacha20poly1305_tag_push`, `crypto_secretstream_xchacha20poly1305_tag_rekey`, `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_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_PUBLICKEYBYTES`, `crypto_sign_ed25519_SECRETKEYBYTES`, `crypto_sign_ed25519_seed_keypair`, `crypto_sign_ed25519_SEEDBYTES`, `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_edwards25519sha512batch`, `crypto_sign_edwards25519sha512batch_keypair`, `crypto_sign_edwards25519sha512batch_open`, `crypto_sign_final_create`, `crypto_sign_final_verify`, `crypto_sign_init`, `crypto_sign_MESSAGEBYTES_MAX`, `crypto_sign_primitive`, `crypto_sign_STATEBYTES`, `crypto_sign_update`, `crypto_stream_chacha20_ietf_keygen`, `crypto_stream_chacha20_keygen`, `crypto_stream_keygen`, `crypto_stream_MESSAGEBYTES_MAX`, `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_keygen`, `crypto_stream_xchacha20_keygen`, `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_BYTES`, `crypto_verify_32_BYTES`, `crypto_verify_64`, `crypto_verify_64_BYTES`, `randombytes`, `randombytes_close`, `randombytes_implementation_name`, `randombytes_internal_implementation`, `randombytes_set_implementation`, `randombytes_stir`, `randombytes_sysrandom_implementation`, `sodium_allocarray`, `sodium_base642bin`, `sodium_base64_encoded_len`, `sodium_bin2base64`, `sodium_bin2hex`, `sodium_hex2bin`, `sodium_init`, `sodium_library_minimal`, `sodium_library_version_major`, `sodium_library_version_minor`, `sodium_misuse`, `sodium_runtime_has_aesni`, `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_set_misuse_handler`, `sodium_stackzero`, `sodium_version_string`\n\n## License\n\n[MIT](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholepunchto%2Fsodium-universal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fholepunchto%2Fsodium-universal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholepunchto%2Fsodium-universal/lists"}