Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
Replace `RAD_DEBUG` with `RAD_SEED`
Alexis Sellier committed 3 years ago
commit 0a9bb23e4e0e8586156d289042665e6f52d174af
parent a3f4c2ec674ea0e1de090903a53065d2133ff4f5
3 files changed +21 -6
modified radicle-cli/tests/commands.rs
@@ -94,7 +94,10 @@ fn rad_auth() {
        "examples/rad-auth.md",
        Path::new("."),
        None,
-
        [("RAD_DEBUG", "1")],
+
        [(
+
            "RAD_SEED",
+
            "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+
        )],
    )
    .unwrap();
}
modified radicle-crypto/src/lib.rs
@@ -499,11 +499,20 @@ pub mod keypair {
    /// Generate a new keypair using OS randomness.
    pub fn generate() -> KeyPair {
        #[cfg(debug_assertions)]
-
        if std::env::var("RAD_DEBUG").is_ok() {
-
            // Generate a test keypair that is always the same.
+
        if let Ok(seed) = std::env::var("RAD_SEED") {
+
            // Generate a keypair based on the given environment variable.
            // This is useful for debugging and testing, since the
-
            // public key is known in advance.
-
            return KeyPair::from_seed(Seed::new([0xff; 32]));
+
            // public key can be known in advance.
+
            let seed = (0..seed.len())
+
                .step_by(2)
+
                .map(|i| u8::from_str_radix(&seed[i..i + 2], 16))
+
                .collect::<Result<Vec<u8>, _>>()
+
                .expect("generate: invalid hexadecimal value set in `RAD_SEED`");
+
            let seed: [u8; 32] = seed
+
                .try_into()
+
                .expect("generate: invalid seed length set in `RAD_SEED`");
+

+
            return KeyPair::from_seed(Seed::new(seed));
        }
        KeyPair::generate()
    }
modified radicle-httpd/src/api/test.rs
@@ -27,7 +27,10 @@ pub fn seed(dir: &Path) -> Context {
    let rad_home = dir.join("radicle");

    env::set_var("RAD_PASSPHRASE", PASSWORD);
-
    env::set_var("RAD_DEBUG", "1");
+
    env::set_var(
+
        "RAD_SEED",
+
        "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+
    );

    fs::create_dir_all(&workdir).unwrap();
    fs::create_dir_all(&rad_home).unwrap();