File Coverage

blib/lib/Net/SSLeay.pm
Criterion Covered Total %
statement 231 231 100.0
branch 74 108 68.5
condition 15 27 55.5
subroutine 181 181 100.0
pod 7 171 4.0
total 508 718 70.7


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