如何使用 RusTLS 使用已知公钥和 PKCS1 填充来加密字节片?

Yos*_*yts 5 ssl rust

为了从 Travis CI 创建 GitHub 版本,您需要使用它们提供的公钥来加密可以签入项目的机密。

我已经成功地使用openssl crate (v0.10.11)做到了这一点:

extern crate base64;
extern crate openssl;

use openssl::rsa::{Padding, Rsa};
use std::{error, fs};

fn main() -> Result<(), Box<dyn error::Error>> {
  let data = b"some data";

  let pub_key = fs::read_to_string("./key.pem")?; // Read the public key.
  let rsa = Rsa::public_key_from_pem(pub_key.as_bytes())?;

  let mut res = vec![0; rsa.size() as usize];
  rsa.public_encrypt(data, &mut res, Padding::PKCS1)?;

  let encrypted = base64::encode(&res);
  println!("Encrypted Data: \n{}", encrypted);
  Ok(())
}
Run Code Online (Sandbox Code Playgroud)

链接到重现

然而,使用 OpenSSL 需要一些权衡。最值得注意的是:让跨平台构建工作需要一些工作

我一直在寻找rustls作为替代方案,并且想知道上面的代码的等效项是什么。