~andersk/ubuntu/oneiric/openssl/spurious-reboot

« back to all changes in this revision

Viewing changes to ssl/ssl_locl.h

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2011-05-01 23:51:53 UTC
  • mfrom: (11.1.20 sid)
  • Revision ID: james.westby@ubuntu.com-20110501235153-bjcxitndquaezb68
Tags: 1.0.0d-2ubuntu1
* Resynchronise with Debian (LP: #675566).  Remaining changes:
  - debian/libssl1.0.0.postinst:
    + Display a system restart required notification bubble on libssl1.0.0
      upgrade.
    + Use a different priority for libssl1.0.0/restart-services depending
      on whether a desktop, or server dist-upgrade is being performed.
  - debian/{libssl1.0.0-udeb.dirs, control, rules}: Create
    libssl1.0.0-udeb, for the benefit of wget-udeb (no wget-udeb package
    in Debian).
  - debian/{libcrypto1.0.0-udeb.dirs, libssl1.0.0.dirs, libssl1.0.0.files,
    rules}: Move runtime libraries to /lib, for the benefit of
    wpasupplicant.
  - debian/patches/aesni.patch: Backport Intel AES-NI support, now from
    http://rt.openssl.org/Ticket/Display.html?id=2065 rather than the
    0.9.8 variant.
  - debian/patches/Bsymbolic-functions.patch: Link using
    -Bsymbolic-functions.
  - debian/patches/perlpath-quilt.patch: Don't change perl #! paths under
    .pc.
  - debian/rules:
    + Don't run 'make test' when cross-building.
    + Use host compiler when cross-building.  Patch from Neil Williams.
    + Don't build for processors no longer supported: i486, i586 (on
      i386), v8 (on sparc).
    + Fix Makefile to properly clean up libs/ dirs in clean target.
    + Replace duplicate files in the doc directory with symlinks.
* Update architectures affected by Bsymbolic-functions.patch.
* Drop debian/patches/no-sslv2.patch; Debian now adds the 'no-ssl2'
  configure option, which compiles out SSLv2 support entirely, so this is
  no longer needed.
* Drop openssl-doc in favour of the libssl-doc package introduced by
  Debian.  Add Conflicts/Replaces until the next LTS release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
 * [including the GNU Public Licence.]
57
57
 */
58
58
/* ====================================================================
59
 
 * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
 
59
 * Copyright (c) 1998-2007 The OpenSSL Project.  All rights reserved.
60
60
 *
61
61
 * Redistribution and use in source and binary forms, with or without
62
62
 * modification, are permitted provided that the following conditions
113
113
 * ECC cipher suite support in OpenSSL originally developed by 
114
114
 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115
115
 */
 
116
/* ====================================================================
 
117
 * Copyright 2005 Nokia. All rights reserved.
 
118
 *
 
119
 * The portions of the attached software ("Contribution") is developed by
 
120
 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
 
121
 * license.
 
122
 *
 
123
 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
 
124
 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
 
125
 * support (see RFC 4279) to OpenSSL.
 
126
 *
 
127
 * No patent licenses or other rights except those expressly stated in
 
128
 * the OpenSSL open source license shall be deemed granted or received
 
129
 * expressly, by implication, estoppel, or otherwise.
 
130
 *
 
131
 * No assurances are provided by Nokia that the Contribution does not
 
132
 * infringe the patent or other intellectual property rights of any third
 
133
 * party or that the license provides you with all the necessary rights
 
134
 * to make use of the Contribution.
 
135
 *
 
136
 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
 
137
 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
 
138
 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
 
139
 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
 
140
 * OTHERWISE.
 
141
 */
116
142
 
117
143
#ifndef HEADER_SSL_LOCL_H
118
144
#define HEADER_SSL_LOCL_H
251
277
 * that the different entities within are mutually exclusive:
252
278
 * ONLY ONE BIT PER MASK CAN BE SET AT A TIME.
253
279
 */
254
 
#define SSL_MKEY_MASK           0x000000FFL
 
280
 
 
281
/* Bits for algorithm_mkey (key exchange algorithm) */
255
282
#define SSL_kRSA                0x00000001L /* RSA key exchange */
256
 
#define SSL_kDHr                0x00000002L /* DH cert RSA CA cert */
257
 
#define SSL_kDHd                0x00000004L /* DH cert DSA CA cert */
258
 
#define SSL_kFZA                0x00000008L
259
 
#define SSL_kEDH                0x00000010L /* tmp DH key no DH cert */
260
 
#define SSL_kKRB5               0x00000020L /* Kerberos5 key exchange */
261
 
#define SSL_kECDH               0x00000040L /* ECDH w/ long-term keys */
262
 
#define SSL_kECDHE              0x00000080L /* ephemeral ECDH */
263
 
#define SSL_EDH                 (SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL))
264
 
 
265
 
#define SSL_AUTH_MASK           0x00007F00L
266
 
#define SSL_aRSA                0x00000100L /* Authenticate with RSA */
267
 
#define SSL_aDSS                0x00000200L /* Authenticate with DSS */
268
 
#define SSL_DSS                 SSL_aDSS
269
 
#define SSL_aFZA                0x00000400L
270
 
#define SSL_aNULL               0x00000800L /* no Authenticate, ADH */
271
 
#define SSL_aDH                 0x00001000L /* no Authenticate, ADH */
272
 
#define SSL_aKRB5               0x00002000L /* Authenticate with KRB5 */
273
 
#define SSL_aECDSA              0x00004000L /* Authenticate with ECDSA */
274
 
 
275
 
#define SSL_NULL                (SSL_eNULL)
276
 
#define SSL_ADH                 (SSL_kEDH|SSL_aNULL)
277
 
#define SSL_RSA                 (SSL_kRSA|SSL_aRSA)
278
 
#define SSL_DH                  (SSL_kDHr|SSL_kDHd|SSL_kEDH)
279
 
#define SSL_ECDH                (SSL_kECDH|SSL_kECDHE)
280
 
#define SSL_FZA                 (SSL_aFZA|SSL_kFZA|SSL_eFZA)
281
 
#define SSL_KRB5                (SSL_kKRB5|SSL_aKRB5)
282
 
 
283
 
#define SSL_ENC_MASK            0x1C3F8000L
284
 
#define SSL_DES                 0x00008000L
285
 
#define SSL_3DES                0x00010000L
286
 
#define SSL_RC4                 0x00020000L
287
 
#define SSL_RC2                 0x00040000L
288
 
#define SSL_IDEA                0x00080000L
289
 
#define SSL_eFZA                0x00100000L
290
 
#define SSL_eNULL               0x00200000L
291
 
#define SSL_AES                 0x04000000L
292
 
#define SSL_CAMELLIA            0x08000000L
293
 
#define SSL_SEED                0x10000000L
294
 
 
295
 
#define SSL_MAC_MASK            0x00c00000L
296
 
#define SSL_MD5                 0x00400000L
297
 
#define SSL_SHA1                0x00800000L
298
 
#define SSL_SHA                 (SSL_SHA1)
299
 
 
300
 
#define SSL_SSL_MASK            0x03000000L
301
 
#define SSL_SSLV2               0x01000000L
302
 
#define SSL_SSLV3               0x02000000L
 
283
#define SSL_kDHr                0x00000002L /* DH cert, RSA CA cert */ /* no such ciphersuites supported! */
 
284
#define SSL_kDHd                0x00000004L /* DH cert, DSA CA cert */ /* no such ciphersuite supported! */
 
285
#define SSL_kEDH                0x00000008L /* tmp DH key no DH cert */
 
286
#define SSL_kKRB5               0x00000010L /* Kerberos5 key exchange */
 
287
#define SSL_kECDHr              0x00000020L /* ECDH cert, RSA CA cert */
 
288
#define SSL_kECDHe              0x00000040L /* ECDH cert, ECDSA CA cert */
 
289
#define SSL_kEECDH              0x00000080L /* ephemeral ECDH */
 
290
#define SSL_kPSK                0x00000100L /* PSK */
 
291
#define SSL_kGOST       0x00000200L /* GOST key exchange */
 
292
 
 
293
/* Bits for algorithm_auth (server authentication) */
 
294
#define SSL_aRSA                0x00000001L /* RSA auth */
 
295
#define SSL_aDSS                0x00000002L /* DSS auth */
 
296
#define SSL_aNULL               0x00000004L /* no auth (i.e. use ADH or AECDH) */
 
297
#define SSL_aDH                 0x00000008L /* Fixed DH auth (kDHd or kDHr) */ /* no such ciphersuites supported! */
 
298
#define SSL_aECDH               0x00000010L /* Fixed ECDH auth (kECDHe or kECDHr) */
 
299
#define SSL_aKRB5               0x00000020L /* KRB5 auth */
 
300
#define SSL_aECDSA              0x00000040L /* ECDSA auth*/
 
301
#define SSL_aPSK                0x00000080L /* PSK auth */
 
302
#define SSL_aGOST94                             0x00000100L /* GOST R 34.10-94 signature auth */
 
303
#define SSL_aGOST01                     0x00000200L /* GOST R 34.10-2001 signature auth */
 
304
 
 
305
 
 
306
/* Bits for algorithm_enc (symmetric encryption) */
 
307
#define SSL_DES                 0x00000001L
 
308
#define SSL_3DES                0x00000002L
 
309
#define SSL_RC4                 0x00000004L
 
310
#define SSL_RC2                 0x00000008L
 
311
#define SSL_IDEA                0x00000010L
 
312
#define SSL_eNULL               0x00000020L
 
313
#define SSL_AES128              0x00000040L
 
314
#define SSL_AES256              0x00000080L
 
315
#define SSL_CAMELLIA128         0x00000100L
 
316
#define SSL_CAMELLIA256         0x00000200L
 
317
#define SSL_eGOST2814789CNT     0x00000400L
 
318
#define SSL_SEED                0x00000800L
 
319
 
 
320
#define SSL_AES                 (SSL_AES128|SSL_AES256)
 
321
#define SSL_CAMELLIA            (SSL_CAMELLIA128|SSL_CAMELLIA256)
 
322
 
 
323
 
 
324
/* Bits for algorithm_mac (symmetric authentication) */
 
325
#define SSL_MD5                 0x00000001L
 
326
#define SSL_SHA1                0x00000002L
 
327
#define SSL_GOST94      0x00000004L
 
328
#define SSL_GOST89MAC   0x00000008L
 
329
 
 
330
/* Bits for algorithm_ssl (protocol version) */
 
331
#define SSL_SSLV2               0x00000001L
 
332
#define SSL_SSLV3               0x00000002L
303
333
#define SSL_TLSV1               SSL_SSLV3       /* for now */
304
334
 
305
 
/* we have used 1fffffff - 3 bits left to go. */
 
335
 
 
336
/* Bits for algorithm2 (handshake digests and other extra flags) */
 
337
 
 
338
#define SSL_HANDSHAKE_MAC_MD5 0x10
 
339
#define SSL_HANDSHAKE_MAC_SHA 0x20
 
340
#define SSL_HANDSHAKE_MAC_GOST94 0x40
 
341
#define SSL_HANDSHAKE_MAC_DEFAULT (SSL_HANDSHAKE_MAC_MD5 | SSL_HANDSHAKE_MAC_SHA)
 
342
 
 
343
/* When adding new digest in the ssl_ciph.c and increment SSM_MD_NUM_IDX
 
344
 * make sure to update this constant too */
 
345
#define SSL_MAX_DIGEST 4
 
346
 
 
347
#define TLS1_PRF_DGST_SHIFT 8
 
348
#define TLS1_PRF_MD5 (SSL_HANDSHAKE_MAC_MD5 << TLS1_PRF_DGST_SHIFT)
 
349
#define TLS1_PRF_SHA1 (SSL_HANDSHAKE_MAC_SHA << TLS1_PRF_DGST_SHIFT)
 
350
#define TLS1_PRF_GOST94 (SSL_HANDSHAKE_MAC_GOST94 << TLS1_PRF_DGST_SHIFT)
 
351
#define TLS1_PRF (TLS1_PRF_MD5 | TLS1_PRF_SHA1)
 
352
 
 
353
/* Stream MAC for GOST ciphersuites from cryptopro draft
 
354
 * (currently this also goes into algorithm2) */
 
355
#define TLS1_STREAM_MAC 0x04
 
356
 
 
357
 
306
358
 
307
359
/*
308
360
 * Export and cipher strength information. For each cipher we have to decide
320
372
 * be possible.
321
373
 */
322
374
#define SSL_EXP_MASK            0x00000003L
 
375
#define SSL_STRONG_MASK         0x000001fcL
 
376
 
323
377
#define SSL_NOT_EXP             0x00000001L
324
378
#define SSL_EXPORT              0x00000002L
325
379
 
326
 
#define SSL_STRONG_MASK         0x000000fcL
327
380
#define SSL_STRONG_NONE         0x00000004L
328
381
#define SSL_EXP40               0x00000008L
329
382
#define SSL_MICRO               (SSL_EXP40)
357
410
#define SSL_C_IS_EXPORT40(c)    SSL_IS_EXPORT40((c)->algo_strength)
358
411
 
359
412
#define SSL_EXPORT_KEYLENGTH(a,s)       (SSL_IS_EXPORT40(s) ? 5 : \
360
 
                                 ((a)&SSL_ENC_MASK) == SSL_DES ? 8 : 7)
 
413
                                 (a) == SSL_DES ? 8 : 7)
361
414
#define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024)
362
 
#define SSL_C_EXPORT_KEYLENGTH(c)       SSL_EXPORT_KEYLENGTH((c)->algorithms, \
 
415
#define SSL_C_EXPORT_KEYLENGTH(c)       SSL_EXPORT_KEYLENGTH((c)->algorithm_enc, \
363
416
                                (c)->algo_strength)
364
417
#define SSL_C_EXPORT_PKEYLENGTH(c)      SSL_EXPORT_PKEYLENGTH((c)->algo_strength)
365
418
 
366
419
 
367
 
#define SSL_ALL                 0xffffffffL
368
 
#define SSL_ALL_CIPHERS         (SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
369
 
                                SSL_MAC_MASK)
370
 
#define SSL_ALL_STRENGTHS       (SSL_EXP_MASK|SSL_STRONG_MASK)
 
420
 
371
421
 
372
422
/* Mostly for SSLv3 */
373
423
#define SSL_PKEY_RSA_ENC        0
376
426
#define SSL_PKEY_DH_RSA         3
377
427
#define SSL_PKEY_DH_DSA         4
378
428
#define SSL_PKEY_ECC            5
379
 
#define SSL_PKEY_NUM            6
 
429
#define SSL_PKEY_GOST94         6
 
430
#define SSL_PKEY_GOST01         7
 
431
#define SSL_PKEY_NUM            8
380
432
 
381
433
/* SSL_kRSA <- RSA_ENC | (RSA_TMP & RSA_SIGN) |
382
434
 *          <- (EXPORT & (RSA_ENC | RSA_TMP) & RSA_SIGN)
417
469
        /* The following masks are for the key and auth
418
470
         * algorithms that are supported by the certs below */
419
471
        int valid;
420
 
        unsigned long mask;
421
 
        unsigned long export_mask;
 
472
        unsigned long mask_k;
 
473
        unsigned long mask_a;
 
474
        unsigned long export_mask_k;
 
475
        unsigned long export_mask_a;
422
476
#ifndef OPENSSL_NO_RSA
423
477
        RSA *rsa_tmp;
424
478
        RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize);
492
546
        int (*setup_key_block)(SSL *);
493
547
        int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int);
494
548
        int (*change_cipher_state)(SSL *, int);
495
 
        int (*final_finish_mac)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char *, int, unsigned char *);
 
549
        int (*final_finish_mac)(SSL *,  const char *, int, unsigned char *);
496
550
        int finish_mac_length;
497
 
        int (*cert_verify_mac)(SSL *, EVP_MD_CTX *, unsigned char *);
 
551
        int (*cert_verify_mac)(SSL *, int, unsigned char *);
498
552
        const char *client_finished_label;
499
553
        int client_finished_label_len;
500
554
        const char *server_finished_label;
512
566
        } SSL3_COMP;
513
567
#endif
514
568
 
 
569
#ifndef OPENSSL_NO_BUF_FREELISTS
 
570
typedef struct ssl3_buf_freelist_st
 
571
        {
 
572
        size_t chunklen;
 
573
        unsigned int len;
 
574
        struct ssl3_buf_freelist_entry_st *head;
 
575
        } SSL3_BUF_FREELIST;
 
576
 
 
577
typedef struct ssl3_buf_freelist_entry_st
 
578
        {
 
579
        struct ssl3_buf_freelist_entry_st *next;
 
580
        } SSL3_BUF_FREELIST_ENTRY;
 
581
#endif
 
582
 
515
583
extern SSL3_ENC_METHOD ssl3_undef_enc_method;
516
 
OPENSSL_EXTERN SSL_CIPHER ssl2_ciphers[];
 
584
OPENSSL_EXTERN const SSL_CIPHER ssl2_ciphers[];
517
585
OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[];
518
586
 
519
587
 
520
588
SSL_METHOD *ssl_bad_method(int ver);
521
 
SSL_METHOD *sslv2_base_method(void);
522
 
SSL_METHOD *sslv23_base_method(void);
523
 
SSL_METHOD *sslv3_base_method(void);
524
589
 
525
590
extern SSL3_ENC_METHOD TLSv1_enc_data;
526
591
extern SSL3_ENC_METHOD SSLv3_enc_data;
527
592
extern SSL3_ENC_METHOD DTLSv1_enc_data;
528
593
 
529
594
#define IMPLEMENT_tls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
530
 
SSL_METHOD *func_name(void)  \
 
595
const SSL_METHOD *func_name(void)  \
531
596
        { \
532
 
        static SSL_METHOD func_name##_data= { \
 
597
        static const SSL_METHOD func_name##_data= { \
533
598
                TLS1_VERSION, \
534
599
                tls1_new, \
535
600
                tls1_clear, \
564
629
        }
565
630
 
566
631
#define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \
567
 
SSL_METHOD *func_name(void)  \
 
632
const SSL_METHOD *func_name(void)  \
568
633
        { \
569
 
        static SSL_METHOD func_name##_data= { \
 
634
        static const SSL_METHOD func_name##_data= { \
570
635
                SSL3_VERSION, \
571
636
                ssl3_new, \
572
637
                ssl3_clear, \
601
666
        }
602
667
 
603
668
#define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \
604
 
SSL_METHOD *func_name(void)  \
 
669
const SSL_METHOD *func_name(void)  \
605
670
        { \
606
 
        static SSL_METHOD func_name##_data= { \
 
671
        static const SSL_METHOD func_name##_data= { \
607
672
        TLS1_VERSION, \
608
673
        tls1_new, \
609
674
        tls1_clear, \
638
703
        }
639
704
 
640
705
#define IMPLEMENT_ssl2_meth_func(func_name, s_accept, s_connect, s_get_meth) \
641
 
SSL_METHOD *func_name(void)  \
 
706
const SSL_METHOD *func_name(void)  \
642
707
        { \
643
 
        static SSL_METHOD func_name##_data= { \
 
708
        static const SSL_METHOD func_name##_data= { \
644
709
                SSL2_VERSION, \
645
710
                ssl2_new,       /* local */ \
646
711
                ssl2_clear,     /* local */ \
675
740
        }
676
741
 
677
742
#define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
678
 
SSL_METHOD *func_name(void)  \
 
743
const SSL_METHOD *func_name(void)  \
679
744
        { \
680
 
        static SSL_METHOD func_name##_data= { \
 
745
        static const SSL_METHOD func_name##_data= { \
681
746
                DTLS1_VERSION, \
682
747
                dtls1_new, \
683
748
                dtls1_clear, \
723
788
int ssl_get_new_session(SSL *s, int session);
724
789
int ssl_get_prev_session(SSL *s, unsigned char *session,int len, const unsigned char *limit);
725
790
int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b);
 
791
DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER,
 
792
                                  ssl_cipher_id);
726
793
int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
727
794
                        const SSL_CIPHER * const *bp);
728
795
STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
735
802
                                             const char *rule_str);
736
803
void ssl_update_cache(SSL *s, int mode);
737
804
int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc,
738
 
                       const EVP_MD **md,SSL_COMP **comp);
 
805
                       const EVP_MD **md,int *mac_pkey_type,int *mac_secret_size, SSL_COMP **comp);
 
806
int ssl_get_handshake_digest(int i,long *mask,const EVP_MD **md);                          
739
807
int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk);
740
808
int ssl_undefined_function(SSL *s);
741
809
int ssl_undefined_void_function(void);
742
810
int ssl_undefined_const_function(const SSL *s);
743
811
X509 *ssl_get_server_send_cert(SSL *);
744
 
EVP_PKEY *ssl_get_sign_pkey(SSL *,SSL_CIPHER *);
 
812
EVP_PKEY *ssl_get_sign_pkey(SSL *,const SSL_CIPHER *);
745
813
int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
746
 
void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher);
 
814
void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher);
747
815
STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
748
816
int ssl_verify_alarm_type(long type);
749
817
void ssl_load_ciphers(void);
752
820
int ssl2_generate_key_material(SSL *s);
753
821
void ssl2_enc(SSL *s,int send_data);
754
822
void ssl2_mac(SSL *s,unsigned char *mac,int send_data);
755
 
SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p);
 
823
const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p);
756
824
int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
757
825
int ssl2_part_read(SSL *s, unsigned long f, int i);
758
826
int ssl2_do_write(SSL *s);
760
828
void ssl2_return_error(SSL *s,int reason);
761
829
void ssl2_write_error(SSL *s);
762
830
int ssl2_num_ciphers(void);
763
 
SSL_CIPHER *ssl2_get_cipher(unsigned int u);
 
831
const SSL_CIPHER *ssl2_get_cipher(unsigned int u);
764
832
int     ssl2_new(SSL *s);
765
833
void    ssl2_free(SSL *s);
766
834
int     ssl2_accept(SSL *s);
777
845
int     ssl2_pending(const SSL *s);
778
846
long    ssl2_default_timeout(void );
779
847
 
780
 
SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p);
 
848
const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p);
781
849
int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
782
850
void ssl3_init_finished_mac(SSL *s);
783
851
int ssl3_send_server_certificate(SSL *s);
796
864
long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
797
865
int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen);
798
866
int ssl3_num_ciphers(void);
799
 
SSL_CIPHER *ssl3_get_cipher(unsigned int u);
 
867
const SSL_CIPHER *ssl3_get_cipher(unsigned int u);
800
868
int ssl3_renegotiate(SSL *ssl); 
801
869
int ssl3_renegotiate_check(SSL *ssl); 
802
870
int ssl3_dispatch_alert(SSL *s);
803
871
int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek);
804
872
int ssl3_write_bytes(SSL *s, int type, const void *buf, int len);
805
 
int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2,
806
 
        const char *sender, int slen,unsigned char *p);
807
 
int ssl3_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
 
873
int ssl3_final_finish_mac(SSL *s, const char *sender, int slen,unsigned char *p);
 
874
int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p);
808
875
void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len);
809
876
int ssl3_enc(SSL *s, int send_data);
810
 
int ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
 
877
int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
 
878
void ssl3_free_digest_list(SSL *s);
811
879
unsigned long ssl3_output_cert_chain(SSL *s, X509 *x);
812
880
SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt,
813
881
                               STACK_OF(SSL_CIPHER) *srvr);
814
882
int     ssl3_setup_buffers(SSL *s);
 
883
int     ssl3_setup_read_buffer(SSL *s);
 
884
int     ssl3_setup_write_buffer(SSL *s);
 
885
int     ssl3_release_read_buffer(SSL *s);
 
886
int     ssl3_release_write_buffer(SSL *s);
 
887
int     ssl3_digest_cached_records(SSL *s);
815
888
int     ssl3_new(SSL *s);
816
889
void    ssl3_free(SSL *s);
817
890
int     ssl3_accept(SSL *s);
832
905
long ssl3_default_timeout(void );
833
906
 
834
907
int ssl23_num_ciphers(void );
835
 
SSL_CIPHER *ssl23_get_cipher(unsigned int u);
 
908
const SSL_CIPHER *ssl23_get_cipher(unsigned int u);
836
909
int ssl23_read(SSL *s, void *buf, int len);
837
910
int ssl23_peek(SSL *s, void *buf, int len);
838
911
int ssl23_write(SSL *s, const void *buf, int len);
839
912
int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p);
840
 
SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
 
913
const SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
841
914
long ssl23_default_timeout(void );
842
915
 
843
916
long tls1_default_timeout(void);
871
944
long dtls1_default_timeout(void);
872
945
struct timeval* dtls1_get_timeout(SSL *s, struct timeval* timeleft);
873
946
int dtls1_handle_timeout(SSL *s);
874
 
SSL_CIPHER *dtls1_get_cipher(unsigned int u);
 
947
const SSL_CIPHER *dtls1_get_cipher(unsigned int u);
875
948
void dtls1_start_timer(SSL *s);
876
949
void dtls1_stop_timer(SSL *s);
877
950
int dtls1_is_timer_expired(SSL *s);
878
951
void dtls1_double_timeout(SSL *s);
879
952
int dtls1_send_newsession_ticket(SSL *s);
880
953
 
881
 
 
882
954
/* some client-only functions */
883
955
int ssl3_client_hello(SSL *s);
884
956
int ssl3_get_server_hello(SSL *s);
887
959
int ssl3_get_cert_status(SSL *s);
888
960
int ssl3_get_server_done(SSL *s);
889
961
int ssl3_send_client_verify(SSL *s);
 
962
int ssl3_send_client_certificate(SSL *s);
890
963
int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey);
891
 
int ssl3_send_client_certificate(SSL *s);
892
964
int ssl3_send_client_key_exchange(SSL *s);
893
965
int ssl3_get_key_exchange(SSL *s);
894
966
int ssl3_get_server_certificate(SSL *s);
933
1005
void tls1_clear(SSL *s);
934
1006
long tls1_ctrl(SSL *s,int cmd, long larg, void *parg);
935
1007
long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)(void));
936
 
SSL_METHOD *tlsv1_base_method(void );
937
1008
 
938
1009
int dtls1_new(SSL *s);
939
1010
int     dtls1_accept(SSL *s);
941
1012
void dtls1_free(SSL *s);
942
1013
void dtls1_clear(SSL *s);
943
1014
long dtls1_ctrl(SSL *s,int cmd, long larg, void *parg);
944
 
SSL_METHOD *dtlsv1_base_method(void );
945
1015
 
946
1016
long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
947
1017
int dtls1_get_record(SSL *s);
956
1026
int tls1_change_cipher_state(SSL *s, int which);
957
1027
int tls1_setup_key_block(SSL *s);
958
1028
int tls1_enc(SSL *s, int snd);
959
 
int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx,
 
1029
int tls1_final_finish_mac(SSL *s,
960
1030
        const char *str, int slen, unsigned char *p);
961
 
int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
 
1031
int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p);
962
1032
int tls1_mac(SSL *ssl, unsigned char *md, int snd);
963
1033
int tls1_generate_master_secret(SSL *s, unsigned char *out,
964
1034
        unsigned char *p, int len);
966
1036
int ssl3_alert_code(int code);
967
1037
int ssl_ok(SSL *s);
968
1038
 
969
 
int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs);
 
1039
#ifndef OPENSSL_NO_ECDH
 
1040
int ssl_check_srvr_ecc_cert_and_alg(X509 *x, const SSL_CIPHER *cs);
 
1041
#endif
970
1042
 
971
1043
SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n);
972
1044
 
 
1045
#ifndef OPENSSL_NO_EC
 
1046
int tls1_ec_curve_id2nid(int curve_id);
 
1047
int tls1_ec_nid2curve_id(int nid);
 
1048
#endif /* OPENSSL_NO_EC */
 
1049
 
973
1050
#ifndef OPENSSL_NO_TLSEXT
974
1051
unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); 
975
1052
unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); 
987
1064
#endif
988
1065
int tls1_process_ticket(SSL *s, unsigned char *session_id, int len,
989
1066
                                const unsigned char *limit, SSL_SESSION **ret);
 
1067
#endif
990
1068
EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ;
991
1069
void ssl_clear_hash_ctx(EVP_MD_CTX **hash);
992
 
 
993
1070
int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len,
994
1071
                                        int maxlen);
995
1072
int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, int len,
999
1076
int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, int len,
1000
1077
                                          int *al);
1001
1078
#endif
1002
 
 
1003
 
#endif