Commit 5f834ab1 authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

Revert my earlier CRYPTO_THREADID commit, I will commit a reworked

version some time soon.
parent 8528128b
Loading
Loading
Loading
Loading
+0 −65
Original line number Original line Diff line number Diff line
@@ -20,63 +20,6 @@
     STACK, TXT_DB, bsearch, qsort.
     STACK, TXT_DB, bsearch, qsort.
     [Ben Laurie]
     [Ben Laurie]


  *) Not all of this is true any longer.
     Will have to be updated to reflect all subsequent changes to cryptlib.c.
                                                                       --bodo


     To support arbitrarily-typed thread IDs, deprecate the existing
     type-specific APIs for a general purpose CRYPTO_THREADID
     interface. Applications can choose the thread ID
     callback type it wishes to register, as before;

        void CRYPTO_set_id_callback(unsigned long (*func)(void));
        void CRYPTO_set_idptr_callback(void *(*func)(void));

     but retrieval, copies, and comparisons of thread IDs are via
     type-independent interfaces;

        void CRYPTO_THREADID_set(CRYPTO_THREADID *id);
        void CRYPTO_THREADID_cmp(const CRYPTO_THREADID *id1,
                                 const CRYPTO_THREADID *id2);
        void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dst,
                                 const CRYPTO_THREADID *src);

     Also, for code that needs a thread ID "value" for use in
     hash-tables or logging, a "hash" is available by;

        unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);

     This hash value is likely to be the thread ID anyway, but
     otherwise it will be unique if possible or as collision-free as
     possible if uniqueness can't be guaranteed on the target
     architecture.

     The following functions are deprecated;
        unsigned long (*CRYPTO_get_id_callback(void))(void);
        unsigned long CRYPTO_thread_id(void);

     As a consequence of the above, there are similar deprecations of
     BN_BLINDING functions in favour of CRYPTO_THREADID-based
     alternatives;

        #ifndef OPENSSL_NO_DEPRECATED
        unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
        void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
        #endif
        void BN_BLINDING_set_thread(BN_BLINDING *);
        int BN_BLINDING_cmp_thread(const BN_BLINDING *, const
                                   CRYPTO_THREADID *);

     Also, the ERR_remove_state(int pid) API has been deprecated;

        #ifndef OPENSSL_NO_DEPRECATED
        void ERR_remove_state(unsigned long pid)
        #endif
        void ERR_remove_thread_state(CRYPTO_THREADID *tid);

     [Geoff Thorpe]

  *) Initial support for Cryptographic Message Syntax (aka CMS) based
  *) Initial support for Cryptographic Message Syntax (aka CMS) based
     on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
     on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
     support for data, signedData, compressedData, digestedData and
     support for data, signedData, compressedData, digestedData and
@@ -383,14 +326,6 @@
     callback is &errno.
     callback is &errno.
     [Bodo Moeller]
     [Bodo Moeller]


     -- NOTE -- this change has been reverted and replaced with a
     type-independent wrapper (ie. applications do not have to check
     two type-specific thread ID representations as implied in this
     change note). However, the "idptr" callback form described here
     can still be registered. Please see the more recent CHANGES note
     regarding CRYPTO_THREADID. [Geoff Thorpe]
     -- NOTE --

  *) Change the array representation of binary polynomials: the list
  *) Change the array representation of binary polynomials: the list
     of degrees of non-zero coefficients is now terminated with -1.
     of degrees of non-zero coefficients is now terminated with -1.
     Previously it was terminated with 0, which was also part of the
     Previously it was terminated with 0, which was also part of the
+2 −2
Original line number Original line Diff line number Diff line
@@ -181,7 +181,7 @@ extern BIO *bio_err;
#    define apps_shutdown() \
#    define apps_shutdown() \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
			OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
			CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
			CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \
			ERR_free_strings(); COMP_zlib_cleanup();} while(0)
			ERR_free_strings(); COMP_zlib_cleanup();} while(0)
#  else
#  else
#    define apps_startup() \
#    define apps_startup() \
@@ -191,7 +191,7 @@ extern BIO *bio_err;
#    define apps_shutdown() \
#    define apps_shutdown() \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			OBJ_cleanup(); EVP_cleanup(); \
			OBJ_cleanup(); EVP_cleanup(); \
			CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
			CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \
			ERR_free_strings(); } while(0)
			ERR_free_strings(); } while(0)
#  endif
#  endif
#endif
#endif
+2 −5
Original line number Original line Diff line number Diff line
@@ -129,7 +129,6 @@
#ifndef OPENSSL_NO_FP_API
#ifndef OPENSSL_NO_FP_API
#include <stdio.h> /* FILE */
#include <stdio.h> /* FILE */
#endif
#endif
#include <openssl/crypto.h>
#include <openssl/ossl_typ.h>
#include <openssl/ossl_typ.h>


#ifdef  __cplusplus
#ifdef  __cplusplus
@@ -565,12 +564,10 @@ int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *);
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *);
#ifndef OPENSSL_NO_DEPRECATED
unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
#endif
void *BN_BLINDING_get_thread_idptr(const BN_BLINDING *);
void BN_BLINDING_set_thread(BN_BLINDING *);
void BN_BLINDING_set_thread_idptr(BN_BLINDING *, void *);
int BN_BLINDING_cmp_thread(const BN_BLINDING *, const CRYPTO_THREADID *);
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
+6 −11
Original line number Original line Diff line number Diff line
@@ -121,13 +121,10 @@ struct bn_blinding_st
	BIGNUM *Ai;
	BIGNUM *Ai;
	BIGNUM *e;
	BIGNUM *e;
	BIGNUM *mod; /* just a reference */
	BIGNUM *mod; /* just a reference */
/* FIXME: should really try to remove these, but the deprecated APIs that are
 * using them would need to be fudged somehow. */
#ifndef OPENSSL_NO_DEPRECATED
	unsigned long thread_id; /* added in OpenSSL 0.9.6j and 0.9.7b;
	unsigned long thread_id; /* added in OpenSSL 0.9.6j and 0.9.7b;
				  * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
				  * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
#endif
	void *thread_idptr; /* added in OpenSSL 0.9.9;
	CRYPTO_THREADID tid;
			     * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
	unsigned int  counter;
	unsigned int  counter;
	unsigned long flags;
	unsigned long flags;
	BN_MONT_CTX *m_ctx;
	BN_MONT_CTX *m_ctx;
@@ -268,7 +265,6 @@ int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ct
	return(ret);
	return(ret);
	}
	}


#ifndef OPENSSL_NO_DEPRECATED
unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *b)
unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *b)
	{
	{
	return b->thread_id;
	return b->thread_id;
@@ -278,16 +274,15 @@ void BN_BLINDING_set_thread_id(BN_BLINDING *b, unsigned long n)
	{
	{
	b->thread_id = n;
	b->thread_id = n;
	}
	}
#endif


void BN_BLINDING_set_thread(BN_BLINDING *b)
void *BN_BLINDING_get_thread_idptr(const BN_BLINDING *b)
	{
	{
	CRYPTO_THREADID_set(&b->tid);
	return b->thread_idptr;
	}
	}


int BN_BLINDING_cmp_thread(const BN_BLINDING *b, const CRYPTO_THREADID *tid)
void BN_BLINDING_set_thread_idptr(BN_BLINDING *b, void *p)
	{
	{
	return CRYPTO_THREADID_cmp(&b->tid, tid);
	b->thread_idptr = p;
	}
	}


unsigned long BN_BLINDING_get_flags(const BN_BLINDING *b)
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *b)
+1 −1
Original line number Original line Diff line number Diff line
@@ -187,7 +187,7 @@ int main(int argc, char *argv[])
	BN_free(b);
	BN_free(b);
	BN_free(m);
	BN_free(m);
	BN_CTX_free(ctx);
	BN_CTX_free(ctx);
	ERR_remove_thread_state(NULL);
	ERR_remove_state(0);
	CRYPTO_mem_leaks(out);
	CRYPTO_mem_leaks(out);
	BIO_free(out);
	BIO_free(out);
	printf(" done\n");
	printf(" done\n");
Loading