ssh-agent-lib 0.5.2

A collection of types for writing custom SSH agents
Documentation
use hex_literal::hex;
use ssh_encoding::Decode;
use ssh_key::{
    private::{EcdsaKeypair, EcdsaPrivateKey},
    Certificate,
};

pub fn demo_key() -> EcdsaKeypair {
    EcdsaKeypair::NistP256 {
        public: p256::EncodedPoint::from_affine_coordinates(
            &hex!(
                "cb244fcdb89de95bc8fd766e6b139abf"
                "c2649fb063b6c5e5a939e067e2a0d215"
            )
            .into(),
            &hex!(
                "0a660daca78f6c24a0425373d6ea83e3"
                "6f8a1f8b828a60e77a97a9441bcc0987"
            )
            .into(),
            false,
        ),
        private: EcdsaPrivateKey::from(p256::SecretKey::new(
            p256::elliptic_curve::ScalarPrimitive::new(
                p256::elliptic_curve::bigint::Uint::from_be_slice(&hex!(
                    "ffd9f2ce4d0ee5870d8dc7cf771a7669"
                    "a0b96fe44bb58a8a0bc75a76b4f78240"
                )),
            )
            .unwrap(),
        )),
    }
}

pub fn demo_certificate() -> Certificate {
    let certificate = &hex!(
        "
        0000001c7373682d7273612d63657274 2d763031406f70656e7373682e636f6d
        00000020c551bbbb4b7a8cd1f0e5f016 89926b0253d51cd230aec837b6439f86
        Ad4f9b9a000000030100010000018100 e0419157579956319a7f810b747b2518
        7f5ff26556f7ff037b57fa7d5911d55a bd59438d98a2205a87def0805ea6d888
        1f9790a010cbe0a20d6145abac98de4f a3fc0f2b53b8241db205b79e64e0a7cc
        " "
        D33f9f2cd34ae9d2ce791bc6aabc8fe1 951e37a7af04b3fa0b029710e7e95840
        3c7bf6d40c13b264834f37402ec6630c 486014b68413793db3340bceb6aa4c70
        3170048b59c944c52678f91f872d1696 19eb39066bc78021925efd226113f252
        3ecbefdaf5caa85336b760e7e458f7ab d1af48917a778805535dcf45345b2ed4
        C4aab2286bd12f381173e856e95929ac 27515608606f07ff8514188e2e9b14c8
        " "
        22cfd8ce12946f2b562c3f51b4a86317 ebce585a832af467f8ea27fd3ed1aa59
        D187825e9e771ad8c383f6fdef2853ed 22579bc00a7fcf52d9906d25dcd5e80a
        E35115aeb4bcba671fa865c26bde4627 2806c4991fc9d548878d2b99ba522083
        B8863d7c434c21bd42da838ed0355ad2 fde62e8d0684bcc194f2911f235c85ff
        D3b2b4870e95460a2d3422130ccecf61 00000000000000010000000100000006
        " "
        64617272656e0000000a000000066461 7272656e00000000660f5cc400000000
        660f6b3c000000000000008200000015 7065726d69742d5831312d666f727761
        7264696e670000000000000017706572 6d69742d6167656e742d666f72776172
        64696e6700000000000000167065726d 69742d706f72742d666f727761726469
        6e67000000000000000a7065726d6974 2d707479000000000000000e7065726d
        " "
        69742d757365722d7263000000000000 0000000000330000000b7373682d6564
        323535313900000020dc83ccfc6ef848 8b329f736057286325de5905237e55d7
        711e0a0a8d792ce2cb00000053000000 0b7373682d6564323535313900000040
        01f88ec5a9f1cbd54c1668b3e33ac6f5 2c32dff0c51207fbb55a55b88b8809c3
        69e9ac008e3228dd90978ff2d6bebd9b bb392883bcb56d9f81f6afc200ce2703
    "
    )[..];
    let mut reader = certificate;
    Certificate::decode(&mut reader).unwrap()
}