Hello,
first of all, I'd like to say that I agree with the core developers that it's a
good idea to make
all these OpenSSL structs opaque and provide an API for creation/desruction and
member access instead.
I have two comments on the new ECDSA_METHOD_*() and RSA_METHOD_*() APIs in
particular,
and a general question concerning the *_METHOD_*() API in general.
1) The ECDSA_METHOD_*() api is not const correct: the "copy constructor" and
the name setter
are lacking a 'const' in the last argument.
ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_meth)
void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name)
Instead, I should be
ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_meth)
void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, const char *name)
I have prepared a patch fixing the const-correctness, which I'll post to the
request tracker.
It would be nice if the change could be added to the 1.0.2 stable branch.
Although it's a header change
it would not break the ABI and force no recompilation of existing code, as
far as I understand it,
since there is no name decoration in C. This opion was also shared by Rich
Salz recently:
Re: [openssl-dev] Missing API features
On 04/20/2015 10:25 PM, Salz, Rich wrote:>
> Changing the return type here should be binary compatible on any sane
platform, but it might cause source incompatibilities.
I think it would be better to correct the error right away, before people
start working around it
by casting away the const's in their code.
2) A corresponding RSA_METHOD_*() api is still completely missing (even on
master) and the 'struct rsa_meth_st'
members are still publicly visible.
Are there any plans to add it in the near future?
3) Looking at the set of exported functions in util/libeay.num, one sees that
the *_METHOD_*() API is still
rather rudimentary. Are there any plans to change this?
util/libeay.num:
DSO_METHOD_null 2270 EXIST::FUNCTION:
DSO_METHOD_openssl 2271 EXIST::FUNCTION:
DSO_METHOD_dlfcn 2272 EXIST::FUNCTION:
DSO_METHOD_win32 2273 EXIST::FUNCTION:
DSO_METHOD_dl 2275 EXIST::FUNCTION:
DSO_METHOD_vms 2462 EXIST::FUNCTION:
EC_METHOD_get_field_type 3528 EXIST::FUNCTION:EC
DSO_METHOD_beos 4122 NOEXIST::FUNCTION:
X509_CRL_METHOD_free 4241 EXIST::FUNCTION:
X509_CRL_METHOD_new 4371 EXIST::FUNCTION:
ECDSA_METHOD_set_name 4723 EXIST::FUNCTION:EC
ECDSA_METHOD_set_flags 4726 EXIST::FUNCTION:EC
ECDSA_METHOD_set_sign_setup 4727 EXIST::FUNCTION:EC
ECDSA_METHOD_set_sign 4733 EXIST::FUNCTION:EC
ECDSA_METHOD_new 4751 EXIST::FUNCTION:EC
ECDSA_METHOD_set_verify 4755 EXIST::FUNCTION:EC
ECDSA_METHOD_free 4759 EXIST::FUNCTION:EC
ECDSA_METHOD_set_app_data 4768 EXIST::FUNCTION:EC
ECDSA_METHOD_get_app_data 4770 EXIST::FUNCTION:EC
_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev