Skip to content

Commit

Permalink
Use distinct types for sized and unsized strings
Browse files Browse the repository at this point in the history
Fixes #322
  • Loading branch information
jedisct1 committed Dec 30, 2024
1 parent d127662 commit dc7af52
Show file tree
Hide file tree
Showing 94 changed files with 106 additions and 92 deletions.
2 changes: 1 addition & 1 deletion browsers-test/aead_aegis128l.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_aegis256.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_aes256gcm.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_aes256gcm2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_chacha20poly1305.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_chacha20poly13052.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/aead_xchacha20poly1305.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth3.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth5.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth6.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/auth7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box8.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box_easy.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box_easy2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box_seal.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/box_seed.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/chacha20.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/codecs.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core1.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core3.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core4.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core5.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core6.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core_ed25519.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/core_ristretto255.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/ed25519_convert.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/generichash.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/generichash2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/generichash3.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/hash.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/hash3.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/kdf.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/kdf_hkdf.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/keygen.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/kx.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/metamorphic.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/misuse.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/onetimeauth.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/onetimeauth2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/onetimeauth7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/pwhash_argon2i.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/pwhash_argon2id.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/pwhash_scrypt.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/pwhash_scrypt_ll.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/randombytes.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult5.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult6.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult8.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult_ed25519.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/scalarmult_ristretto255.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox8.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox_easy.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretbox_easy2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/secretstream_xchacha20poly1305.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/shorthash.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/sign.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/siphashx24.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/sodium_core.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/sodium_utils.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/sodium_version.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/stream.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/stream2.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/stream3.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/stream4.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/verify1.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browsers-test/xchacha20.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/browsers-sumo/sodium.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/browsers/sodium.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modules-sumo/libsodium-sumo.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modules-sumo/libsodium-wrappers.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modules/libsodium-wrappers.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modules/libsodium.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package-libsodium-wrappers-sumo.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"libsodium-sumo": "^0.7.15"
},
"devDependencies": {
"terser": "^5.31.2"
"terser": "^5.37.0"
},
"keywords": [
"crypto",
Expand Down
2 changes: 1 addition & 1 deletion package-libsodium-wrappers.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"libsodium": "^0.7.15"
},
"devDependencies": {
"terser": "^5.31.2"
"terser": "^5.37.0"
},
"keywords": [
"crypto",
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,8 @@
"fs": false,
"path": false,
"stream": false
},
"dependencies": {
"terser": "^5.37.0"
}
}
4 changes: 3 additions & 1 deletion wrapper/build-doc.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,10 @@ exports.buildDocForSymbol = function (s) {
sDoc += "Secretstream XChaCha20Poly1305 state address";
} else if (paramType == "randombytes_implementation") {
sDoc += "Randombytes implementation";
} else if (paramType == "string") {
} else if (paramType == "unsized_string") {
sDoc += "A string";
} else if (paramType == "string") {
sDoc += "A string with a fixed length";
} else if (paramType == "u64") {
sDoc += "An unsigned int or 64-bit BigInt";
} else throw new Error("Unknown parameter type: " + paramType);
Expand Down
2 changes: 1 addition & 1 deletion wrapper/macros/input_string.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ if (typeof {var_name} !== "string") {
_free_and_throw_type_error(address_pool, "{var_name} must be a string");
}
{var_name} = from_string({var_name} + "\0");
if ({var_name}_length != undefined && {var_name}.length - 1 !== {var_name}_length) {
if ({var_name}.length - 1 !== {var_length}) {
_free_and_throw_type_error(address_pool, "invalid {var_name} length");
}
var {var_name}_address = _to_allocated_buf_address({var_name}),
Expand Down
9 changes: 9 additions & 0 deletions wrapper/macros/input_unsized_string.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// ---------- input: {var_name} (string)

if (typeof {var_name} !== "string") {
_free_and_throw_type_error(address_pool, "{var_name} must be a string");
}
{var_name} = from_string({var_name} + "\0");
var {var_name}_address = _to_allocated_buf_address({var_name}),
{var_name}_length = {var_name}.length - 1;
address_pool.push({var_name}_address);
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"inputs": [
{
"name": "hashed_password",
"type": "string"
"type": "unsized_string"
},
{
"name": "password",
Expand Down
2 changes: 1 addition & 1 deletion wrapper/symbols/crypto_pwhash_str_needs_rehash.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"inputs": [
{
"name": "hashed_password",
"type": "string"
"type": "unsized_string"
},
{
"name": "opsLimit",
Expand Down
2 changes: 1 addition & 1 deletion wrapper/symbols/crypto_pwhash_str_verify.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"inputs": [
{
"name": "hashed_password",
"type": "string"
"type": "unsized_string"
},
{
"name": "password",
Expand Down

0 comments on commit dc7af52

Please sign in to comment.