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 Diff line number Diff line
@@ -20,63 +20,6 @@
     STACK, TXT_DB, bsearch, qsort.
     [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
     on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
     support for data, signedData, compressedData, digestedData and
@@ -383,14 +326,6 @@
     callback is &errno.
     [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
     of degrees of non-zero coefficients is now terminated with -1.
     Previously it was terminated with 0, which was also part of the
+2 −2
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ extern BIO *bio_err;
#    define apps_shutdown() \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			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)
#  else
#    define apps_startup() \
@@ -191,7 +191,7 @@ extern BIO *bio_err;
#    define apps_shutdown() \
			do { CONF_modules_unload(1); destroy_ui_method(); \
			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)
#  endif
#endif
+2 −5
Original line number Diff line number Diff line
@@ -129,7 +129,6 @@
#ifndef OPENSSL_NO_FP_API
#include <stdio.h> /* FILE */
#endif
#include <openssl/crypto.h>
#include <openssl/ossl_typ.h>

#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_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 *);
#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 *);
void *BN_BLINDING_get_thread_idptr(const BN_BLINDING *);
void BN_BLINDING_set_thread_idptr(BN_BLINDING *, void *);
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
+6 −11
Original line number Diff line number Diff line
@@ -121,13 +121,10 @@ struct bn_blinding_st
	BIGNUM *Ai;
	BIGNUM *e;
	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;
				  * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
#endif
	CRYPTO_THREADID tid;
	void *thread_idptr; /* added in OpenSSL 0.9.9;
			     * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
	unsigned int  counter;
	unsigned long flags;
	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);
	}

#ifndef OPENSSL_NO_DEPRECATED
unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *b)
	{
	return b->thread_id;
@@ -278,16 +274,15 @@ void BN_BLINDING_set_thread_id(BN_BLINDING *b, unsigned long 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)
+1 −1
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ int main(int argc, char *argv[])
	BN_free(b);
	BN_free(m);
	BN_CTX_free(ctx);
	ERR_remove_thread_state(NULL);
	ERR_remove_state(0);
	CRYPTO_mem_leaks(out);
	BIO_free(out);
	printf(" done\n");
Loading