Comments (5)
Key data needs to be frequently decoded from inout sources that can’t easily provide mutable references like key file formats (e.g. PKCS#8, OpenSSH)
from curve25519-dalek.
We can’t add trait impls for [u8; 32]
: it’s just a byte array.
If you want it zeroized, you’ll need to do it yourself. There’s literally nothing this library can do.
from curve25519-dalek.
What about using a dedicated type for SecretKey
? As users can misuse an array forgetting to zeroize it.
from curve25519-dalek.
And where do you get the bytes to make that SecretKey
, and how do you ensure those are zeroed? At some point some bytes come into the library externally to what it can manage.
The main way SecretKey
is used is as a &SecretKey
reference here: https://docs.rs/ed25519-dalek/latest/ed25519_dalek/struct.SigningKey.html#method.from_bytes
Adding a SecretKey
newtype would force those bytes to be copied from somewhere else, just so it could manage zeroing them. So it would actually result in an additional copy of the secret being made, which is strictly worse.
from curve25519-dalek.
Makes sense, thanks for the explanation. I was looking at SecretKey::try_from_bytes
in libp2p
that takes mutable reference and zeroes the user provided data after conversion, and though it might be a good idea for library to take care of destroying sensitive data.
from curve25519-dalek.
Related Issues (20)
- Pointer width detection in `build.rs` may break for obscure platforms HOT 1
- ed25519_dalek No generate function HOT 2
- Split up crates so end users can get faster compile times HOT 9
- `curve25519_dalek::SubgroupPoint`: missing traits
- Build fails on nightly-2024-02-05 HOT 2
- Crate fails with `nightly-2024-02-06` HOT 3
- How to check a VerifyingKey point is within the prime order subgroup HOT 3
- Support NIST validation criteria for Edwards points HOT 2
- ed25519: support PKCS#8 v1 (for OpenSSL interop)? HOT 2
- Use of unstable library feature 'stdsimd HOT 6
- Use of unstable library feature 'stdsimd' HOT 3
- Incorrect use of cfg to import dependency HOT 1
- docs.rs homepage examples use `rand_core` crate option, but do not mention its existence HOT 2
- [docs request] how to serialize a public key in the format compatible with `~/.ssh/authorized_keys`? HOT 2
- AVX512-IFMA & AVX10 status
- curve25519: nightly CI seems borked w/ warn(unused_imports)
- Impl std::num_traits::{One, Zero} for Scalar types
- Potential optimization for the torsion check HOT 1
- 4.1.3 release? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from curve25519-dalek.