Change summary
src/component.rs | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
Detailed changes
@@ -11,10 +11,30 @@ use error::Error;
use helpers::PlainText;
use ns;
+use sha1::Sha1;
+use digest::Digest;
+
generate_element_with_text!(Handshake, "handshake", ns::COMPONENT,
data: PlainText<Option<String>>
);
+impl Handshake {
+ pub fn new() -> Handshake {
+ Handshake {
+ data: None,
+ }
+ }
+
+ pub fn from_password_and_stream_id(password: &str, stream_id: &str) -> Handshake {
+ let input = String::from(stream_id) + password;
+ let hash = Sha1::digest(input.as_bytes());
+ let content = format!("{:x}", hash);
+ Handshake {
+ data: Some(content),
+ }
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -29,4 +49,13 @@ mod tests {
let handshake = Handshake::try_from(elem).unwrap();
assert_eq!(handshake.data, Some(String::from("Coucou")));
}
+
+ #[test]
+ fn test_constructors() {
+ let handshake = Handshake::new();
+ assert_eq!(handshake.data, None);
+
+ let handshake = Handshake::from_password_and_stream_id("123456", "sid");
+ assert_eq!(handshake.data, Some(String::from("9accec263ab84a43c6037ccf7cd48cb1d3f6df8e")));
+ }
}