openssl version constants - question and request

2010-12-15 Thread Kenneth Goldman
Question:

OPENSSL_VERSION_TEXT is undocumented.  Can I count on it being there and 
up to date, or is it for internal use only?

Request:

OPENSSL_VERSION_NUMBER varies between a long and an int constant,  Could 
it please be standardized?

Re: openssl version constants - question and request

2010-12-15 Thread Victor Duchovni
On Tue, Dec 14, 2010 at 09:52:58AM -0500, Kenneth Goldman wrote:

 Question:
 
 OPENSSL_VERSION_TEXT is undocumented.  Can I count on it being there and 
 up to date, or is it for internal use only?
 
 Request:
 
 OPENSSL_VERSION_NUMBER varies between a long and an int constant,  Could 
 it please be standardized?

It is standardized, but the standard has changed as OpenSSL evolved, it
is quite stable now. Postfix parses the number explained as follows:

/*
 * OPENSSL_VERSION_NUMBER(3):
 *
 * OPENSSL_VERSION_NUMBER is a numeric release version identifier:
 *
 * MMNNFFPPS: major minor fix patch status
 *
 * The status nibble has one of the values 0 for development, 1 to e for
 * betas 1 to 14, and f for release. Parsed OpenSSL version number. for
 * example
 *
 * 0x000906000 == 0.9.6 dev 0x000906023 == 0.9.6b beta 3 0x00090605f ==
 * 0.9.6e release
 *
 * Versions prior to 0.9.3 have identifiers  0x0930.  Versions between
 * 0.9.3 and 0.9.5 had a version identifier with this interpretation:
 *
 * MMNNFFRBB major minor fix final beta/patch
 *
 * for example
 *
 * 0x000904100 == 0.9.4 release 0x000905000 == 0.9.5 dev
 *
 * Version 0.9.5a had an interim interpretation that is like the current
 * one, except the patch level got the highest bit set, to keep continu-
 * ity.  The number was therefore 0x0090581f.
 */

The parser is:

long version = OPENSSL_VERSION_NUMBER; /* SSLeay() for run-time version */

if (version  0x0930) {
info-status = 0;
info-patch = version  0x0f;
version = 4;
info-micro = version  0x0f;
version = 4;
info-minor = version  0x0f;
version = 4;
info-major = version  0x0f;
} else if (version  0x00905800L) {
info-patch = version  0xff;
version = 8;
info-status = version  0xf;
version = 4;
info-micro = version  0xff;
version = 8;
info-minor = version  0xff;
version = 8;
info-major = version  0xff;
} else {
info-status = version  0xf;
version = 4;
info-patch = version  0xff;
version = 8;
info-micro = version  0xff;
version = 8;
info-minor = version  0xff;
version = 8;
info-major = version  0xff;
if (version  0x00906000L)
info-patch = ~0x80;
}

-- 
Viktor.
__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   majord...@openssl.org