diff --git a/parsers/src/jingle_dtls_srtp.rs b/parsers/src/jingle_dtls_srtp.rs index f1a763e7..34cf3f35 100644 --- a/parsers/src/jingle_dtls_srtp.rs +++ b/parsers/src/jingle_dtls_srtp.rs @@ -4,8 +4,10 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +use xso::{text::ColonSeparatedHex, AsXml, FromXml}; + use crate::hashes::{Algo, Hash}; -use crate::util::text_node_codecs::{Codec, ColonSeparatedHex}; +use crate::ns; use xso::error::Error; generate_attribute!( @@ -31,21 +33,22 @@ generate_attribute!( ); // TODO: use a hashes::Hash instead of two different fields here. -generate_element!( - /// Fingerprint of the key used for a DTLS handshake. - Fingerprint, "fingerprint", JINGLE_DTLS, - attributes: [ - /// The hash algorithm used for this fingerprint. - hash: Required = "hash", +/// Fingerprint of the key used for a DTLS handshake. +#[derive(FromXml, AsXml, PartialEq, Debug, Clone)] +#[xml(namespace = ns::JINGLE_DTLS, name = "fingerprint")] +pub struct Fingerprint { + /// The hash algorithm used for this fingerprint. + #[xml(attribute)] + pub hash: Algo, - /// Indicates which of the end points should initiate the TCP connection establishment. - setup: Required = "setup" - ], - text: ( - /// Hash value of this fingerprint. - value: ColonSeparatedHex - ) -); + /// Indicates which of the end points should initiate the TCP connection establishment. + #[xml(attribute)] + pub setup: Setup, + + /// Hash value of this fingerprint. + #[xml(text(codec = ColonSeparatedHex))] + pub value: Vec, +} impl Fingerprint { /// Create a new Fingerprint from a Setup and a Hash.