ssh_agent/proto/
signature.rs

1use serde::{Deserialize, Serialize};
2
3use super::private_key::*;
4use super::key_type::{KeyType};
5use super::to_bytes;
6
7pub type MpInt = Vec<u8>;
8
9pub const RSA_SHA2_256: u32 = 0x02;
10pub const RSA_SHA2_512: u32 = 0x04;
11
12#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
13pub struct Signature {
14    pub algorithm: String,
15    pub blob: Vec<u8>
16}
17
18#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
19pub struct EcDsaSignature {
20    pub identifier: String,
21    pub data: EcDsaSignatureData
22}
23
24#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
25pub struct EcDsaSignatureData {
26    pub r: Vec<u8>,
27    pub s: Vec<u8>
28}
29
30impl From<EcDsaSignature> for Signature {
31    fn from(signature: EcDsaSignature) -> Signature {
32        Signature {
33            algorithm: format!("{}-{}", EcDsaPrivateKey::KEY_TYPE, signature.identifier),
34            blob: to_bytes(&signature.data).unwrap()
35        }
36    }
37}