Skip to content
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

How encode public key? #6

Closed
genedna opened this issue Nov 18, 2017 · 5 comments
Closed

How encode public key? #6

genedna opened this issue Nov 18, 2017 · 5 comments

Comments

@genedna
Copy link

genedna commented Nov 18, 2017

I write a generate private key program with pem:

extern crate openssl;
extern crate pem;

use openssl::rsa::Rsa;
use pem::{Pem, encode};

fn main() {
  // Generate a new 4096-bit key.
  let rsa = Rsa::generate(4096).unwrap();

  let public_key = rsa.public_key_to_der().unwrap();
  let private_key = rsa.private_key_to_der().unwrap();

  let private_pem = Pem {
    tag: String::from("RSA PRIVATE KEY"),
    contents: private_key,
  };
  let private = encode(&private_pem);

  println!("{}", private);
}

But I couldn't found a way encode public data to PKIX format, do you have an idea?

Thanks much!

@jcreekmore
Copy link
Owner

jcreekmore commented Nov 18, 2017 via email

@cardoe
Copy link
Collaborator

cardoe commented Nov 19, 2017

To expand a little bit:


  let public_pem = Pem {
    tag: String::from("RSA PUBLIC KEY"),
    contents: public_key,
  };
  let public = encode(&public_pem);

  println!("{}", public);

Should do the trick.

@genedna
Copy link
Author

genedna commented Nov 19, 2017

Yeah, I want to use the public key in OpenSSH. The format looks like

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDsczjw5Sns1AQGhO6I7Ldxc2bSxaVH3pl0iSEs7MG35RgxUEZz98EruAnGkhPJZiAx72EyJDlYWgOk5MoGoqlyh9zsk9sIZbPRh1J3YJPYmWoVyiTiV2a2UO7FLYhZbz70trX2Ey8yon5JYaspJemltNQzmhxAOA6ObRqLGSKQNIYV+LV2RFfIoPozD7D6DON3claaExogOy7N5Q8SqvNNzSo+sN/vRai0eEzEC88ERc4uJQbftm9lveoPNKN9lkKpeUmzoN6HQtO7CFK2Z7qELFfvGJDe30VpLWAqMs88ipjajAGSMT2dDPOtO9xEKkNIGHbeo8hjopj7sUuAnydUmDq4JYwqmX55NkAWWN785RGLWjxLY7ID7zrx4d8hyWv5h99J6CJdy87svwwF1pNJIxsQulNSwwtJhe/Y5nZpUjQhEYo7LyWuVAGE79tvk2lMLskdR05ubmxgSl/xI3NXbBZfmg8nEnwbLA426tiK1W5tk/RoFYKktmhwXci6dbuqRfHh7keRolY+4mcRO3jfAYlohjIwCzzrlD0AttVEWKo0tQukKF+vVn8R6H18V1XQpY0wJ9Zjlg94ETmYBziNAVhdTNimk2ElXwYFbU1bNxEcEaPI7xCz+EWQcyEalySqN/0AYqZ+cLyCqIR8TQxWMBJxjpDP08IyUXWhIP2xew== eli@patch.sh

@cardoe
Copy link
Collaborator

cardoe commented Nov 19, 2017 via email

@genedna
Copy link
Author

genedna commented Dec 2, 2017

@cardoe I resolved the problem with openssh-key, and I submitted a PR(https://github.com/sdemos/openssh-keys/pull/9) about it. Also, I wrote some demo code in https://github.com/genedna/rust-learning/tree/master/ssh/keygen .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants