Чтобы создавать релизы GitHub из Travis CI, вам нужно использовать открытые ключи, которые они предоставляют , для шифрования секретов, которые можно проверить в проекте.
Мне удалось это сделать, используя ящик openssl (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(())
}
ссылка на репро
Однако использование OpenSSL сопряжено с несколькими компромиссами. В частности: для работы кроссплатформенных сборок требуется некоторая работа .
Я рассматривал шелест как альтернативу, и мне было интересно, каков эквивалент кода выше.