File Coverage

blib/lib/WebService/SSLLabs/EndpointDetails.pm
Criterion Covered Total %
statement 27 162 16.6
branch 0 48 0.0
condition n/a
subroutine 9 62 14.5
pod 53 53 100.0
total 89 325 27.3


line stmt bran cond sub pod time code
1             package WebService::SSLLabs::EndpointDetails;
2              
3 3     3   19 use strict;
  3         7  
  3         100  
4 3     3   15 use warnings;
  3         7  
  3         76  
5 3     3   1230 use WebService::SSLLabs::Cert();
  3         7  
  3         57  
6 3     3   1205 use WebService::SSLLabs::Suites();
  3         8  
  3         56  
7 3     3   1151 use WebService::SSLLabs::SimDetails();
  3         8  
  3         55  
8 3     3   1152 use WebService::SSLLabs::Protocol();
  3         8  
  3         54  
9 3     3   1201 use WebService::SSLLabs::Chain();
  3         8  
  3         57  
10 3     3   1155 use WebService::SSLLabs::Key();
  3         7  
  3         57  
11 3     3   1168 use WebService::SSLLabs::DrownHost();
  3         11  
  3         5162  
12              
13             our $VERSION = '0.31';
14              
15             sub new {
16 0     0 1   my ( $class, $json ) = @_;
17 0           my $self = $json;
18 0           bless $self, $class;
19 0           $self->{key} = WebService::SSLLabs::Key->new( $self->{key} );
20 0           $self->{cert} = WebService::SSLLabs::Cert->new( $self->{cert} );
21 0           my @protocols = @{ $self->{protocols} };
  0            
22 0           $self->{protocols} = [];
23 0           foreach my $protocol (@protocols) {
24 0           push @{ $self->{protocols} },
  0            
25             WebService::SSLLabs::Protocol->new($protocol);
26             }
27 0           $self->{suites} = WebService::SSLLabs::Suites->new( $self->{suites} );
28 0 0         if ( defined $self->{sims} ) {
29 0           $self->{sims} = WebService::SSLLabs::SimDetails->new( $self->{sims} );
30             }
31 0           $self->{chain} = WebService::SSLLabs::Chain->new( $self->{chain} );
32 0           my @drown_hosts;
33 0 0         if ( defined $self->{drownHosts} ) {
34 0           @drown_hosts = @{ $self->{drownHosts} };
  0            
35             }
36 0           $self->{drownHosts} = [];
37 0           foreach my $drown_host (@drown_hosts) {
38 0           push @{ $self->{drownHosts} },
  0            
39             WebService::SSLLabs::DrownHost->new($drown_host);
40             }
41 0           return $self;
42             }
43              
44             sub host_start_time {
45 0     0 1   my ($self) = @_;
46 0           return $self->{hostStartTime};
47             }
48              
49             sub key {
50 0     0 1   my ($self) = @_;
51 0           return $self->{key};
52             }
53              
54             sub cert {
55 0     0 1   my ($self) = @_;
56 0           return $self->{cert};
57             }
58              
59             sub chain {
60 0     0 1   my ($self) = @_;
61 0           return $self->{chain};
62             }
63              
64             sub protocols {
65 0     0 1   my ($self) = @_;
66 0           return @{ $self->{protocols} };
  0            
67             }
68              
69             sub suites {
70 0     0 1   my ($self) = @_;
71 0           return $self->{suites};
72             }
73              
74             sub server_signature {
75 0     0 1   my ($self) = @_;
76 0           return $self->{serverSignature};
77             }
78              
79             sub prefix_delegation {
80 0     0 1   my ($self) = @_;
81 0 0         return $self->{prefixDelegation} ? 1 : 0;
82             }
83              
84             sub non_prefix_delegation {
85 0     0 1   my ($self) = @_;
86 0 0         return $self->{nonPrefixDelegation} ? 1 : 0;
87             }
88              
89             sub vuln_beast {
90 0     0 1   my ($self) = @_;
91 0 0         return $self->{vulnBeast} ? 1 : 0;
92             }
93              
94             sub reneg_support {
95 0     0 1   my ($self) = @_;
96 0           return $self->{renegSupport};
97             }
98              
99             sub sts_response_header {
100 0     0 1   my ($self) = @_;
101 0           return $self->{stsResponseHeader};
102             }
103              
104             sub sts_max_age {
105 0     0 1   my ($self) = @_;
106 0           return $self->{stsMaxAge};
107             }
108              
109             sub sts_subdomains {
110 0     0 1   my ($self) = @_;
111 0 0         return $self->{stsSubdomains} ? 1 : 0;
112             }
113              
114             sub pkp_response_header {
115 0     0 1   my ($self) = @_;
116 0           return $self->{pkpResponseHeader};
117             }
118              
119             sub session_resumption {
120 0     0 1   my ($self) = @_;
121 0           return $self->{sessionResumption};
122             }
123              
124             sub compression_methods {
125 0     0 1   my ($self) = @_;
126 0           return $self->{compressionMethods};
127             }
128              
129             sub supports_npn {
130 0     0 1   my ($self) = @_;
131 0 0         return $self->{supportsNpn} ? 1 : 0;
132             }
133              
134             sub npn_protocols {
135 0     0 1   my ($self) = @_;
136 0           return $self->{npnProtocols};
137             }
138              
139             sub session_tickets {
140 0     0 1   my ($self) = @_;
141 0           return $self->{sessionTickets};
142             }
143              
144             sub ocsp_stapling {
145 0     0 1   my ($self) = @_;
146 0 0         return $self->{ocspStaplings} ? 1 : 0;
147             }
148              
149             sub stapling_revocation_status {
150 0     0 1   my ($self) = @_;
151 0           return $self->{staplingRevocationStatus};
152             }
153              
154             sub stapling_revocation_error_message {
155 0     0 1   my ($self) = @_;
156 0           return $self->{staplingRevocationErrorMessage};
157             }
158              
159             sub sni_required {
160 0     0 1   my ($self) = @_;
161 0 0         return $self->{sniRequired} ? 1 : 0;
162             }
163              
164             sub http_status_code {
165 0     0 1   my ($self) = @_;
166 0           return $self->{httpStatusCode};
167             }
168              
169             sub supports_rc4 {
170 0     0 1   my ($self) = @_;
171 0 0         return $self->{supportsRc4} ? 1 : 0;
172             }
173              
174             sub rc4_only {
175 0     0 1   my ($self) = @_;
176 0 0         return $self->{rc4Only} ? 1 : 0;
177             }
178              
179             sub forward_secrecy {
180 0     0 1   my ($self) = @_;
181 0           return $self->{forwardSecrecy};
182             }
183              
184             sub rc4_with_modern {
185 0     0 1   my ($self) = @_;
186 0 0         return $self->{rc4WithModern} ? 1 : 0;
187             }
188              
189             sub sims {
190 0     0 1   my ($self) = @_;
191 0           return $self->{sims};
192             }
193              
194             sub heartbleed {
195 0     0 1   my ($self) = @_;
196 0 0         return $self->{heartbleed} ? 1 : 0;
197             }
198              
199             sub heartbeat {
200 0     0 1   my ($self) = @_;
201 0 0         return $self->{heartbeat} ? 1 : 0;
202             }
203              
204             sub open_ssl_ccs {
205 0     0 1   my ($self) = @_;
206 0           return $self->{openSslCcs};
207             }
208              
209             sub openssl_lucky_minus_20 {
210 0     0 1   my ($self) = @_;
211 0           return $self->{openSSLLuckyMinus20};
212             }
213              
214             sub poodle {
215 0     0 1   my ($self) = @_;
216 0 0         return $self->{poodle} ? 1 : 0;
217             }
218              
219             sub poodle_tls {
220 0     0 1   my ($self) = @_;
221 0           return $self->{poodleTls};
222             }
223              
224             sub fallback_scsv {
225 0     0 1   my ($self) = @_;
226 0 0         return $self->{fallbackScsv} ? 1 : 0;
227             }
228              
229             sub freak {
230 0     0 1   my ($self) = @_;
231 0 0         return $self->{freak} ? 1 : 0;
232             }
233              
234             sub has_sct {
235 0     0 1   my ($self) = @_;
236 0           return $self->{hasSct};
237             }
238              
239             sub dh_primes {
240 0     0 1   my ($self) = @_;
241 0 0         if ( defined $self->{dhPrimes} ) {
242 0           return @{ $self->{dhPrimes} };
  0            
243             }
244             else {
245 0           return ();
246             }
247             }
248              
249             sub dh_uses_known_primes {
250 0     0 1   my ($self) = @_;
251 0           return $self->{dhUsesKnownPrimes};
252             }
253              
254             sub dh_ys_reuse {
255 0     0 1   my ($self) = @_;
256 0 0         return $self->{dhYsReuse} ? 1 : 0;
257             }
258              
259             sub logjam {
260 0     0 1   my ($self) = @_;
261 0 0         return $self->{logjam} ? 1 : 0;
262             }
263              
264             sub chacha20_preference {
265 0     0 1   my ($self) = @_;
266 0 0         return $self->{chaCha20Preference} ? 1 : 0;
267             }
268              
269             sub hsts_policy {
270 0     0 1   my ($self) = @_;
271 0           return $self->{hstsPolicy};
272             }
273              
274             sub hpkp_policy {
275 0     0 1   my ($self) = @_;
276 0           return $self->{hpkpPolicy};
277             }
278              
279             sub hpkp_ro_policy {
280 0     0 1   my ($self) = @_;
281 0           return $self->{hpkpRoPolicy};
282             }
283              
284             sub drown_hosts {
285 0     0 1   my ($self) = @_;
286 0 0         if ( defined $self->{drownHosts} ) {
287 0           return @{ $self->{drownHosts} };
  0            
288             }
289             else {
290 0           return ();
291             }
292             }
293              
294             sub drown_errors {
295 0     0 1   my ($self) = @_;
296 0 0         return $self->{drownErrors} ? 1 : 0;
297             }
298              
299             sub drown_vulnerable {
300 0     0 1   my ($self) = @_;
301 0 0         return $self->{drownVulnerable} ? 1 : 0;
302             }
303              
304             sub protocol_intolerance {
305 0     0 1   my ($self) = @_;
306 0           return $self->{protocolIntolerance};
307             }
308              
309             sub misc_intolerance {
310 0     0 1   my ($self) = @_;
311 0           return $self->{miscIntolerance};
312             }
313              
314             1;
315             __END__