ecies / rs Goto Github PK
View Code? Open in Web Editor NEWElliptic Curve Integrated Encryption Scheme for secp256k1 in Rust
Home Page: https://ecies.org/rs
License: MIT License
Elliptic Curve Integrated Encryption Scheme for secp256k1 in Rust
Home Page: https://ecies.org/rs
License: MIT License
I could use a dependency bump and crate release of 0.2.3. We're using ecies in this project: https://github.com/diba-io/carbonado
Great project, thanks!
We can't seem to get past this error when updating past 0.2.4-- Versions 0.2.5 and 0.2.6 break with this error:
error[E0599]: the method `as_dyn_error` exists for reference `&SecpError`, but its trait bounds were not satisfied
--> /home/hunter/.cargo/registry/src/index.crates.io-6f17d22bba15001f/carbonado-0.3.3/src/error.rs:3:10
|
3 | #[derive(Error, Debug)]
| ^^^^^ method cannot be called on `&SecpError` due to unsatisfied trait bounds
|
::: /home/hunter/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libsecp256k1-core-0.3.0/src/error.rs:2:1
|
2 | pub enum Error {
| --------------
| |
| doesn't satisfy `SecpError: AsDynError<'_>`
| doesn't satisfy `SecpError: StdError`
|
= note: the following trait bounds were not satisfied:
`SecpError: StdError`
which is required by `SecpError: AsDynError<'_>`
`&SecpError: StdError`
which is required by `&SecpError: AsDynError<'_>`
= note: this error originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
The code in question uses a crate called thiserror
to proxy error details:
https://github.com/diba-io/carbonado/blob/518188593fc2a86bf2fa687f9165b83904c0d64f/src/error.rs#L33-L35
Any idea what might be happening?
It would be very nice to support environments without standard library. Embedded devices like target=thumbv6m-none-eabi
need no_std
$ cargo build --no-default-features --features pure --target=thumbv6m-none-eabi
Compiling subtle v2.4.1
Compiling base64 v0.13.0
Compiling getrandom v0.2.3
Compiling generic-array v0.14.4
Compiling serde v1.0.131
error[E0463]: can't find crate for `std`
--> /.cargo/registry/src/github.com-1ecc6299db9ec823/subtle-2.4.1/src/lib.rs:88:1
|
88 | extern crate std;
| ^^^^^^^^^^^^^^^^^ can't find crate
|
= note: the `thumbv6m-none-eabi` target may not support the standard library
error[E0463]: can't find crate for `std`
--> /.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.2.3/src/error_impls.rs:9:1
|
9 | extern crate std;
| ^^^^^^^^^^^^^^^^^ can't find crate
|
= note: the `thumbv6m-none-eabi` target may not support the standard library
For more information about this error, try `rustc --explain E0463`.
error: could not compile `subtle` due to previous error
warning: build failed, waiting for other jobs to finish...
error[E0463]: can't find crate for `std`
|
= note: the `thumbv6m-none-eabi` target may not support the standard library
= note: `std` is required by `base64` because it does not declare `#![no_std]`
error[E0463]: can't find crate for `std`
|
= note: the `thumbv6m-none-eabi` target may not support the standard library
= note: `std` is required by `serde` because it does not declare `#![no_std]`
error: build failed
Trying to build with default-features=false and features=["pure"] causes error. The OpenSSL backend seems to work fine.
ecies={version="0.2.6", default-features=false, features=["pure"]}
to Cargo.tomlThe build should pass
The following error is thrown:
error[E0432]: unresolved import `once_cell::sync`
--> /home/username/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ecies-0.2.6/src/config.rs:1:16
|
1 | use once_cell::sync::Lazy;
| ^^^^ could not find `sync` in `once_cell`
For more information about this error, try `rustc --explain E0432`.
error: could not compile `ecies` (lib) due to 1 previous error
use ecies::{encrypt, decrypt, utils::generate_keypair};
fn main() {
let msg="Hello, this is a test.";
let (sk, pk)=generate_keypair();
let (sk, pk)=(&sk.serialize(), &pk.serialize());
let encrypted_message=encrypt(pk, msg.as_bytes()).unwrap();
let original=decrypt(sk, &encrypted_message).unwrap();
let original=String::from_utf8(original).unwrap();
println!("{original}");
}
* OS: Ubuntu Mate 22.04 64-bit
Related
#6
To support WASM
Currently the API takes a &[u8]
as input.
It would be nice to be able to process huge files entirely in memory by processing chunks one after another.
Maybe by using std::io::BufReader
/std::io::BufWriter
?
The reason I ask is because we already include the secp256k1 crate in our WASM binary for BDK, so having multiple implementations for the same thing is suboptimal. Also, according to my tests, the k256 library is substantially slower than the C library, though I'm not sure if this problem is similar for libsecp256k1, and I'm also not sure how many times public keys need to be computed during encryption and decryption.
Compiling ecies v0.2.6
error[E0252]: the name `decrypt` is defined multiple times
--> /home/kamiyaa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ecies-0.2.6/src/symmetric/mod.rs:11:16
|
9 | use openssl_aes::{decrypt, encrypt};
| ------- previous import of the value `decrypt` here
10 | #[cfg(feature = "pure")]
11 | use pure_aes::{decrypt, encrypt};
| ^^^^^^^ `decrypt` reimported here
|
= note: `decrypt` must be defined only once in the value namespace of this module
help: you can use `as` to change the binding name of the import
|
11 | use pure_aes::{decrypt as other_decrypt, encrypt};
| ~~~~~~~~~~~~~~~~~~~~~~~~
error[E0252]: the name `encrypt` is defined multiple times
--> /home/kamiyaa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ecies-0.2.6/src/symmetric/mod.rs:11:25
|
9 | use openssl_aes::{decrypt, encrypt};
| ------- previous import of the value `encrypt` here
10 | #[cfg(feature = "pure")]
11 | use pure_aes::{decrypt, encrypt};
| ^^^^^^^ `encrypt` reimported here
|
= note: `encrypt` must be defined only once in the value namespace of this module
help: you can use `as` to change the binding name of the import
|
11 | use pure_aes::{decrypt, encrypt as other_encrypt};
| ~~~~~~~~~~~~~~~~~~~~~~~~
For more information about this error, try `rustc --explain E0252`.
error: could not compile `ecies` (lib) due to 2 previous errors
The fastest cryptographic library in the galaxy :)
I am unsure if this crate overwrites the memory where a SecretKey resides when its lifetime ends.
Overwriting it with zeroes would be one way to to this.
The idea here of course is to disable reading the secret from memory, after it is no longer needed.
Is this possible or planned?
Hi,
Do you think there is hope that this implementation can be compatible with bouncycastle's implementation(s) of ECIES?
Precisely, the goal would be to instantiate ECIES in BC so that the resulting ciphertexts would have the same format as yours (the BC ciphertexts are decryptable in your implementation and viceversa).
The reason is that I need compatibility among different frameworks like Android apps, Windows desktop Apps, web browsers, etc. With BC I can cover most of cases but it would be preferable to use yours to cover websites but before digging into details I would like to ask you an opinion on whether you deem easy to make them compatible each other.
Thanks in advance
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.