Merge branch 'next' of ssh://down.oryx.com/oryx/aox into next
[aox:aox.git] / sasl / digest-md5.h
1 // Copyright 2009 The Archiveopteryx Developers <info@aox.org>
2
3 #ifndef DIGESTMD5_H
4 #define DIGESTMD5_H
5
6 #include "mechanism.h"
7 #include "list.h"
8
9
10 class DigestMD5
11     : public SaslMechanism
12 {
13 public:
14     DigestMD5( EventHandler * );
15
16     EString challenge();
17     void setChallenge( const EString & );
18     void parseResponse( const EString & );
19     void verify();
20
21     class Variable
22         : public Garbage
23     {
24     public:
25         EString name;
26         EString value() const { return *values.first(); }
27         bool unique() const  { return values.count() == 1; }
28         bool operator !=( const EString &s ) { return name != s; }
29         List< EString > values;
30     };
31
32     static bool parse( const EString &s, List< Variable > &l );
33
34 private:
35     class DigestData *d;
36
37 private:
38     void require( class Variable *, const EString & );
39 };
40
41
42 #endif