diff --git a/rebar.config b/rebar.config index 1d6ac99..88873b9 100644 --- a/rebar.config +++ b/rebar.config @@ -5,8 +5,7 @@ {erl_opts, [debug_info]}. {deps, [ {gmbytecode, - {git, "https://git.qpq.swiss/QPQ-AG/gmbytecode.git", - {ref, "97cea33be8f3a35d26055664da7aa59531ff5537"}}} + {git, "https://git.qpq.swiss/QPQ-AG/gmbytecode.git", {ref, "54dc140629"}}} , {eblake2, "1.0.0"} , {jsx, {git, "https://github.com/talentdeficit/jsx.git", {tag, "2.8.0"}}} ]}. diff --git a/rebar.lock b/rebar.lock index dd741ca..8e1c93d 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,28 +1,31 @@ +{"1.2.0", [{<<"base58">>, {git,"https://git.qpq.swiss/QPQ-AG/erl-base58.git", {ref,"e6aa62eeae3d4388311401f06e4b939bf4e94b9c"}}, 2}, - {<<"eblake2">>, - {git,"https://git.qpq.swiss/QPQ-AG/eblake2.git", - {ref,"b29d585b8760746142014884007eb8441a3b6a14"}}, - 0}, + {<<"eblake2">>,{pkg,<<"eblake2">>,<<"1.0.0">>},0}, {<<"enacl">>, {git,"https://git.qpq.swiss/QPQ-AG/enacl.git", {ref,"4eb7ec70084ba7c87b1af8797c4c4e90c84f95a2"}}, 2}, - {<<"getopt">>, - {git,"https://git.qpq.swiss/QPQ-AG/getopt.git", - {ref,"dbab6262a2430809430deda9d8650f58f9d80898"}}, - 1}, + {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.1">>},1}, {<<"gmbytecode">>, {git,"https://git.qpq.swiss/QPQ-AG/gmbytecode.git", - {ref,"97cea33be8f3a35d26055664da7aa59531ff5537"}}, + {ref,"54dc140629b3af5de2043f52ba9dc36aff6b949d"}}, 0}, {<<"gmserialization">>, {git,"https://git.qpq.swiss/QPQ-AG/gmserialization.git", - {ref,"ac64e01b0f675c1a34c70a827062f381920742db"}}, + {ref,"9d2ecc00d32ea295309563e54a81636ecb597e96"}}, 1}, {<<"jsx">>, {git,"https://github.com/talentdeficit/jsx.git", {ref,"3074d4865b3385a050badf7828ad31490d860df5"}}, - 0}]. + 0}]}. +[ +{pkg_hash,[ + {<<"eblake2">>, <<"EC8AD20E438AAB3F2E8D5D118C366A0754219195F8A0F536587440F8F9BCF2EF">>}, + {<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>}]}, +{pkg_hash_ext,[ + {<<"eblake2">>, <<"3C4D300A91845B25D501929A26AC2E6F7157480846FAB2347A4C11AE52E08A99">>}, + {<<"getopt">>, <<"53E1AB83B9CEB65C9672D3E7A35B8092E9BDC9B3EE80721471A161C10C59959C">>}]} +]. diff --git a/src/so_ast_infer_types.erl b/src/so_ast_infer_types.erl index 1c7ee1d..cc3bb20 100644 --- a/src/so_ast_infer_types.erl +++ b/src/so_ast_infer_types.erl @@ -781,9 +781,9 @@ global_env() -> {"verify_sig_secp256k1", Fun([Hash, Bytes(64), SignId], Bool)}, {"ecverify_secp256k1", Fun([Hash, Bytes(20), Bytes(65)], Bool)}, {"ecrecover_secp256k1", Fun([Hash, Bytes(65)], Option(Bytes(20)))}, - {"verify_sig_mldsa44", Fun([Hash, Bytes(any), SignId], Bool)}, - {"verify_sig_mldsa65", Fun([Hash, Bytes(any), SignId], Bool)}, - {"verify_sig_mldsa87", Fun([Hash, Bytes(any), SignId], Bool)}, + {"verify_sig_mldsa44", Fun([Hash, Bytes(1312), Bytes(2420)], Bool)}, + {"verify_sig_mldsa65", Fun([Hash, Bytes(1952), Bytes(3309)], Bool)}, + {"verify_sig_mldsa87", Fun([Hash, Bytes(2592), Bytes(4627)], Bool)}, {"sha3", Fun1(A, Hash)}, {"sha256", Fun1(A, Hash)}, {"blake2b", Fun1(A, Hash)}, diff --git a/src/so_fcode_to_fate.erl b/src/so_fcode_to_fate.erl index 43dfe10..c986577 100644 --- a/src/so_fcode_to_fate.erl +++ b/src/so_fcode_to_fate.erl @@ -693,6 +693,9 @@ op_to_scode(crypto_verify_sig) -> gmb_fate_ops:verify_sig(?a, ?a, ?a, op_to_scode(crypto_verify_sig_secp256k1) -> gmb_fate_ops:verify_sig_secp256k1(?a, ?a, ?a, ?a); op_to_scode(crypto_ecverify_secp256k1) -> gmb_fate_ops:ecverify_secp256k1(?a, ?a, ?a, ?a); op_to_scode(crypto_ecrecover_secp256k1) -> gmb_fate_ops:ecrecover_secp256k1(?a, ?a, ?a); +op_to_scode(crypto_verify_sig_mldsa44) -> gmb_fate_ops:verify_sig_mldsa44(?a, ?a, ?a, ?a); +op_to_scode(crypto_verify_sig_mldsa65) -> gmb_fate_ops:verify_sig_mldsa65(?a, ?a, ?a, ?a); +op_to_scode(crypto_verify_sig_mldsa87) -> gmb_fate_ops:verify_sig_mldsa87(?a, ?a, ?a, ?a); op_to_scode(crypto_sha3) -> gmb_fate_ops:sha3(?a, ?a); op_to_scode(crypto_sha256) -> gmb_fate_ops:sha256(?a, ?a); op_to_scode(crypto_blake2b) -> gmb_fate_ops:blake2b(?a, ?a); @@ -1033,6 +1036,9 @@ attributes(I) -> {'POSEIDON', A, B, C} -> Pure(A, [B, C]); {'VERIFY_SIG', A, B, C, D} -> Pure(A, [B, C, D]); {'VERIFY_SIG_SECP256K1', A, B, C, D} -> Pure(A, [B, C, D]); + {'VERIFY_SIG_MLDSA44', A, B, C, D} -> Pure(A, [B, C, D]); + {'VERIFY_SIG_MLDSA65', A, B, C, D} -> Pure(A, [B, C, D]); + {'VERIFY_SIG_MLDSA87', A, B, C, D} -> Pure(A, [B, C, D]); {'ECVERIFY_SECP256K1', A, B, C, D} -> Pure(A, [B, C, D]); {'ECRECOVER_SECP256K1', A, B, C} -> Pure(A, [B, C]); {'CONTRACT_TO_ADDRESS', A, B} -> Pure(A, [B]);