File Coverage

blib/lib/Net/SSLeay.pm
Criterion Covered Total %
statement 231 231 100.0
branch 70 104 67.3
condition 15 27 55.5
subroutine 181 181 100.0
pod 7 171 4.0
total 504 714 70.5


line stmt bran cond sub pod time code
1             # Net::SSLeay.pm - Perl module for using Eric Young's implementation of SSL
2             #
3             # Copyright (c) 1996-2003 Sampo Kellomäki
4             # Copyright (c) 2005-2010 Florian Ragwitz
5             # Copyright (c) 2005-2018 Mike McCauley
6             # Copyright (c) 2018- Chris Novakovic
7             # Copyright (c) 2018- Tuure Vartiainen
8             # Copyright (c) 2018- Heikki Vatiainen
9             #
10             # All rights reserved.
11             #
12             # This module is released under the terms of the Artistic License 2.0. For
13             # details, see the LICENSE file distributed with Net-SSLeay's source code.
14              
15             package Net::SSLeay;
16              
17 54     54   104042 use 5.8.1;
  54         617  
18              
19 54     54   291 use strict;
  54         108  
  54         1480  
20 54     54   322 use Carp;
  54         116  
  54         7512  
21 54     54   396 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD $CRLF);
  54         94  
  54         5515  
22 54     54   29893 use Socket;
  54         249542  
  54         22962  
23 54     54   26733 use Errno;
  54         104918  
  54         3122  
24              
25             require Exporter;
26 54     54   27127 use AutoLoader;
  54         83956  
  54         412  
27              
28             # 0=no warns, 1=only errors, 2=ciphers, 3=progress, 4=dump data
29             $Net::SSLeay::trace = 0; # Do not change here, use
30             # $Net::SSLeay::trace = [1-4] in caller
31              
32             # 2 = insist on v2 SSL protocol
33             # 3 = insist on v3 SSL
34             # 10 = insist on TLSv1
35             # 11 = insist on TLSv1.1
36             # 12 = insist on TLSv1.2
37             # 13 = insist on TLSv1.3
38             # 0 or undef = guess (v23)
39             #
40             $Net::SSLeay::ssl_version = 0; # don't change here, use
41             # Net::SSLeay::version=[2,3,0] in caller
42              
43             #define to enable the "cat /proc/$$/stat" stuff
44             $Net::SSLeay::linux_debug = 0;
45              
46             # Number of seconds to sleep after sending message and before half
47             # closing connection. Useful with antiquated broken servers.
48             $Net::SSLeay::slowly = 0;
49              
50             # RANDOM NUMBER INITIALIZATION
51             #
52             # Edit to your taste. Using /dev/random would be more secure, but may
53             # block if randomness is not available, thus the default is
54             # /dev/urandom. $how_random determines how many bits of randomness to take
55             # from the device. You should take enough (read SSLeay/doc/rand), but
56             # beware that randomness is limited resource so you should not waste
57             # it either or you may end up with randomness depletion (situation where
58             # /dev/random would block and /dev/urandom starts to return predictable
59             # numbers).
60             #
61             # N.B. /dev/urandom does not exist on all systems, such as Solaris 2.6. In that
62             # case you should get a third party package that emulates /dev/urandom
63             # (e.g. via named pipe) or supply a random number file. Some such
64             # packages are documented in Caveat section of the POD documentation.
65              
66             $Net::SSLeay::random_device = '/dev/urandom';
67             $Net::SSLeay::how_random = 512;
68              
69             # When updating this, also update $VERSION in the following files:
70             # inc/Test/Net/SSLeay.pm
71             # inc/Test/Net/SSLeay/Socket.pm
72             # lib/Net/SSLeay/Handle.pm
73             $VERSION = '1.92';
74              
75             @ISA = qw(Exporter);
76              
77             # This array is automatically generated - do not manually modify it.
78             # To add or remove a constant, edit helper_script/constants.txt, then run
79             # helper_script/update-exported-constants.
80             my @constants = qw(
81             ASN1_STRFLGS_ESC_CTRL
82             ASN1_STRFLGS_ESC_MSB
83             ASN1_STRFLGS_ESC_QUOTE
84             ASN1_STRFLGS_RFC2253
85             CB_ACCEPT_EXIT
86             CB_ACCEPT_LOOP
87             CB_ALERT
88             CB_CONNECT_EXIT
89             CB_CONNECT_LOOP
90             CB_EXIT
91             CB_HANDSHAKE_DONE
92             CB_HANDSHAKE_START
93             CB_LOOP
94             CB_READ
95             CB_READ_ALERT
96             CB_WRITE
97             CB_WRITE_ALERT
98             ERROR_NONE
99             ERROR_SSL
100             ERROR_SYSCALL
101             ERROR_WANT_ACCEPT
102             ERROR_WANT_CONNECT
103             ERROR_WANT_READ
104             ERROR_WANT_WRITE
105             ERROR_WANT_X509_LOOKUP
106             ERROR_ZERO_RETURN
107             EVP_PKS_DSA
108             EVP_PKS_EC
109             EVP_PKS_RSA
110             EVP_PKT_ENC
111             EVP_PKT_EXCH
112             EVP_PKT_EXP
113             EVP_PKT_SIGN
114             EVP_PK_DH
115             EVP_PK_DSA
116             EVP_PK_EC
117             EVP_PK_RSA
118             FILETYPE_ASN1
119             FILETYPE_PEM
120             F_CLIENT_CERTIFICATE
121             F_CLIENT_HELLO
122             F_CLIENT_MASTER_KEY
123             F_D2I_SSL_SESSION
124             F_GET_CLIENT_FINISHED
125             F_GET_CLIENT_HELLO
126             F_GET_CLIENT_MASTER_KEY
127             F_GET_SERVER_FINISHED
128             F_GET_SERVER_HELLO
129             F_GET_SERVER_VERIFY
130             F_I2D_SSL_SESSION
131             F_READ_N
132             F_REQUEST_CERTIFICATE
133             F_SERVER_HELLO
134             F_SSL_CERT_NEW
135             F_SSL_GET_NEW_SESSION
136             F_SSL_NEW
137             F_SSL_READ
138             F_SSL_RSA_PRIVATE_DECRYPT
139             F_SSL_RSA_PUBLIC_ENCRYPT
140             F_SSL_SESSION_NEW
141             F_SSL_SESSION_PRINT_FP
142             F_SSL_SET_FD
143             F_SSL_SET_RFD
144             F_SSL_SET_WFD
145             F_SSL_USE_CERTIFICATE
146             F_SSL_USE_CERTIFICATE_ASN1
147             F_SSL_USE_CERTIFICATE_FILE
148             F_SSL_USE_PRIVATEKEY
149             F_SSL_USE_PRIVATEKEY_ASN1
150             F_SSL_USE_PRIVATEKEY_FILE
151             F_SSL_USE_RSAPRIVATEKEY
152             F_SSL_USE_RSAPRIVATEKEY_ASN1
153             F_SSL_USE_RSAPRIVATEKEY_FILE
154             F_WRITE_PENDING
155             GEN_DIRNAME
156             GEN_DNS
157             GEN_EDIPARTY
158             GEN_EMAIL
159             GEN_IPADD
160             GEN_OTHERNAME
161             GEN_RID
162             GEN_URI
163             GEN_X400
164             LIBRESSL_VERSION_NUMBER
165             MBSTRING_ASC
166             MBSTRING_BMP
167             MBSTRING_FLAG
168             MBSTRING_UNIV
169             MBSTRING_UTF8
170             MIN_RSA_MODULUS_LENGTH_IN_BYTES
171             MODE_ACCEPT_MOVING_WRITE_BUFFER
172             MODE_AUTO_RETRY
173             MODE_ENABLE_PARTIAL_WRITE
174             MODE_RELEASE_BUFFERS
175             NID_OCSP_sign
176             NID_SMIMECapabilities
177             NID_X500
178             NID_X509
179             NID_ad_OCSP
180             NID_ad_ca_issuers
181             NID_algorithm
182             NID_authority_key_identifier
183             NID_basic_constraints
184             NID_bf_cbc
185             NID_bf_cfb64
186             NID_bf_ecb
187             NID_bf_ofb64
188             NID_cast5_cbc
189             NID_cast5_cfb64
190             NID_cast5_ecb
191             NID_cast5_ofb64
192             NID_certBag
193             NID_certificate_policies
194             NID_client_auth
195             NID_code_sign
196             NID_commonName
197             NID_countryName
198             NID_crlBag
199             NID_crl_distribution_points
200             NID_crl_number
201             NID_crl_reason
202             NID_delta_crl
203             NID_des_cbc
204             NID_des_cfb64
205             NID_des_ecb
206             NID_des_ede
207             NID_des_ede3
208             NID_des_ede3_cbc
209             NID_des_ede3_cfb64
210             NID_des_ede3_ofb64
211             NID_des_ede_cbc
212             NID_des_ede_cfb64
213             NID_des_ede_ofb64
214             NID_des_ofb64
215             NID_description
216             NID_desx_cbc
217             NID_dhKeyAgreement
218             NID_dnQualifier
219             NID_dsa
220             NID_dsaWithSHA
221             NID_dsaWithSHA1
222             NID_dsaWithSHA1_2
223             NID_dsa_2
224             NID_email_protect
225             NID_ext_key_usage
226             NID_ext_req
227             NID_friendlyName
228             NID_givenName
229             NID_hmacWithSHA1
230             NID_id_ad
231             NID_id_ce
232             NID_id_kp
233             NID_id_pbkdf2
234             NID_id_pe
235             NID_id_pkix
236             NID_id_qt_cps
237             NID_id_qt_unotice
238             NID_idea_cbc
239             NID_idea_cfb64
240             NID_idea_ecb
241             NID_idea_ofb64
242             NID_info_access
243             NID_initials
244             NID_invalidity_date
245             NID_issuer_alt_name
246             NID_keyBag
247             NID_key_usage
248             NID_localKeyID
249             NID_localityName
250             NID_md2
251             NID_md2WithRSAEncryption
252             NID_md5
253             NID_md5WithRSA
254             NID_md5WithRSAEncryption
255             NID_md5_sha1
256             NID_mdc2
257             NID_mdc2WithRSA
258             NID_ms_code_com
259             NID_ms_code_ind
260             NID_ms_ctl_sign
261             NID_ms_efs
262             NID_ms_ext_req
263             NID_ms_sgc
264             NID_name
265             NID_netscape
266             NID_netscape_base_url
267             NID_netscape_ca_policy_url
268             NID_netscape_ca_revocation_url
269             NID_netscape_cert_extension
270             NID_netscape_cert_sequence
271             NID_netscape_cert_type
272             NID_netscape_comment
273             NID_netscape_data_type
274             NID_netscape_renewal_url
275             NID_netscape_revocation_url
276             NID_netscape_ssl_server_name
277             NID_ns_sgc
278             NID_organizationName
279             NID_organizationalUnitName
280             NID_pbeWithMD2AndDES_CBC
281             NID_pbeWithMD2AndRC2_CBC
282             NID_pbeWithMD5AndCast5_CBC
283             NID_pbeWithMD5AndDES_CBC
284             NID_pbeWithMD5AndRC2_CBC
285             NID_pbeWithSHA1AndDES_CBC
286             NID_pbeWithSHA1AndRC2_CBC
287             NID_pbe_WithSHA1And128BitRC2_CBC
288             NID_pbe_WithSHA1And128BitRC4
289             NID_pbe_WithSHA1And2_Key_TripleDES_CBC
290             NID_pbe_WithSHA1And3_Key_TripleDES_CBC
291             NID_pbe_WithSHA1And40BitRC2_CBC
292             NID_pbe_WithSHA1And40BitRC4
293             NID_pbes2
294             NID_pbmac1
295             NID_pkcs
296             NID_pkcs3
297             NID_pkcs7
298             NID_pkcs7_data
299             NID_pkcs7_digest
300             NID_pkcs7_encrypted
301             NID_pkcs7_enveloped
302             NID_pkcs7_signed
303             NID_pkcs7_signedAndEnveloped
304             NID_pkcs8ShroudedKeyBag
305             NID_pkcs9
306             NID_pkcs9_challengePassword
307             NID_pkcs9_contentType
308             NID_pkcs9_countersignature
309             NID_pkcs9_emailAddress
310             NID_pkcs9_extCertAttributes
311             NID_pkcs9_messageDigest
312             NID_pkcs9_signingTime
313             NID_pkcs9_unstructuredAddress
314             NID_pkcs9_unstructuredName
315             NID_private_key_usage_period
316             NID_rc2_40_cbc
317             NID_rc2_64_cbc
318             NID_rc2_cbc
319             NID_rc2_cfb64
320             NID_rc2_ecb
321             NID_rc2_ofb64
322             NID_rc4
323             NID_rc4_40
324             NID_rc5_cbc
325             NID_rc5_cfb64
326             NID_rc5_ecb
327             NID_rc5_ofb64
328             NID_ripemd160
329             NID_ripemd160WithRSA
330             NID_rle_compression
331             NID_rsa
332             NID_rsaEncryption
333             NID_rsadsi
334             NID_safeContentsBag
335             NID_sdsiCertificate
336             NID_secretBag
337             NID_serialNumber
338             NID_server_auth
339             NID_sha
340             NID_sha1
341             NID_sha1WithRSA
342             NID_sha1WithRSAEncryption
343             NID_shaWithRSAEncryption
344             NID_stateOrProvinceName
345             NID_subject_alt_name
346             NID_subject_key_identifier
347             NID_surname
348             NID_sxnet
349             NID_time_stamp
350             NID_title
351             NID_undef
352             NID_uniqueIdentifier
353             NID_x509Certificate
354             NID_x509Crl
355             NID_zlib_compression
356             NOTHING
357             OCSP_RESPONSE_STATUS_INTERNALERROR
358             OCSP_RESPONSE_STATUS_MALFORMEDREQUEST
359             OCSP_RESPONSE_STATUS_SIGREQUIRED
360             OCSP_RESPONSE_STATUS_SUCCESSFUL
361             OCSP_RESPONSE_STATUS_TRYLATER
362             OCSP_RESPONSE_STATUS_UNAUTHORIZED
363             OPENSSL_BUILT_ON
364             OPENSSL_CFLAGS
365             OPENSSL_CPU_INFO
366             OPENSSL_DIR
367             OPENSSL_ENGINES_DIR
368             OPENSSL_FULL_VERSION_STRING
369             OPENSSL_INFO_CONFIG_DIR
370             OPENSSL_INFO_CPU_SETTINGS
371             OPENSSL_INFO_DIR_FILENAME_SEPARATOR
372             OPENSSL_INFO_DSO_EXTENSION
373             OPENSSL_INFO_ENGINES_DIR
374             OPENSSL_INFO_LIST_SEPARATOR
375             OPENSSL_INFO_MODULES_DIR
376             OPENSSL_INFO_SEED_SOURCE
377             OPENSSL_MODULES_DIR
378             OPENSSL_PLATFORM
379             OPENSSL_VERSION
380             OPENSSL_VERSION_MAJOR
381             OPENSSL_VERSION_MINOR
382             OPENSSL_VERSION_NUMBER
383             OPENSSL_VERSION_PATCH
384             OPENSSL_VERSION_STRING
385             OP_ALL
386             OP_ALLOW_NO_DHE_KEX
387             OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
388             OP_CIPHER_SERVER_PREFERENCE
389             OP_CISCO_ANYCONNECT
390             OP_COOKIE_EXCHANGE
391             OP_CRYPTOPRO_TLSEXT_BUG
392             OP_DONT_INSERT_EMPTY_FRAGMENTS
393             OP_ENABLE_MIDDLEBOX_COMPAT
394             OP_EPHEMERAL_RSA
395             OP_LEGACY_SERVER_CONNECT
396             OP_MICROSOFT_BIG_SSLV3_BUFFER
397             OP_MICROSOFT_SESS_ID_BUG
398             OP_MSIE_SSLV2_RSA_PADDING
399             OP_NETSCAPE_CA_DN_BUG
400             OP_NETSCAPE_CHALLENGE_BUG
401             OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
402             OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
403             OP_NON_EXPORT_FIRST
404             OP_NO_ANTI_REPLAY
405             OP_NO_CLIENT_RENEGOTIATION
406             OP_NO_COMPRESSION
407             OP_NO_ENCRYPT_THEN_MAC
408             OP_NO_QUERY_MTU
409             OP_NO_RENEGOTIATION
410             OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
411             OP_NO_SSL_MASK
412             OP_NO_SSLv2
413             OP_NO_SSLv3
414             OP_NO_TICKET
415             OP_NO_TLSv1
416             OP_NO_TLSv1_1
417             OP_NO_TLSv1_2
418             OP_NO_TLSv1_3
419             OP_PKCS1_CHECK_1
420             OP_PKCS1_CHECK_2
421             OP_PRIORITIZE_CHACHA
422             OP_SAFARI_ECDHE_ECDSA_BUG
423             OP_SINGLE_DH_USE
424             OP_SINGLE_ECDH_USE
425             OP_SSLEAY_080_CLIENT_DH_BUG
426             OP_SSLREF2_REUSE_CERT_TYPE_BUG
427             OP_TLSEXT_PADDING
428             OP_TLS_BLOCK_PADDING_BUG
429             OP_TLS_D5_BUG
430             OP_TLS_ROLLBACK_BUG
431             READING
432             RECEIVED_SHUTDOWN
433             RSA_3
434             RSA_F4
435             R_BAD_AUTHENTICATION_TYPE
436             R_BAD_CHECKSUM
437             R_BAD_MAC_DECODE
438             R_BAD_RESPONSE_ARGUMENT
439             R_BAD_SSL_FILETYPE
440             R_BAD_SSL_SESSION_ID_LENGTH
441             R_BAD_STATE
442             R_BAD_WRITE_RETRY
443             R_CHALLENGE_IS_DIFFERENT
444             R_CIPHER_TABLE_SRC_ERROR
445             R_INVALID_CHALLENGE_LENGTH
446             R_NO_CERTIFICATE_SET
447             R_NO_CERTIFICATE_SPECIFIED
448             R_NO_CIPHER_LIST
449             R_NO_CIPHER_MATCH
450             R_NO_PRIVATEKEY
451             R_NO_PUBLICKEY
452             R_NULL_SSL_CTX
453             R_PEER_DID_NOT_RETURN_A_CERTIFICATE
454             R_PEER_ERROR
455             R_PEER_ERROR_CERTIFICATE
456             R_PEER_ERROR_NO_CIPHER
457             R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE
458             R_PUBLIC_KEY_ENCRYPT_ERROR
459             R_PUBLIC_KEY_IS_NOT_RSA
460             R_READ_WRONG_PACKET_TYPE
461             R_SHORT_READ
462             R_SSL_SESSION_ID_IS_DIFFERENT
463             R_UNABLE_TO_EXTRACT_PUBLIC_KEY
464             R_UNKNOWN_REMOTE_ERROR_TYPE
465             R_UNKNOWN_STATE
466             R_X509_LIB
467             SENT_SHUTDOWN
468             SESSION_ASN1_VERSION
469             SESS_CACHE_BOTH
470             SESS_CACHE_CLIENT
471             SESS_CACHE_NO_AUTO_CLEAR
472             SESS_CACHE_NO_INTERNAL
473             SESS_CACHE_NO_INTERNAL_LOOKUP
474             SESS_CACHE_NO_INTERNAL_STORE
475             SESS_CACHE_OFF
476             SESS_CACHE_SERVER
477             SSL2_MT_CLIENT_CERTIFICATE
478             SSL2_MT_CLIENT_FINISHED
479             SSL2_MT_CLIENT_HELLO
480             SSL2_MT_CLIENT_MASTER_KEY
481             SSL2_MT_ERROR
482             SSL2_MT_REQUEST_CERTIFICATE
483             SSL2_MT_SERVER_FINISHED
484             SSL2_MT_SERVER_HELLO
485             SSL2_MT_SERVER_VERIFY
486             SSL2_VERSION
487             SSL3_MT_CCS
488             SSL3_MT_CERTIFICATE
489             SSL3_MT_CERTIFICATE_REQUEST
490             SSL3_MT_CERTIFICATE_STATUS
491             SSL3_MT_CERTIFICATE_URL
492             SSL3_MT_CERTIFICATE_VERIFY
493             SSL3_MT_CHANGE_CIPHER_SPEC
494             SSL3_MT_CLIENT_HELLO
495             SSL3_MT_CLIENT_KEY_EXCHANGE
496             SSL3_MT_ENCRYPTED_EXTENSIONS
497             SSL3_MT_END_OF_EARLY_DATA
498             SSL3_MT_FINISHED
499             SSL3_MT_HELLO_REQUEST
500             SSL3_MT_KEY_UPDATE
501             SSL3_MT_MESSAGE_HASH
502             SSL3_MT_NEWSESSION_TICKET
503             SSL3_MT_NEXT_PROTO
504             SSL3_MT_SERVER_DONE
505             SSL3_MT_SERVER_HELLO
506             SSL3_MT_SERVER_KEY_EXCHANGE
507             SSL3_MT_SUPPLEMENTAL_DATA
508             SSL3_RT_ALERT
509             SSL3_RT_APPLICATION_DATA
510             SSL3_RT_CHANGE_CIPHER_SPEC
511             SSL3_RT_HANDSHAKE
512             SSL3_RT_HEADER
513             SSL3_RT_INNER_CONTENT_TYPE
514             SSL3_VERSION
515             SSLEAY_BUILT_ON
516             SSLEAY_CFLAGS
517             SSLEAY_DIR
518             SSLEAY_PLATFORM
519             SSLEAY_VERSION
520             ST_ACCEPT
521             ST_BEFORE
522             ST_CONNECT
523             ST_INIT
524             ST_OK
525             ST_READ_BODY
526             ST_READ_HEADER
527             TLS1_1_VERSION
528             TLS1_2_VERSION
529             TLS1_3_VERSION
530             TLS1_VERSION
531             TLSEXT_STATUSTYPE_ocsp
532             VERIFY_CLIENT_ONCE
533             VERIFY_FAIL_IF_NO_PEER_CERT
534             VERIFY_NONE
535             VERIFY_PEER
536             VERIFY_POST_HANDSHAKE
537             V_OCSP_CERTSTATUS_GOOD
538             V_OCSP_CERTSTATUS_REVOKED
539             V_OCSP_CERTSTATUS_UNKNOWN
540             WRITING
541             X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
542             X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS
543             X509_CHECK_FLAG_NEVER_CHECK_SUBJECT
544             X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS
545             X509_CHECK_FLAG_NO_WILDCARDS
546             X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS
547             X509_FILETYPE_ASN1
548             X509_FILETYPE_DEFAULT
549             X509_FILETYPE_PEM
550             X509_LOOKUP
551             X509_PURPOSE_ANY
552             X509_PURPOSE_CRL_SIGN
553             X509_PURPOSE_NS_SSL_SERVER
554             X509_PURPOSE_OCSP_HELPER
555             X509_PURPOSE_SMIME_ENCRYPT
556             X509_PURPOSE_SMIME_SIGN
557             X509_PURPOSE_SSL_CLIENT
558             X509_PURPOSE_SSL_SERVER
559             X509_PURPOSE_TIMESTAMP_SIGN
560             X509_TRUST_COMPAT
561             X509_TRUST_EMAIL
562             X509_TRUST_OBJECT_SIGN
563             X509_TRUST_OCSP_REQUEST
564             X509_TRUST_OCSP_SIGN
565             X509_TRUST_SSL_CLIENT
566             X509_TRUST_SSL_SERVER
567             X509_TRUST_TSA
568             X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
569             X509_V_ERR_AKID_SKID_MISMATCH
570             X509_V_ERR_APPLICATION_VERIFICATION
571             X509_V_ERR_CA_KEY_TOO_SMALL
572             X509_V_ERR_CA_MD_TOO_WEAK
573             X509_V_ERR_CERT_CHAIN_TOO_LONG
574             X509_V_ERR_CERT_HAS_EXPIRED
575             X509_V_ERR_CERT_NOT_YET_VALID
576             X509_V_ERR_CERT_REJECTED
577             X509_V_ERR_CERT_REVOKED
578             X509_V_ERR_CERT_SIGNATURE_FAILURE
579             X509_V_ERR_CERT_UNTRUSTED
580             X509_V_ERR_CRL_HAS_EXPIRED
581             X509_V_ERR_CRL_NOT_YET_VALID
582             X509_V_ERR_CRL_PATH_VALIDATION_ERROR
583             X509_V_ERR_CRL_SIGNATURE_FAILURE
584             X509_V_ERR_DANE_NO_MATCH
585             X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
586             X509_V_ERR_DIFFERENT_CRL_SCOPE
587             X509_V_ERR_EE_KEY_TOO_SMALL
588             X509_V_ERR_EMAIL_MISMATCH
589             X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
590             X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD
591             X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD
592             X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD
593             X509_V_ERR_EXCLUDED_VIOLATION
594             X509_V_ERR_HOSTNAME_MISMATCH
595             X509_V_ERR_INVALID_CA
596             X509_V_ERR_INVALID_CALL
597             X509_V_ERR_INVALID_EXTENSION
598             X509_V_ERR_INVALID_NON_CA
599             X509_V_ERR_INVALID_POLICY_EXTENSION
600             X509_V_ERR_INVALID_PURPOSE
601             X509_V_ERR_IP_ADDRESS_MISMATCH
602             X509_V_ERR_KEYUSAGE_NO_CERTSIGN
603             X509_V_ERR_KEYUSAGE_NO_CRL_SIGN
604             X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE
605             X509_V_ERR_NO_EXPLICIT_POLICY
606             X509_V_ERR_NO_VALID_SCTS
607             X509_V_ERR_OCSP_CERT_UNKNOWN
608             X509_V_ERR_OCSP_VERIFY_FAILED
609             X509_V_ERR_OCSP_VERIFY_NEEDED
610             X509_V_ERR_OUT_OF_MEM
611             X509_V_ERR_PATH_LENGTH_EXCEEDED
612             X509_V_ERR_PATH_LOOP
613             X509_V_ERR_PERMITTED_VIOLATION
614             X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED
615             X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED
616             X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION
617             X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
618             X509_V_ERR_STORE_LOOKUP
619             X509_V_ERR_SUBJECT_ISSUER_MISMATCH
620             X509_V_ERR_SUBTREE_MINMAX
621             X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256
622             X509_V_ERR_SUITE_B_INVALID_ALGORITHM
623             X509_V_ERR_SUITE_B_INVALID_CURVE
624             X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM
625             X509_V_ERR_SUITE_B_INVALID_VERSION
626             X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED
627             X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
628             X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
629             X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE
630             X509_V_ERR_UNABLE_TO_GET_CRL
631             X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER
632             X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
633             X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
634             X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
635             X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION
636             X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION
637             X509_V_ERR_UNNESTED_RESOURCE
638             X509_V_ERR_UNSPECIFIED
639             X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX
640             X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE
641             X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE
642             X509_V_ERR_UNSUPPORTED_NAME_SYNTAX
643             X509_V_FLAG_ALLOW_PROXY_CERTS
644             X509_V_FLAG_CB_ISSUER_CHECK
645             X509_V_FLAG_CHECK_SS_SIGNATURE
646             X509_V_FLAG_CRL_CHECK
647             X509_V_FLAG_CRL_CHECK_ALL
648             X509_V_FLAG_EXPLICIT_POLICY
649             X509_V_FLAG_EXTENDED_CRL_SUPPORT
650             X509_V_FLAG_IGNORE_CRITICAL
651             X509_V_FLAG_INHIBIT_ANY
652             X509_V_FLAG_INHIBIT_MAP
653             X509_V_FLAG_LEGACY_VERIFY
654             X509_V_FLAG_NOTIFY_POLICY
655             X509_V_FLAG_NO_ALT_CHAINS
656             X509_V_FLAG_NO_CHECK_TIME
657             X509_V_FLAG_PARTIAL_CHAIN
658             X509_V_FLAG_POLICY_CHECK
659             X509_V_FLAG_POLICY_MASK
660             X509_V_FLAG_SUITEB_128_LOS
661             X509_V_FLAG_SUITEB_128_LOS_ONLY
662             X509_V_FLAG_SUITEB_192_LOS
663             X509_V_FLAG_TRUSTED_FIRST
664             X509_V_FLAG_USE_CHECK_TIME
665             X509_V_FLAG_USE_DELTAS
666             X509_V_FLAG_X509_STRICT
667             X509_V_OK
668             XN_FLAG_COMPAT
669             XN_FLAG_DN_REV
670             XN_FLAG_DUMP_UNKNOWN_FIELDS
671             XN_FLAG_FN_ALIGN
672             XN_FLAG_FN_LN
673             XN_FLAG_FN_MASK
674             XN_FLAG_FN_NONE
675             XN_FLAG_FN_OID
676             XN_FLAG_FN_SN
677             XN_FLAG_MULTILINE
678             XN_FLAG_ONELINE
679             XN_FLAG_RFC2253
680             XN_FLAG_SEP_COMMA_PLUS
681             XN_FLAG_SEP_CPLUS_SPC
682             XN_FLAG_SEP_MASK
683             XN_FLAG_SEP_MULTILINE
684             XN_FLAG_SEP_SPLUS_SPC
685             XN_FLAG_SPC_EQ
686             );
687              
688             my @functions = qw(
689             BIO_eof
690             BIO_f_ssl
691             BIO_free
692             BIO_new
693             BIO_new_file
694             BIO_pending
695             BIO_read
696             BIO_s_mem
697             BIO_wpending
698             BIO_write
699             CTX_free
700             CTX_get_cert_store
701             CTX_new
702             CTX_use_RSAPrivateKey_file
703             CTX_use_certificate_file
704             CTX_v23_new
705             CTX_v2_new
706             CTX_v3_new
707             ERR_error_string
708             ERR_get_error
709             ERR_load_RAND_strings
710             ERR_load_SSL_strings
711             PEM_read_bio_X509_CRL
712             RSA_free
713             RSA_generate_key
714             SESSION_free
715             SESSION_get_master_key
716             SESSION_new
717             SESSION_print
718             X509_NAME_get_text_by_NID
719             X509_NAME_oneline
720             X509_STORE_add_cert
721             X509_STORE_add_crl
722             X509_check_email
723             X509_check_host
724             X509_check_ip
725             X509_check_ip_asc
726             X509_free
727             X509_get_issuer_name
728             X509_get_subject_name
729             X509_load_cert_crl_file
730             X509_load_cert_file
731             X509_load_crl_file
732             accept
733             clear
734             connect
735             copy_session_id
736             d2i_SSL_SESSION
737             die_if_ssl_error
738             die_now
739             do_https
740             dump_peer_certificate
741             free
742             get_cipher
743             get_cipher_list
744             get_client_random
745             get_fd
746             get_http
747             get_http4
748             get_https
749             get_https3
750             get_https4
751             get_httpx
752             get_httpx4
753             get_peer_certificate
754             get_peer_cert_chain
755             get_rbio
756             get_read_ahead
757             get_server_random
758             get_shared_ciphers
759             get_time
760             get_timeout
761             get_wbio
762             i2d_SSL_SESSION
763             load_error_strings
764             make_form
765             make_headers
766             new
767             peek
768             pending
769             post_http
770             post_http4
771             post_https
772             post_https3
773             post_https4
774             post_httpx
775             post_httpx4
776             print_errs
777             read
778             rstate_string
779             rstate_string_long
780             set_bio
781             set_cert_and_key
782             set_cipher_list
783             set_fd
784             set_read_ahead
785             set_rfd
786             set_server_cert_and_key
787             set_session
788             set_time
789             set_timeout
790             set_verify
791             set_wfd
792             ssl_read_CRLF
793             ssl_read_all
794             ssl_read_until
795             ssl_write_CRLF
796             ssl_write_all
797             sslcat
798             state_string
799             state_string_long
800             tcp_read_CRLF
801             tcp_read_all
802             tcp_read_until
803             tcp_write_CRLF
804             tcp_write_all
805             tcpcat
806             tcpxcat
807             use_PrivateKey
808             use_PrivateKey_ASN1
809             use_PrivateKey_file
810             use_RSAPrivateKey
811             use_RSAPrivateKey_ASN1
812             use_RSAPrivateKey_file
813             use_certificate
814             use_certificate_ASN1
815             use_certificate_file
816             write
817             d2i_OCSP_RESPONSE
818             i2d_OCSP_RESPONSE
819             OCSP_RESPONSE_free
820             d2i_OCSP_REQUEST
821             i2d_OCSP_REQUEST
822             OCSP_REQUEST_free
823             OCSP_cert2ids
824             OCSP_ids2req
825             OCSP_response_status
826             OCSP_response_status_str
827             OCSP_response_verify
828             OCSP_response_results
829             );
830              
831             @EXPORT_OK = ( @constants, @functions );
832              
833             sub AUTOLOAD {
834             # This AUTOLOAD is used to 'autoload' constants from the constant()
835             # XS function. If a constant is not found then control is passed
836             # to the AUTOLOAD in AutoLoader.
837              
838 903     903   140578 my $constname;
839 903         6359 ($constname = $AUTOLOAD) =~ s/.*:://;
840 903         6283 my $val = constant($constname);
841 903 100       5263 if ($! != 0) {
842 193 100 66     3183 if ($! =~ /((Invalid)|(not valid))/i || $!{EINVAL}) {
843 90         466 $AutoLoader::AUTOLOAD = $AUTOLOAD;
844 90         850 goto &AutoLoader::AUTOLOAD;
845             }
846             else {
847 103         16869 croak "Your vendor has not defined SSLeay macro $constname";
848             }
849             }
850 710     65 1 36088 eval "sub $AUTOLOAD { $val }";
  65     103 1 61359  
  65     448 0 350  
  65     219 1 191  
  65     415 0 253  
  99     78 0 6326  
  132     9 0 15469  
  3     8 0 48  
  3     7 0 20  
  2     7 0 8  
  3     8 0 14  
  2     7 0 7  
  2     5 0 8  
        5 0    
        5 0    
        9 0    
        8 0    
        5 0    
        5 0    
        5 0    
        5 0    
        5 0    
        5 0    
        5 0    
        5 0    
        7 0    
        5 0    
        9 0    
        6 0    
        5 0    
        5 0    
        5 0    
        4 0    
        9 0    
        4 0    
        4 0    
        4 0    
        12 0    
        6 0    
        4 0    
        4 0    
        4 0    
        4 0    
        4 0    
        6 0    
        4 0    
        4 0    
        4 0    
        4 0    
        4 0    
        5 0    
        6 0    
        4 0    
        4 0    
        5 0    
        4 0    
        4 0    
        4 0    
        4 0    
        4 0    
        4 0    
        4 0    
        6 0    
        4 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        3 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        10 0    
        2 0    
        2 0    
        2 0    
        2 0    
        4 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        4 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        5 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        2 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        3 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
        1 0    
851 710         21315 goto &$AUTOLOAD;
852             }
853              
854             eval {
855             require XSLoader;
856             XSLoader::load('Net::SSLeay', $VERSION);
857             1;
858             } or do {
859             require DynaLoader;
860             push @ISA, 'DynaLoader';
861             bootstrap Net::SSLeay $VERSION;
862             };
863              
864             # Preloaded methods go here.
865              
866             $CRLF = "\x0d\x0a"; # because \r\n is not fully portable
867              
868             ### Print SSLeay error stack
869              
870             sub print_errs {
871 42     42 1 134 my ($msg) = @_;
872 42         186 my ($count, $err, $errs, $e) = (0,0,'');
873 42         530 while ($err = ERR_get_error()) {
874 4         8 $count ++;
875 4         42 $e = "$msg $$: $count - " . ERR_error_string($err) . "\n";
876 4         8 $errs .= $e;
877 4 100       30 warn $e if $Net::SSLeay::trace;
878             }
879 42         1198 return $errs;
880             }
881              
882             # Death is conditional to SSLeay errors existing, i.e. this function checks
883             # for errors and only dies in affirmative.
884             # usage: Net::SSLeay::write($ssl, "foo") or die_if_ssl_error("SSL write ($!)");
885              
886             sub die_if_ssl_error {
887 4     4 1 30 my ($msg) = @_;
888 4 100       10 die "$$: $msg\n" if print_errs($msg);
889             }
890              
891             # Unconditional death. Used to print SSLeay errors before dying.
892             # usage: Net::SSLeay::connect($ssl) or die_now("Failed SSL connect ($!)");
893              
894             sub die_now {
895 4     4 1 18 my ($msg) = @_;
896 4         10 print_errs($msg);
897 4         28 die "$$: $msg\n";
898             }
899              
900             # Perl 5.6.* unicode support causes that length() no longer reliably
901             # reflects the byte length of a string. This eval is to fix that.
902             # Thanks to Sean Burke for the snippet.
903              
904             BEGIN{
905 54 50   54 1 69175 eval 'use bytes; sub blength ($) { defined $_[0] ? length $_[0] : 0 }';
  54     54   33350  
  54     304   2071  
  54         293  
  304         6242  
906 54 50       7142 $@ and eval ' sub blength ($) { defined $_[0] ? length $_[0] : 0 }' ;
907             }
908              
909             # Autoload methods go after __END__, and are processed by the autosplit program.
910              
911              
912             1;
913             __END__