diff --git a/Cargo.lock b/Cargo.lock index 12866b6d7cc32f8c88d1809124311ce55eecb1b4..b15cd52a29e35ae7b076c9534a3cbb6717d7e6d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,34 +1,35 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "aes" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" dependencies = [ "aes-soft", "aesni", - "block-cipher", + "cipher", ] [[package]] name = "aes-soft" -version = "0.4.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4925647ee64e5056cf231608957ce7c81e12d6d6e316b9ce1404778cc1d35fa7" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" dependencies = [ - "block-cipher", - "byteorder", + "cipher", "opaque-debug", ] [[package]] name = "aesni" -version = "0.7.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050d39b0b7688b3a3254394c3e30a9d66c41dcf9b05b0e2dbdc623f6505d264" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" dependencies = [ - "block-cipher", + "cipher", "opaque-debug", ] @@ -46,9 +47,15 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bitflags" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "blake3" @@ -62,29 +69,20 @@ dependencies = [ "cfg-if 0.1.10", "constant_time_eq", "crypto-mac", - "digest 0.9.0", -] - -[[package]] -name = "block-cipher" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10" -dependencies = [ - "generic-array 0.14.4", + "digest", ] [[package]] name = "bs58" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bumpalo" -version = "3.6.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9" +checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" [[package]] name = "byteorder" @@ -94,9 +92,9 @@ checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" [[package]] name = "cc" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" [[package]] name = "cfg-if" @@ -110,6 +108,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -122,16 +129,10 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.4", + "generic-array", "subtle", ] -[[package]] -name = "cryptoxide" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d72d614cd84f5e3a5611f09abcf5cc2fe07a37bf05ff864b85119ea61db9f5fe" - [[package]] name = "ctor" version = "0.1.19" @@ -144,40 +145,31 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "2.1.2" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8" +checksum = "f627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723f" dependencies = [ "byteorder", - "digest 0.8.1", + "digest", "rand_core", "subtle", "zeroize", ] -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.3", -] - [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4", + "generic-array", ] [[package]] name = "dup-crypto" -version = "0.41.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6b6eb9f9a9e92e70515090be3733857966f2a635564f36e78af047e63a1bf" +checksum = "97b1ebfa9edbb53cd4434f01877fcd74fb2416b93a217754d2daecbeecad67eb" dependencies = [ "aes", "arrayvec", @@ -185,9 +177,8 @@ dependencies = [ "blake3", "bs58", "byteorder", - "cryptoxide", "curve25519-dalek", - "getrandom", + "getrandom 0.2.2", "once_cell", "ring", "serde", @@ -204,15 +195,6 @@ dependencies = [ "pyo3", ] -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.4" @@ -230,10 +212,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if 1.0.0", - "js-sys", "libc", - "wasi", - "wasm-bindgen", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", ] [[package]] @@ -249,10 +240,24 @@ dependencies = [ [[package]] name = "indoc" -version = "1.0.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a75aeaaef0ce18b58056d306c27b07436fbb34b8816c53094b76dd81803136" +checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8" dependencies = [ + "indoc-impl", + "proc-macro-hack", +] + +[[package]] +name = "indoc-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", "unindent", ] @@ -289,9 +294,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.47" +version = "0.3.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" +checksum = "dc9f84f9b115ce7843d60706df1422a916680bfdfcbdb0447c5614ff9d7e4d78" dependencies = [ "wasm-bindgen", ] @@ -304,9 +309,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.86" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a" [[package]] name = "lock_api" @@ -328,15 +333,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.5.2" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "opaque-debug" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "parking_lot" @@ -351,9 +356,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" dependencies = [ "cfg-if 1.0.0", "instant", @@ -365,9 +370,28 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.4" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d65c4d95931acda4498f675e332fcbdc9a06705cd07086c510e9b6009cd1c1" +checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" +dependencies = [ + "paste-impl", + "proc-macro-hack", +] + +[[package]] +name = "paste-impl" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" +dependencies = [ + "proc-macro-hack", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" @@ -380,9 +404,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00ca634cf3acd58a599b535ed6cb188223298977d471d146121792bfa23b754c" +checksum = "4837b8e8e18a102c23f79d1e9a110b597ea3b684c95e874eb1ad88f8683109c3" dependencies = [ "cfg-if 1.0.0", "ctor", @@ -397,9 +421,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483ac516dbda6789a5b4be0271e7a31b9ad4ec8c0a5955050e8076f72bdbef8f" +checksum = "a47f2c300ceec3e58064fd5f8f5b61230f2ffd64bde4970c81fdd0563a2db1bb" dependencies = [ "pyo3-macros-backend", "quote", @@ -408,9 +432,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15230cabcda008f03565ed8bac40f094cbb5ee1b46e6551f1ec3a0e922cf7df9" +checksum = "87b097e5d84fcbe3e167f400fbedd657820a375b034c78bd852050749a575d66" dependencies = [ "proc-macro2", "quote", @@ -419,9 +443,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ "proc-macro2", ] @@ -432,14 +456,17 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.16", ] [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +dependencies = [ + "bitflags", +] [[package]] name = "ring" @@ -464,18 +491,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.123" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" +checksum = "bd761ff957cb2a45fbb9ab3da6512de9de55872866160b23c25f1a841e99d29f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.123" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" +checksum = "1800f7693e94e186f5e25a28291ae1570da908aff7d97a095dec1e56ff99069b" dependencies = [ "proc-macro2", "quote", @@ -502,9 +529,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.60" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +checksum = "123a78a3596b24fee53a6464ce52d8ecbf62241e6294c7e7fe12086cd161f512" dependencies = [ "proc-macro2", "quote", @@ -525,18 +552,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" +checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" +checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" dependencies = [ "proc-macro2", "quote", @@ -579,11 +606,17 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + [[package]] name = "wasm-bindgen" -version = "0.2.70" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" +checksum = "7ee1280240b7c461d6a0071313e08f34a60b0365f14260362e5a2b17d1d31aa7" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -591,9 +624,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.70" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" +checksum = "5b7d8b6942b8bb3a9b0e73fc79b98095a27de6fa247615e59d096754a3bc2aa8" dependencies = [ "bumpalo", "lazy_static", @@ -606,9 +639,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.70" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" +checksum = "e5ac38da8ef716661f0f36c0d8320b89028efe10c7c0afde65baffb496ce0d3b" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -616,9 +649,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.70" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" +checksum = "cc053ec74d454df287b9374ee8abb36ffd5acb95ba87da3ba5b7d3fe20eb401e" dependencies = [ "proc-macro2", "quote", @@ -629,15 +662,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.70" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" +checksum = "7d6f8ec44822dd71f5f221a5847fb34acd9060535c1211b70a05844c0f6383b1" [[package]] name = "web-sys" -version = "0.3.47" +version = "0.3.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" +checksum = "ec600b26223b2948cedfde2a0aa6756dcf1fef616f43d7b3097aaf53a6c4d92b" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index 541be4a999e305093acc460c6abc7eb9a5ead421..940aa0df3c4b32440584750583948f5ac6233980 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,8 +18,8 @@ name = "dup_crypto_py" crate-type = ["cdylib"] [dependencies] -dup-crypto = { version = "0.41.0", features = ["dewif", "private_message", "pubkey_check", "rand", "mnemonic", "mnemonic_all_languages"] } +dup-crypto = { version = "0.46.0", features = ["dewif", "private_message", "pubkey_check", "mnemonic", "mnemonic_all_languages"] } [dependencies.pyo3] -version = "0.13.1" +version = "0.13.2" features = ["extension-module"] diff --git a/py/__test__.py b/py/__test__.py index c11a70e047fb55cb24c6649b92577625c32634aa..382b95b9904d49cd0652dc3982a8bd0ce5ba898c 100644 --- a/py/__test__.py +++ b/py/__test__.py @@ -29,6 +29,10 @@ def test(): d = dup_crypto.dewif.read_dewif(dewif, "My super passphrase", dup_crypto.dewif.CURRENCY_G1_TEST) assert len(d) == 1 assert d[0].pubkey == keypair.pubkey + dewif = dup_crypto.dewif.change_dewif_passphrase(dewif, "My super passphrase", "Another passphrase") + d = dup_crypto.dewif.read_dewif(dewif, "Another passphrase") + assert len(d) == 1 + assert d[0].pubkey == keypair.pubkey assert dup_crypto.keys.ed25519.Keypair.from_scrypt("a", "b").pubkey.to_base58() == "AoxVA41dGL2s4ogMNdbCw3FFYjFo5FPK36LuiW1tjGbG" assert dup_crypto.keys.ed25519.Keypair.from_seed32(dup_crypto.seeds.Seed32.from_scrypt(b"a", b"b")).pubkey.to_base58() == "AoxVA41dGL2s4ogMNdbCw3FFYjFo5FPK36LuiW1tjGbG" diff --git a/src/dewif/mod.rs b/src/dewif/mod.rs index 4d04630f63b38a6011705e7ab53c6be72dd474aa..5b1a78f10c9a5f4123f5f0ec722aece4b81d49ad 100644 --- a/src/dewif/mod.rs +++ b/src/dewif/mod.rs @@ -60,9 +60,29 @@ fn write_dewif(currency: u32, keypair: Keypair, log_n: u8, passphrase: String) - ) } +/// Change DEWIF file passphrase +/// +/// Arguments: +/// content: str +/// old_passphrase: str +/// new_passphrase: str +/// +/// Returns: str +#[pyfunction] +#[text_signature = "(content, old_passphrase, new_passphrase, /)"] +fn change_dewif_passphrase( + content: &str, + old_passphrase: &str, + new_passphrase: &str, +) -> PyResult<String> { + dup_crypto::dewif::change_dewif_passphrase(content, old_passphrase, new_passphrase) + .map_err(|e| PyException::new_err(format!("{:?}", e))) +} + pub fn init_module(m: &PyModule) -> PyResult<()> { m.add_function(pyo3::wrap_pyfunction!(read_dewif, m)?)?; m.add_function(pyo3::wrap_pyfunction!(write_dewif, m)?)?; + m.add_function(pyo3::wrap_pyfunction!(change_dewif_passphrase, m)?)?; m.add("CURRENCY_G1", dup_crypto::dewif::G1_CURRENCY)?; m.add("CURRENCY_G1_TEST", dup_crypto::dewif::G1_TEST_CURRENCY) } diff --git a/src/keys/ed25519/mod.rs b/src/keys/ed25519/mod.rs index b41e7fd1a7f09381330a5f3d8ffedfb2b93c20c7..ff80fffddcb7eeff57657461651e8346d66d240f 100644 --- a/src/keys/ed25519/mod.rs +++ b/src/keys/ed25519/mod.rs @@ -28,7 +28,7 @@ impl Pubkey { #[staticmethod] #[text_signature = "(str)"] fn from_base58(raw: &str) -> PyResult<Self> { - match dup_crypto::keys::ed25519::PublicKey::from_base58(raw) { + match dup_crypto::keys::ed25519::PublicKey::from_base58_with_checksum_opt(raw) { Ok(v) => Ok(Self { inner: v }), Err(e) => Err(PyValueError::new_err(format!("{:?}", e))), } @@ -39,6 +39,11 @@ impl Pubkey { self.inner.to_base58() } + #[text_signature = "($self)"] + fn checksum(&self) -> String { + self.inner.checksum() + } + #[text_signature = "($self, msg, signature, /)"] fn verify(&self, msg: &[u8], signature: &[u8]) -> PyResult<bool> { match signature.try_into() { diff --git a/src/mnemonic/mod.rs b/src/mnemonic/mod.rs index 33822e97399ff4e3c042b6485058c26a8dee98bd..683b970f6fadd35953427898e9beb003c925bfb9 100644 --- a/src/mnemonic/mod.rs +++ b/src/mnemonic/mod.rs @@ -30,7 +30,7 @@ impl Mnemonic { inner: dup_crypto::mnemonic::Mnemonic::new( dup_crypto::mnemonic::MnemonicType::for_word_count(n_words) .map_err(|_| PyValueError::new_err("Invalid word count"))?, - language_from_str(lang).ok_or(PyValueError::new_err("Unknown language"))?, + language_from_str(lang).ok_or_else(|| PyValueError::new_err("Unknown language"))?, ) .map_err(|e| PyException::new_err(format!("{:?}", e)))?, }) @@ -42,7 +42,7 @@ impl Mnemonic { Ok(Self { inner: dup_crypto::mnemonic::Mnemonic::from_entropy( entropy, - language_from_str(lang).ok_or(PyValueError::new_err("Unknown language"))?, + language_from_str(lang).ok_or_else(|| PyValueError::new_err("Unknown language"))?, ) .map_err(|e| PyException::new_err(format!("{:?}", e)))?, }) @@ -54,7 +54,7 @@ impl Mnemonic { Ok(Self { inner: dup_crypto::mnemonic::Mnemonic::from_phrase( phrase, - language_from_str(lang).ok_or(PyValueError::new_err("Unknown language"))?, + language_from_str(lang).ok_or_else(|| PyValueError::new_err("Unknown language"))?, ) .map_err(|e| PyException::new_err(format!("{:?}", e)))?, }) @@ -84,7 +84,7 @@ impl Mnemonic { fn validate(phrase: &str, lang: &str) -> PyResult<bool> { dup_crypto::mnemonic::Mnemonic::validate( phrase, - language_from_str(lang).ok_or(PyValueError::new_err("Unknown language"))?, + language_from_str(lang).ok_or_else(|| PyValueError::new_err("Unknown language"))?, ) .map_err(|e| PyException::new_err(format!("{:?}", e)))?; Ok(true) diff --git a/src/private_message/mod.rs b/src/private_message/mod.rs index eccfd13c35205ad3964bb9bfa7eefde004f3bf77..183bd5a6c45feaa8a8bc4221af12c943cc9f3997 100644 --- a/src/private_message/mod.rs +++ b/src/private_message/mod.rs @@ -19,7 +19,7 @@ const ALGO_AES256GCM: u32 = 2; /// `aad` is unencrypted data in the message. #[pyfunction] #[text_signature = "(aad, algo, msg, keypair, /)"] -fn decrypt<'a>( +fn decrypt( aad: &[u8], algo: u32, mut msg: Vec<u8>,