1 
2 /* Web Polygraph       http://www.web-polygraph.org/
3  * Copyright 2003-2011 The Measurement Factory
4  * Licensed under the Apache License, Version 2.0 */
5 
6 #ifndef POLYGRAPH__PGL_SSLWRAPSYM_H
7 #define POLYGRAPH__PGL_SSLWRAPSYM_H
8 
9 #include "xstd/Array.h"
10 #include "xstd/Size.h"
11 #include "pgl/PglRecSym.h"
12 
13 
14 // a set of addresses that talk SSL and parameters for SSL protocol
15 class SslWrapSym: public RecSym {
16 	public:
17 		static String TheType;
18 
19 	public:
20 		SslWrapSym();
21 		SslWrapSym(const String &aType, PglRec *aRec);
22 
23 		virtual bool isA(const String &type) const;
24 
25 		String rootCertificate() const;
26 		String sharingGroup() const;
27 		bool protocols(Array<String*> &protos, Array<double> &probs) const;
28 		RndDistr *protocols(const TokenIdentifier &protocolNames) const;
29 		bool rsaKeySizes(Array<Size>&, RndDistr *&) const;
30 		bool generateCertificates(bool &set) const;
31 		bool certificates(Array<String*> &) const;
32 		bool ciphers(Array<String*> &, RndDistr *&) const;
33 		bool sessionResumpt(double &prob) const;
34 		bool sessionCacheSize(int &count) const;
35 		String sslConfigFile() const;
36 		bool verifyPeerCertificate(bool &set) const;
37 		bool compression(double &prob) const;
38 		bool sni(double &prob) const;
39 		String ecdheCurve() const;
40 
41 	protected:
42 		virtual SynSym *dupe(const String &dType) const;
43 };
44 
45 #endif
46