Skip to content

Commit e3ae7d1

Browse files
committed
small fix
1 parent ccc09e2 commit e3ae7d1

File tree

6 files changed

+257
-253
lines changed

6 files changed

+257
-253
lines changed

src/consts.rs

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pub enum SshMsg {
1818
UserauthFailure = 51,
1919
UserauthSuccess = 52,
2020
UserauthBanner = 53,
21+
UserauthPkOk = 60,
2122
GlobalRequest = 80,
2223
RequestSuccess = 81,
2324
RequestFailure = 82,

src/ed25519.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! RFC 8032
1+
//! RFC 8032 - Edwards-Curve Digital Signature Algorithm (EdDSA)
22
use anyhow::{anyhow, Result};
33
use num_bigint::BigUint;
44
use once_cell::sync::Lazy;
@@ -213,7 +213,7 @@ fn sha512_modq(bytes: Vec<u8>) -> BigUint {
213213
ret % &(*Q)
214214
}
215215

216-
pub fn ed25519_sign(secret: Vec<u8>, msg: Vec<u8>) -> Vec<u8> {
216+
pub fn ed25519_sign(msg: Vec<u8>, secret: Vec<u8>) -> Vec<u8> {
217217
let (a, prefix) = secret_expand(secret);
218218
let ag = point_compress(BASE.clone() * a.clone());
219219
let r = sha512_modq([prefix.clone(), msg.clone()].concat());
@@ -228,7 +228,7 @@ pub fn ed25519_sign(secret: Vec<u8>, msg: Vec<u8>) -> Vec<u8> {
228228
[rs, s_bytes].concat()
229229
}
230230

231-
pub fn ed25519_verify(msg: Vec<u8>, signature: Vec<u8>, public: Vec<u8>) -> bool {
231+
pub fn ed25519_verify(signature: Vec<u8>, msg: Vec<u8>, public: Vec<u8>) -> bool {
232232
if public.len() != 32 {
233233
println!("a.len() != 32");
234234
return false;
@@ -269,29 +269,29 @@ mod tests {
269269
hex::decode("d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a")?;
270270
let msg = vec![];
271271
let expected = hex::decode("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b")?;
272-
let actual = ed25519_sign(secret, msg.clone());
272+
let actual = ed25519_sign(msg.clone(), secret);
273273
assert_eq!(actual, expected);
274-
assert!(ed25519_verify(msg, actual, public));
274+
assert!(ed25519_verify(actual, msg, public));
275275

276276
let secret =
277277
hex::decode("4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb")?;
278278
let public =
279279
hex::decode("3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c")?;
280280
let msg = vec![0x72];
281281
let expected = hex::decode("92a009a9f0d4cab8720e820b5f642540a2b27b5416503f8fb3762223ebdb69da085ac1e43e15996e458f3613d0f11d8c387b2eaeb4302aeeb00d291612bb0c00")?;
282-
let actual = ed25519_sign(secret, msg.clone());
282+
let actual = ed25519_sign(msg.clone(), secret);
283283
assert_eq!(actual, expected);
284-
assert!(ed25519_verify(msg, actual, public));
284+
assert!(ed25519_verify(actual, msg, public));
285285

286286
let secret =
287287
hex::decode("c5aa8df43f9f837bedb7442f31dcb7b166d38535076f094b85ce3a2e0b4458f7")?;
288288
let public =
289289
hex::decode("fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025")?;
290290
let msg = vec![0xaf, 0x82];
291291
let expected = hex::decode("6291d657deec24024827e69c3abe01a30ce548a284743a445e3680d7db5ac3ac18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a")?;
292-
let actual = ed25519_sign(secret, msg.clone());
292+
let actual = ed25519_sign(msg.clone(), secret);
293293
assert_eq!(actual, expected);
294-
assert!(ed25519_verify(msg, actual, public));
294+
assert!(ed25519_verify(actual, msg, public));
295295
Ok(())
296296
}
297297
}

src/kex.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
//! RFC 4253
2-
//! RFC 7539
1+
//! RFC 4253 - The Secure Shell (SSH) Transport Layer Protocol
2+
//! RFC 8439 - ChaCha20 and Poly1305 for IETF Protocols
33
//! https://github.com/rus-cert/ssh-chacha20-poly1305-drafts/blob/master/ssh-chacha20-poly1305%40openssh.md
44
use anyhow::{anyhow, Result};
55
use chacha20::cipher::{KeyIvInit, StreamCipher, StreamCipherSeek};

src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async fn main() -> Result<()> {
3535
// let mut writer = tokio::io::BufWriter::new(write_half);
3636
let writer = write_half;
3737
let mut client = ssh::SshClient::new(reader, writer, args.login_name.clone(), privkey.clone());
38-
client.transport().await?;
38+
client.run().await?;
3939

4040
Ok(())
4141
}

0 commit comments

Comments
 (0)