-
Notifications
You must be signed in to change notification settings - Fork 229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PKCS#8 support #224
PKCS#8 support #224
Conversation
6297bc1
to
fff3b56
Compare
This is feature-complete now but still needs docs |
4f264f9
to
a0d1bdc
Compare
This should hopefully be good to go now.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! Left some small comments
Had to rebase so I guess I can go ahead and squash |
@rozbb this is green again |
Re: 5eab15d, IMO having I swear there used to be a warning/lint for it but perhaps I'm mistaken |
7693dfb
to
1a6f50a
Compare
Ran rustfmt over it and the only problems were with the newly-added PKCS#8 code, so this is also rustfmt clean. @rozbb ready for re-review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left minor comments. Also since dalek-cryptography/curve25519-dalek#470 merged, this line needs to be changed to use Scalar::ZERO
:
ed25519-dalek/tests/ed25519.rs
Line 159 in 1a6f50a
while s_candidate == Scalar::zero() { |
EDIT: Fixed
I thought I was going crazy. I have pages and pages of errors when testing locally. Thankfully this shows up in the CI. Probably something related to the warning:
|
I can confirm that most of the build errors go away by bumping to .1 as I've .pathc'd EDIT: Also curve25519-dalek Just leaves one batch related error after:
Which is fixed in |
Cargo.toml
Outdated
|
||
[patch.crates-io] | ||
curve25519-dalek = { git = "https://github.com/dalek-cryptography/curve25519-dalek.git", branch = "release/4.0" } | ||
ed25519 = { git = "https://github.com/RustCrypto/signatures.git"} | ||
ed25519 = { git = "https://github.com/RustCrypto/signatures.git" } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also @rozbb the curve25519-dalek [dependencies]
has to be .patched as well to pre.3
so:
diff --git a/Cargo.toml b/Cargo.toml
index f87f430..971328e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,8 +24,8 @@ rustdoc-args = ["--cfg", "docsrs"]
features = ["nightly", "batch", "pkcs8"]
[dependencies]
-curve25519-dalek = { version = "=4.0.0-pre.2", default-features = false, features = ["digest", "rand_core"] }
-ed25519 = { version = "=2.0.0-pre.0", default-features = false }
+curve25519-dalek = { version = "=4.0.0-pre.3", default-features = false, features = ["digest", "rand_core"] }
+ed25519 = { version = "=2.0.0-pre.1", default-features = false }
merlin = { version = "3", default-features = false, optional = true }
rand = { version = "0.8", default-features = false, optional = true }
rand_core = { version = "0.6", default-features = false, optional = true }
Problem with [patch.crates-io]
here was that it needs to match the .patched manifest version exactly. if the patch target e.g. git branch Cargo.toml does not match the asked depdendency - it will give out that warning and does nothing leading to that error - unless intended as eventual "patch kill switch"
In this case release/4.0 curve25519-dalek and ed25519 repo branch Cargo.toml's got updated and then it didn't match the asked version and rendered .patch void that was asking pre.0 for ed25519 and pre.2 for curve25519.
This is why it is also best to avoid cargo publish
anything with [patch.crates-io]
that mutable target git ref without locking to immutable branch / commit ref. Usually it's best to just override dependency to directly target a git instead if this is required as .patch only gives a warning (sometimes this is feasible but rarely) instead of error.
@pinkforest I think the advice not to check in Cargo.lock for libraries is a bit dated now that dependabot exists, and without it builds aren't reproducible or bisectable. |
9ac0fbb
to
2595abd
Compare
Adds optional integration with `ed25519::pkcs8` with support for decoding/encoding `Keypair` from/to PKCS#8-encoded documents as well as `PublicKey` from/to SPKI-encoded documents. Includes test vectors generated for the `ed25519` crate from: https://github.com/RustCrypto/signatures/tree/master/ed25519/tests/examples
|
||
[badges] | ||
travis-ci = { repository = "dalek-cryptography/ed25519-dalek", branch = "master"} | ||
|
||
[package.metadata.docs.rs] | ||
# Disabled for now since this is borked; tracking https://github.com/rust-lang/docs.rs/issues/302 | ||
# rustdoc-args = ["--html-in-header", ".cargo/registry/src/github.com-1ecc6299db9ec823/curve25519-dalek-0.13.2/rustdoc-include-katex-header.html"] | ||
features = ["nightly", "batch"] | ||
rustdoc-args = ["--cfg", "docsrs"] | ||
features = ["nightly", "batch", "pkcs8"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nightly
doesn't exist anymore, but we can get that in another PR
NOTE: depends on #222 and #223 which need to be merged first.Adds optional integration with
ed25519::pkcs8
with support for decoding/encodingKeypair
from/to PKCS#8-encoded documents.TODO: support for decoding/encodingAdded, good to go!PublicKey
from/to SPKI documents.