Attempt to fallback to pkcs8 if der fails#74
Closed
Jake-Shadle wants to merge 2 commits intoKeats:nextfrom
Jake-Shadle:fallback
Closed
Attempt to fallback to pkcs8 if der fails#74Jake-Shadle wants to merge 2 commits intoKeats:nextfrom Jake-Shadle:fallback
Jake-Shadle wants to merge 2 commits intoKeats:nextfrom
Jake-Shadle:fallback
Conversation
This was referenced Feb 4, 2019
Closed
|
I got this branch working in my (hacky) code by converting the key from PKCS8 to DER using rustls: use rustls::pemfile;
use jsonwebtoken::encode;
let private_key = "/* service account JSON private key here */";
let mut certs = pemfile::pkcs8_private_keys(&mut private_key.as_bytes())?;
// Get the first cert, don't care if it errors
let key = certs.remove(0);
let token = encode(
&header,
&claims,
&key.0
)It seems the conversion step from PKCS8 to DER is still required. Is that the case or am I missing something? |
Contributor
Author
|
That's odd, for reference I know for sure that this code // Could also use the pem crate, but that seems overly complicated for just the specific
// case of GCP keys
let key_string = self.sa_key.private_key.splitn(5, "-----").nth(2).ok_or_else(|| "invalid key format")?;
// Skip the leading `\n`
let key_bytes = base64::decode_config(key_string[1..].as_bytes(), base64::MIME)?;
let auth_request_jwt = jwt::encode(
&jwt::Header::new(jwt::Algorithm::RS256),
&jwt_claims,
&key_bytes,
)?;works correctly when used against the code in this PR, as I go from 100% cache misses due to being unable to acquire a token to it functioning normally, but without the previous dependency on OpenSSL (just to do the conversion to DER). |
Owner
|
Looks like |
Merged
Owner
|
Closed in favour of #89 |
This was referenced Jun 22, 2019
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While attempting to get mozilla/sccache#272 working since we use GCS, I found that the reason it was failing was because jsonwebtoken was only using the
from_derconstructor for RSAKeyPair, while GCP private keys are stored in pkcs8, and falling back tofrom_pkcs8allows the key to be deserialized correctly.I considered adding a more functions to instead allow someone to pass in the RSAKeyPair from outside the crate instead of this, but seemed like a bit of overkill when it could just be this one-liner, but let me know if you want me to rework it. 🙂