Skip to content

Commit 1a88d58

Browse files
wiktor-ksfriedenberg-etsy
authored andcommitted
Adjust examples for reported issues
Signed-off-by: Wiktor Kwapisiewicz <wiktor@metacode.biz>
1 parent 46a28e9 commit 1a88d58

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

examples/random-key.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use sha1::Sha1;
1010
use ssh_agent_lib::agent::NamedPipeListener as Listener;
1111
use ssh_agent_lib::agent::{listen, Session};
1212
use ssh_agent_lib::error::AgentError;
13-
use ssh_agent_lib::proto::{signature, Identity, SignRequest};
13+
use ssh_agent_lib::proto::{signature, Identity, PublicCredential, SignRequest};
1414
use ssh_key::private::RsaKeypair;
1515
use ssh_key::HashAlg;
1616
use ssh_key::{
@@ -41,7 +41,10 @@ impl RandomKey {
4141
impl Session for RandomKey {
4242
async fn sign(&mut self, sign_request: SignRequest) -> Result<Signature, AgentError> {
4343
let private_key = self.private_key.lock().unwrap();
44-
if PublicKey::from(private_key.deref()).key_data() != &sign_request.pubkey {
44+
let PublicCredential::Key(pubkey) = sign_request.pubkey else {
45+
return Err(std::io::Error::other("Key not found").into());
46+
};
47+
if PublicKey::from(private_key.deref()).key_data() != &pubkey {
4548
return Err(std::io::Error::other("Key not found").into());
4649
}
4750

@@ -85,7 +88,7 @@ impl Session for RandomKey {
8588
async fn request_identities(&mut self) -> Result<Vec<Identity>, AgentError> {
8689
let identity = self.private_key.lock().unwrap();
8790
Ok(vec![Identity {
88-
pubkey: PublicKey::from(identity.deref()).into(),
91+
pubkey: PublicCredential::Key(PublicKey::from(identity.deref()).into()),
8992
comment: identity.comment().into(),
9093
}])
9194
}

src/proto/message/credential.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub enum PrivateCredential {
3333
algorithm: Algorithm,
3434

3535
/// Certificate data.
36-
certificate: Certificate,
36+
certificate: Box<Certificate>,
3737

3838
/// Private key data.
3939
privkey: PrivateKeyData,
@@ -51,10 +51,12 @@ impl Decode for PrivateCredential {
5151
let cert_alg = Algorithm::new_certificate(&alg);
5252

5353
if let Ok(algorithm) = cert_alg {
54-
let certificate = reader.read_prefixed(|reader| {
55-
let cert = Certificate::decode(reader)?;
56-
Ok::<_, Error>(cert)
57-
})?;
54+
let certificate = reader
55+
.read_prefixed(|reader| {
56+
let cert = Certificate::decode(reader)?;
57+
Ok::<_, Error>(cert)
58+
})?
59+
.into();
5860
let privkey = PrivateKeyData::decode_as(reader, algorithm.clone())?;
5961
let comment = String::decode(reader)?;
6062

@@ -121,7 +123,7 @@ pub enum PublicCredential {
121123
/// Plain public key.
122124
Key(KeyData),
123125
/// Signed public key.
124-
Cert(Certificate),
126+
Cert(Box<Certificate>),
125127
}
126128

127129
impl PublicCredential {
@@ -170,6 +172,6 @@ impl From<KeyData> for PublicCredential {
170172

171173
impl From<Certificate> for PublicCredential {
172174
fn from(value: Certificate) -> Self {
173-
Self::Cert(value)
175+
Self::Cert(value.into())
174176
}
175177
}

0 commit comments

Comments
 (0)