]> www.wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
GOST engine fixes to make it compiling with opaque EVP_CIPHER/EVP_CIPHER_CTX structs
authorDmitry Belyavskiy <beldmit@gmail.com>
Sat, 23 Jan 2016 09:44:01 +0000 (12:44 +0300)
committerDmitry Belyavskiy <beldmit@gmail.com>
Sat, 23 Jan 2016 09:44:01 +0000 (12:44 +0300)
Makefile
gost_crypt.c
gost_eng.c
gost_lcl.h

index 1b91579b2d307ae7f8cd85ed20d26cf87069769d..95014cbc8fa2dc6e022d1f1b0ea82965aeddeae9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -96,87 +96,91 @@ gost89.o: gost89.c gost89.h
 gost_ameth.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
-gost_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
+gost_ameth.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
+gost_ameth.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
 gost_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
-gost_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 gost_ameth.o: ../../include/openssl/engine.h ../../include/openssl/err.h
 gost_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 gost_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_ameth.o: ../../include/openssl/opensslconf.h
 gost_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-gost_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
+gost_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
+gost_ameth.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 gost_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-gost_ameth.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h
-gost_ameth.o: gost_ameth.c gost_lcl.h gosthash.h
+gost_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+gost_ameth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+gost_ameth.o: ../../include/openssl/x509v3.h e_gost_err.h gost89.h gost_ameth.c
+gost_ameth.o: gost_lcl.h gosthash.h
 gost_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_asn1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_asn1.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_asn1.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+gost_asn1.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_asn1.o: ../../include/openssl/engine.h ../../include/openssl/err.h
 gost_asn1.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 gost_asn1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_asn1.o: ../../include/openssl/opensslconf.h
 gost_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-gost_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
+gost_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
+gost_asn1.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 gost_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-gost_asn1.o: ../../include/openssl/x509_vfy.h gost89.h gost_asn1.c gost_lcl.h
-gost_asn1.o: gosthash.h
+gost_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+gost_asn1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+gost_asn1.o: gost89.h gost_asn1.c gost_lcl.h gosthash.h
 gost_crypt.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_crypt.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_crypt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_crypt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_crypt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_crypt.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
-gost_crypt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-gost_crypt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-gost_crypt.o: ../../include/openssl/objects.h
+gost_crypt.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_crypt.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_crypt.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+gost_crypt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+gost_crypt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_crypt.o: ../../include/openssl/opensslconf.h
 gost_crypt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 gost_crypt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
-gost_crypt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
-gost_crypt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+gost_crypt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
+gost_crypt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
+gost_crypt.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
 gost_crypt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 gost_crypt.o: e_gost_err.h gost89.h gost_crypt.c gost_lcl.h gosthash.h
 gost_ctl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_ctl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_ctl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_ctl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_ctl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_ctl.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
-gost_ctl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-gost_ctl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-gost_ctl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+gost_ctl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_ctl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_ctl.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+gost_ctl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+gost_ctl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+gost_ctl.o: ../../include/openssl/opensslconf.h
 gost_ctl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-gost_ctl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
+gost_ctl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
+gost_ctl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 gost_ctl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_ctl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-gost_ctl.o: ../../include/openssl/x509_vfy.h gost89.h gost_ctl.c gost_lcl.h
-gost_ctl.o: gosthash.h
+gost_ctl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+gost_ctl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+gost_ctl.o: gost89.h gost_ctl.c gost_lcl.h gosthash.h
 gost_ec_keyx.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_ec_keyx.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_ec_keyx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_ec_keyx.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_ec_keyx.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_ec_keyx.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
-gost_ec_keyx.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-gost_ec_keyx.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-gost_ec_keyx.o: ../../include/openssl/objects.h
+gost_ec_keyx.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_ec_keyx.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_ec_keyx.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+gost_ec_keyx.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+gost_ec_keyx.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_ec_keyx.o: ../../include/openssl/opensslconf.h
 gost_ec_keyx.o: ../../include/openssl/opensslv.h
 gost_ec_keyx.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
-gost_ec_keyx.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
-gost_ec_keyx.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_ec_keyx.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
+gost_ec_keyx.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
+gost_ec_keyx.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+gost_ec_keyx.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+gost_ec_keyx.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
 gost_ec_keyx.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h
 gost_ec_keyx.o: gost_ec_keyx.c gost_keywrap.h gost_lcl.h gosthash.h
 gost_ec_sign.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_ec_sign.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_ec_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_ec_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_ec_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
+gost_ec_sign.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_ec_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 gost_ec_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
 gost_ec_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 gost_ec_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
@@ -184,82 +188,90 @@ gost_ec_sign.o: ../../include/openssl/objects.h
 gost_ec_sign.o: ../../include/openssl/opensslconf.h
 gost_ec_sign.o: ../../include/openssl/opensslv.h
 gost_ec_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
-gost_ec_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
-gost_ec_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_ec_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
+gost_ec_sign.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
+gost_ec_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+gost_ec_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+gost_ec_sign.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
 gost_ec_sign.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h
 gost_ec_sign.o: gost_ec_sign.c gost_lcl.h gosthash.h
 gost_eng.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_eng.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_eng.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_eng.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_eng.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_eng.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
-gost_eng.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-gost_eng.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-gost_eng.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+gost_eng.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_eng.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_eng.o: ../../include/openssl/engine.h ../../include/openssl/err.h
+gost_eng.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
+gost_eng.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+gost_eng.o: ../../include/openssl/opensslconf.h
 gost_eng.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-gost_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
+gost_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
+gost_eng.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 gost_eng.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_eng.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-gost_eng.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h gost_eng.c
-gost_eng.o: gost_lcl.h gosthash.h
+gost_eng.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+gost_eng.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+gost_eng.o: e_gost_err.h gost89.h gost_eng.c gost_lcl.h gosthash.h
 gost_keywrap.o: gost89.h gost_keywrap.c gost_keywrap.h
 gost_md.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_md.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_md.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_md.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_md.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_md.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+gost_md.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_md.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_md.o: ../../include/openssl/engine.h ../../include/openssl/err.h
 gost_md.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 gost_md.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_md.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 gost_md.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
+gost_md.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
 gost_md.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 gost_md.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-gost_md.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
-gost_md.o: e_gost_err.h gost89.h gost_lcl.h gost_md.c gosthash.h
+gost_md.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
+gost_md.o: ../../include/openssl/x509_vfy.h e_gost_err.h gost89.h gost_lcl.h
+gost_md.o: gost_md.c gosthash.h
 gost_md2012.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-gost_md2012.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
-gost_md2012.o: ../../include/openssl/evp.h ../../include/openssl/obj_mac.h
-gost_md2012.o: ../../include/openssl/objects.h
+gost_md2012.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
+gost_md2012.o: ../../include/openssl/e_os2.h ../../include/openssl/evp.h
+gost_md2012.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_md2012.o: ../../include/openssl/opensslconf.h
 gost_md2012.o: ../../include/openssl/opensslv.h
 gost_md2012.o: ../../include/openssl/ossl_typ.h
 gost_md2012.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 gost_md2012.o: ../../include/openssl/symhacks.h gost_md2012.c gosthash2012.h
-gost_md2012.o: gosthash2012_const.h gosthash2012_precalc.h gosthash2012_ref.h
+gost_md2012.o: gosthash2012_const.h gosthash2012_precalc.h gosthash2012_sse2.h
 gost_params.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_params.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_params.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-gost_params.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-gost_params.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-gost_params.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
+gost_params.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+gost_params.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
+gost_params.o: ../../include/openssl/engine.h ../../include/openssl/err.h
 gost_params.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 gost_params.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 gost_params.o: ../../include/openssl/opensslconf.h
 gost_params.o: ../../include/openssl/opensslv.h
 gost_params.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
+gost_params.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
 gost_params.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 gost_params.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-gost_params.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
-gost_params.o: gost89.h gost_lcl.h gost_params.c gosthash.h
+gost_params.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
+gost_params.o: ../../include/openssl/x509_vfy.h gost89.h gost_lcl.h
+gost_params.o: gost_params.c gosthash.h
 gost_pmeth.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 gost_pmeth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 gost_pmeth.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
-gost_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
-gost_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
-gost_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
-gost_pmeth.o: ../../include/openssl/engine.h ../../include/openssl/err.h
-gost_pmeth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-gost_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+gost_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
+gost_pmeth.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
+gost_pmeth.o: ../../include/openssl/ec.h ../../include/openssl/engine.h
+gost_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+gost_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+gost_pmeth.o: ../../include/openssl/objects.h
 gost_pmeth.o: ../../include/openssl/opensslconf.h
 gost_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-gost_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
+gost_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
+gost_pmeth.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 gost_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-gost_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-gost_pmeth.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
-gost_pmeth.o: e_gost_err.h gost89.h gost_lcl.h gost_pmeth.c gosthash.h
+gost_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
+gost_pmeth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+gost_pmeth.o: ../../include/openssl/x509v3.h e_gost_err.h gost89.h gost_lcl.h
+gost_pmeth.o: gost_pmeth.c gosthash.h
 gosthash.o: gost89.h gosthash.c gosthash.h
 gosthash2012.o: gosthash2012.c gosthash2012.h gosthash2012_const.h
-gosthash2012.o: gosthash2012_precalc.h gosthash2012_ref.h
+gosthash2012.o: gosthash2012_precalc.h gosthash2012_sse2.h
index a0125eae40ba5bc324c4ee77fc09ef6b8bb716cc..f55a10caa7964ffc61b8c84101309419d08d4632 100644 (file)
@@ -46,73 +46,156 @@ static int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params);
 /* Control function */
 static int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
 
-EVP_CIPHER cipher_gost = {
-    NID_id_Gost28147_89,
-    1,                          /* block_size */
-    32,                         /* key_size */
-    8,                          /* iv_len */
-    EVP_CIPH_CFB_MODE | EVP_CIPH_NO_PADDING |
-        EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT,
-    gost_cipher_init,
-    gost_cipher_do_cfb,
-    gost_cipher_cleanup,
-    sizeof(struct ossl_gost_cipher_ctx), /* ctx_size */
-    gost89_set_asn1_parameters,
-    gost89_get_asn1_parameters,
-    gost_cipher_ctl,
-    NULL,
-};
+static EVP_CIPHER *_hidden_Gost28147_89_cipher = NULL;
+const EVP_CIPHER *cipher_gost(void)
+{
+    if (_hidden_Gost28147_89_cipher == NULL
+        && ((_hidden_Gost28147_89_cipher =
+             EVP_CIPHER_meth_new(NID_id_Gost28147_89,
+                                 1  /* block_size */,
+                                 32 /* key_size */)) == NULL
+            || !EVP_CIPHER_meth_set_iv_length(_hidden_Gost28147_89_cipher, 8)
+            || !EVP_CIPHER_meth_set_flags(_hidden_Gost28147_89_cipher,
+                                          EVP_CIPH_CFB_MODE |
+                                          EVP_CIPH_NO_PADDING |
+                                          EVP_CIPH_CUSTOM_IV |
+                                          EVP_CIPH_RAND_KEY |
+                                          EVP_CIPH_ALWAYS_CALL_INIT)
+            || !EVP_CIPHER_meth_set_init(_hidden_Gost28147_89_cipher,
+                                         gost_cipher_init)
+            || !EVP_CIPHER_meth_set_do_cipher(_hidden_Gost28147_89_cipher,
+                                              gost_cipher_do_cfb)
+            || !EVP_CIPHER_meth_set_cleanup(_hidden_Gost28147_89_cipher,
+                                            gost_cipher_cleanup)
+            || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_Gost28147_89_cipher,
+                                                  sizeof(struct ossl_gost_cipher_ctx))
+            || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_Gost28147_89_cipher,
+                                                    gost89_set_asn1_parameters)
+            || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_Gost28147_89_cipher,
+                                                    gost89_get_asn1_parameters)
+            || !EVP_CIPHER_meth_set_ctrl(_hidden_Gost28147_89_cipher,
+                                         gost_cipher_ctl))) {
+        EVP_CIPHER_meth_free(_hidden_Gost28147_89_cipher);
+        _hidden_Gost28147_89_cipher = NULL;
+    }
+    return _hidden_Gost28147_89_cipher;
+}
+static EVP_CIPHER *_hidden_Gost28147_89_cbc = NULL;
+const EVP_CIPHER *cipher_gost_cbc(void)
+{
+    if (_hidden_Gost28147_89_cbc == NULL
+        && ((_hidden_Gost28147_89_cbc =
+             EVP_CIPHER_meth_new(NID_gost89_cbc,
+                                 8  /* block_size */,
+                                 32 /* key_size */)) == NULL
+            || !EVP_CIPHER_meth_set_iv_length(_hidden_Gost28147_89_cbc, 8)
+            || !EVP_CIPHER_meth_set_flags(_hidden_Gost28147_89_cbc,
+                                       EVP_CIPH_CBC_MODE |
+                                       EVP_CIPH_CUSTOM_IV | 
+                                       EVP_CIPH_RAND_KEY | 
+                                       EVP_CIPH_ALWAYS_CALL_INIT)
+            || !EVP_CIPHER_meth_set_init(_hidden_Gost28147_89_cbc,
+                                         gost_cipher_init_cbc)
+            || !EVP_CIPHER_meth_set_do_cipher(_hidden_Gost28147_89_cbc,
+                                              gost_cipher_do_cbc)
+            || !EVP_CIPHER_meth_set_cleanup(_hidden_Gost28147_89_cbc,
+                                            gost_cipher_cleanup)
+            || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_Gost28147_89_cbc,
+                                                  sizeof(struct ossl_gost_cipher_ctx))
+            || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_Gost28147_89_cbc,
+                                                    gost89_set_asn1_parameters)
+            || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_Gost28147_89_cbc,
+                                                    gost89_get_asn1_parameters)
+            || !EVP_CIPHER_meth_set_ctrl(_hidden_Gost28147_89_cbc,
+                                         gost_cipher_ctl))) {
+        EVP_CIPHER_meth_free(_hidden_Gost28147_89_cbc);
+        _hidden_Gost28147_89_cbc = NULL;
+    }
+    return _hidden_Gost28147_89_cbc;
+}
+static EVP_CIPHER *_hidden_gost89_cnt = NULL;
+const EVP_CIPHER *cipher_gost_cpacnt(void)
+{
+    if (_hidden_gost89_cnt == NULL
+        && ((_hidden_gost89_cnt =
+             EVP_CIPHER_meth_new(NID_gost89_cnt,
+                                 1  /* block_size */,
+                                 32 /* key_size */)) == NULL
+            || !EVP_CIPHER_meth_set_iv_length(_hidden_gost89_cnt, 8)
+            || !EVP_CIPHER_meth_set_flags(_hidden_gost89_cnt,
+                                          EVP_CIPH_OFB_MODE |
+                                          EVP_CIPH_NO_PADDING |
+                                          EVP_CIPH_CUSTOM_IV |
+                                          EVP_CIPH_RAND_KEY |
+                                          EVP_CIPH_ALWAYS_CALL_INIT)
+            || !EVP_CIPHER_meth_set_init(_hidden_gost89_cnt,
+                                         gost_cipher_init_cpa)
+            || !EVP_CIPHER_meth_set_do_cipher(_hidden_gost89_cnt,
+                                              gost_cipher_do_cnt)
+            || !EVP_CIPHER_meth_set_cleanup(_hidden_gost89_cnt,
+                                            gost_cipher_cleanup)
+            || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_gost89_cnt,
+                                                  sizeof(struct ossl_gost_cipher_ctx))
+            || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_gost89_cnt,
+                                                    gost89_set_asn1_parameters)
+            || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_gost89_cnt,
+                                                    gost89_get_asn1_parameters)
+            || !EVP_CIPHER_meth_set_ctrl(_hidden_gost89_cnt,
+                                         gost_cipher_ctl))) {
+        EVP_CIPHER_meth_free(_hidden_gost89_cnt);
+        _hidden_gost89_cnt = NULL;
+    }
+    return _hidden_gost89_cnt;
+}
 
-EVP_CIPHER cipher_gost_cbc = {
-    NID_gost89_cbc,
-    8,                          /*block_size */
-    32,                         /*key_size */
-    8,                          /*iv_len */
-    EVP_CIPH_CBC_MODE |
-        EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT,
-    gost_cipher_init_cbc,
-    gost_cipher_do_cbc,
-    gost_cipher_cleanup,
-    sizeof(struct ossl_gost_cipher_ctx), /* ctx_size */
-    gost89_set_asn1_parameters,
-    gost89_get_asn1_parameters,
-    gost_cipher_ctl,
-    NULL,
-};
+static EVP_CIPHER *_hidden_gost89_cnt_12 = NULL;
+const EVP_CIPHER *cipher_gost_cpcnt_12(void)
+{
+    if (_hidden_gost89_cnt_12 == NULL
+        && ((_hidden_gost89_cnt_12 =
+             EVP_CIPHER_meth_new(NID_gost89_cnt_12,
+                                 1  /* block_size */,
+                                 32 /* key_size */)) == NULL
+            || !EVP_CIPHER_meth_set_iv_length(_hidden_gost89_cnt_12, 8)
+            || !EVP_CIPHER_meth_set_flags(_hidden_gost89_cnt_12,
+                                          EVP_CIPH_OFB_MODE |
+                                          EVP_CIPH_NO_PADDING |
+                                          EVP_CIPH_CUSTOM_IV |
+                                          EVP_CIPH_RAND_KEY |
+                                          EVP_CIPH_ALWAYS_CALL_INIT)
+            || !EVP_CIPHER_meth_set_init(_hidden_gost89_cnt_12,
+                                         gost_cipher_init_cp_12)
+            || !EVP_CIPHER_meth_set_do_cipher(_hidden_gost89_cnt_12,
+                                              gost_cipher_do_cnt)
+            || !EVP_CIPHER_meth_set_cleanup(_hidden_gost89_cnt_12,
+                                            gost_cipher_cleanup)
+            || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_gost89_cnt_12,
+                                                  sizeof(struct ossl_gost_cipher_ctx))
+            || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_gost89_cnt_12,
+                                                    gost89_set_asn1_parameters)
+            || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_gost89_cnt_12,
+                                                    gost89_get_asn1_parameters)
+            || !EVP_CIPHER_meth_set_ctrl(_hidden_gost89_cnt_12,
+                                         gost_cipher_ctl))) {
+        EVP_CIPHER_meth_free(_hidden_gost89_cnt_12);
+        _hidden_gost89_cnt_12 = NULL;
+    }
+    return _hidden_gost89_cnt_12;
+}
 
-EVP_CIPHER cipher_gost_cpacnt = {
-    NID_gost89_cnt,
-    1,                          /* block_size */
-    32,                         /* key_size */
-    8,                          /* iv_len */
-    EVP_CIPH_OFB_MODE | EVP_CIPH_NO_PADDING |
-        EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT,
-    gost_cipher_init_cpa,
-    gost_cipher_do_cnt,
-    gost_cipher_cleanup,
-    sizeof(struct ossl_gost_cipher_ctx), /* ctx_size */
-    gost89_set_asn1_parameters,
-    gost89_get_asn1_parameters,
-    gost_cipher_ctl,
-    NULL,
-};
+void cipher_gost_destroy(void)
+{
+    EVP_CIPHER_meth_free(_hidden_Gost28147_89_cipher);
+    _hidden_Gost28147_89_cipher = NULL;
+    EVP_CIPHER_meth_free(_hidden_gost89_cnt);
+    _hidden_gost89_cnt = NULL;
+    EVP_CIPHER_meth_free(_hidden_Gost28147_89_cbc);
+    _hidden_Gost28147_89_cbc = NULL;
+    EVP_CIPHER_meth_free(_hidden_gost89_cnt_12);
+    _hidden_gost89_cnt_12 = NULL;
+}
 
-EVP_CIPHER cipher_gost_cpcnt_12 = {
-    NID_gost89_cnt_12,
-    1,                          /* block_size */
-    32,                         /* key_size */
-    8,                          /* iv_len */
-    EVP_CIPH_OFB_MODE | EVP_CIPH_NO_PADDING |
-        EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT,
-    gost_cipher_init_cp_12,
-    gost_cipher_do_cnt,
-    gost_cipher_cleanup,
-    sizeof(struct ossl_gost_cipher_ctx), /* ctx_size */
-    gost89_set_asn1_parameters,
-    gost89_get_asn1_parameters,
-    gost_cipher_ctl,
-    NULL,
-};
 
 /* Implementation of GOST 28147-89 in MAC (imitovstavka) mode */
 /* Init functions which set specific parameters */
@@ -281,17 +364,21 @@ static int gost_cipher_init_param(EVP_CIPHER_CTX *ctx,
                                   const unsigned char *iv, int enc,
                                   int paramNID, int mode)
 {
-    struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
-    if (ctx->app_data == NULL) {
+    struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
+    if (EVP_CIPHER_CTX_get_app_data(ctx) == NULL) {
         if (!gost_cipher_set_param(c, paramNID))
             return 0;
-        ctx->app_data = ctx->cipher_data;
+        EVP_CIPHER_CTX_set_app_data(ctx, EVP_CIPHER_CTX_cipher_data(ctx));
     }
     if (key)
         gost_key(&(c->cctx), key);
-    if (iv)
-        memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx));
-    memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx));
+    if (iv) {
+        memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), iv,
+               EVP_CIPHER_CTX_iv_length(ctx));
+    }
+    memcpy(EVP_CIPHER_CTX_iv_noconst(ctx),
+           EVP_CIPHER_CTX_original_iv(ctx),
+           EVP_CIPHER_CTX_iv_length(ctx));
     return 1;
 }
 
@@ -300,15 +387,19 @@ static int gost_cipher_init_cnt(EVP_CIPHER_CTX *ctx,
                                 const unsigned char *iv,
                                 gost_subst_block * block)
 {
-    struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+    struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
     gost_init(&(c->cctx), block);
     c->key_meshing = 1;
     c->count = 0;
     if (key)
         gost_key(&(c->cctx), key);
-    if (iv)
-        memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx));
-    memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx));
+    if (iv) {
+        memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), iv,
+               EVP_CIPHER_CTX_iv_length(ctx));
+    }
+    memcpy(EVP_CIPHER_CTX_iv_noconst(ctx),
+           EVP_CIPHER_CTX_original_iv(ctx),
+           EVP_CIPHER_CTX_iv_length(ctx));
     return 1;
 }
 
@@ -399,14 +490,16 @@ int gost_cipher_do_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out,
     const unsigned char *in_ptr = in;
     unsigned char *out_ptr = out;
     int i;
-    struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
-    if (ctx->encrypt) {
+    struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
+    unsigned char *iv = EVP_CIPHER_CTX_iv_noconst(ctx);
+    if (EVP_CIPHER_CTX_encrypting(ctx)) {
         while (inl > 0) {
+            
             for (i = 0; i < 8; i++) {
-                b[i] = ctx->iv[i] ^ in_ptr[i];
+                b[i] = iv[i] ^ in_ptr[i];
             }
             gostcrypt(&(c->cctx), b, out_ptr);
-            memcpy(ctx->iv, out_ptr, 8);
+            memcpy(iv, out_ptr, 8);
             out_ptr += 8;
             in_ptr += 8;
             inl -= 8;
@@ -415,9 +508,9 @@ int gost_cipher_do_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out,
         while (inl > 0) {
             gostdecrypt(&(c->cctx), in_ptr, b);
             for (i = 0; i < 8; i++) {
-                out_ptr[i] = ctx->iv[i] ^ b[i];
+                out_ptr[i] = iv[i] ^ b[i];
             }
-            memcpy(ctx->iv, in_ptr, 8);
+            memcpy(iv, in_ptr, 8);
             out_ptr += 8;
             in_ptr += 8;
             inl -= 8;
@@ -434,21 +527,23 @@ int gost_cipher_do_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out,
     unsigned char *out_ptr = out;
     size_t i = 0;
     size_t j = 0;
+    unsigned char *buf = EVP_CIPHER_CTX_buf_noconst(ctx);
+    unsigned char *iv  = EVP_CIPHER_CTX_iv_noconst(ctx);
 /* process partial block if any */
-    if (ctx->num) {
-        for (j = ctx->num, i = 0; j < 8 && i < inl;
+    if (EVP_CIPHER_CTX_num(ctx)) {
+        for (j = EVP_CIPHER_CTX_num(ctx), i = 0; j < 8 && i < inl;
              j++, i++, in_ptr++, out_ptr++) {
-            if (!ctx->encrypt)
-                ctx->buf[j + 8] = *in_ptr;
-            *out_ptr = ctx->buf[j] ^ (*in_ptr);
-            if (ctx->encrypt)
-                ctx->buf[j + 8] = *out_ptr;
+            if (!EVP_CIPHER_CTX_encrypting(ctx))
+                buf[j + 8] = *in_ptr;
+            *out_ptr = buf[j] ^ (*in_ptr);
+            if (EVP_CIPHER_CTX_encrypting(ctx))
+                buf[j + 8] = *out_ptr;
         }
         if (j == 8) {
-            memcpy(ctx->iv, ctx->buf + 8, 8);
-            ctx->num = 0;
+            memcpy(iv, buf + 8, 8);
+            EVP_CIPHER_CTX_set_num(ctx, 0);
         } else {
-            ctx->num = j;
+            EVP_CIPHER_CTX_set_num(ctx, j);
             return 1;
         }
     }
@@ -457,36 +552,36 @@ int gost_cipher_do_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out,
         /*
          * block cipher current iv
          */
-        gost_crypt_mesh(ctx->cipher_data, ctx->iv, ctx->buf);
+        gost_crypt_mesh(EVP_CIPHER_CTX_cipher_data(ctx), iv, buf);
         /*
          * xor next block of input text with it and output it
          */
         /*
          * output this block
          */
-        if (!ctx->encrypt)
-            memcpy(ctx->iv, in_ptr, 8);
+        if (!EVP_CIPHER_CTX_encrypting(ctx))
+            memcpy(iv, in_ptr, 8);
         for (j = 0; j < 8; j++) {
-            out_ptr[j] = ctx->buf[j] ^ in_ptr[j];
+            out_ptr[j] = buf[j] ^ in_ptr[j];
         }
         /* Encrypt */
         /* Next iv is next block of cipher text */
-        if (ctx->encrypt)
-            memcpy(ctx->iv, out_ptr, 8);
+        if (EVP_CIPHER_CTX_encrypting(ctx))
+            memcpy(iv, out_ptr, 8);
     }
 /* Process rest of buffer */
     if (i < inl) {
-        gost_crypt_mesh(ctx->cipher_data, ctx->iv, ctx->buf);
-        if (!ctx->encrypt)
-            memcpy(ctx->buf + 8, in_ptr, inl - i);
+        gost_crypt_mesh(EVP_CIPHER_CTX_cipher_data(ctx), iv, buf);
+        if (!EVP_CIPHER_CTX_encrypting(ctx))
+            memcpy(buf + 8, in_ptr, inl - i);
         for (j = 0; i < inl; j++, i++) {
-            out_ptr[j] = ctx->buf[j] ^ in_ptr[j];
+            out_ptr[j] = buf[j] ^ in_ptr[j];
         }
-        ctx->num = j;
-        if (ctx->encrypt)
-            memcpy(ctx->buf + 8, out_ptr, j);
+        EVP_CIPHER_CTX_set_num(ctx, j);
+        if (EVP_CIPHER_CTX_encrypting(ctx))
+            memcpy(buf + 8, out_ptr, j);
     } else {
-        ctx->num = 0;
+        EVP_CIPHER_CTX_set_num(ctx, 0);
     }
     return 1;
 }
@@ -498,16 +593,18 @@ static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out,
     unsigned char *out_ptr = out;
     size_t i = 0;
     size_t j;
+    unsigned char *buf = EVP_CIPHER_CTX_buf_noconst(ctx);
+    unsigned char *iv  = EVP_CIPHER_CTX_iv_noconst(ctx);
 /* process partial block if any */
-    if (ctx->num) {
-        for (j = ctx->num, i = 0; j < 8 && i < inl;
+    if (EVP_CIPHER_CTX_num(ctx)) {
+        for (j = EVP_CIPHER_CTX_num(ctx), i = 0; j < 8 && i < inl;
              j++, i++, in_ptr++, out_ptr++) {
-            *out_ptr = ctx->buf[j] ^ (*in_ptr);
+            *out_ptr = buf[j] ^ (*in_ptr);
         }
         if (j == 8) {
-            ctx->num = 0;
+            EVP_CIPHER_CTX_set_num(ctx, 0);
         } else {
-            ctx->num = j;
+            EVP_CIPHER_CTX_set_num(ctx, j);
             return 1;
         }
     }
@@ -517,7 +614,7 @@ static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out,
          * block cipher current iv
          */
         /* Encrypt */
-        gost_cnt_next(ctx->cipher_data, ctx->iv, ctx->buf);
+        gost_cnt_next(EVP_CIPHER_CTX_cipher_data(ctx), iv, buf);
         /*
          * xor next block of input text with it and output it
          */
@@ -525,18 +622,18 @@ static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out,
          * output this block
          */
         for (j = 0; j < 8; j++) {
-            out_ptr[j] = ctx->buf[j] ^ in_ptr[j];
+            out_ptr[j] = buf[j] ^ in_ptr[j];
         }
     }
 /* Process rest of buffer */
     if (i < inl) {
-        gost_cnt_next(ctx->cipher_data, ctx->iv, ctx->buf);
+        gost_cnt_next(EVP_CIPHER_CTX_cipher_data(ctx), iv, buf);
         for (j = 0; i < inl; j++, i++) {
-            out_ptr[j] = ctx->buf[j] ^ in_ptr[j];
+            out_ptr[j] = buf[j] ^ in_ptr[j];
         }
-        ctx->num = j;
+        EVP_CIPHER_CTX_set_num(ctx, j);
     } else {
-        ctx->num = 0;
+        EVP_CIPHER_CTX_set_num(ctx, 0);
     }
     return 1;
 }
@@ -544,8 +641,8 @@ static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out,
 /* Cleaning up of EVP_CIPHER_CTX */
 int gost_cipher_cleanup(EVP_CIPHER_CTX *ctx)
 {
-    gost_destroy(&((struct ossl_gost_cipher_ctx *)ctx->cipher_data)->cctx);
-    ctx->app_data = NULL;
+    gost_destroy(&((struct ossl_gost_cipher_ctx *)EVP_CIPHER_CTX_cipher_data(ctx))->cctx);
+    EVP_CIPHER_CTX_set_app_data(ctx, NULL);
     return 1;
 }
 
@@ -556,7 +653,7 @@ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
 #if 0
     case EVP_CTRL_INIT:
         {
-            struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+            struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
             if (c == NULL) {
                 return -1;
             }
@@ -565,7 +662,7 @@ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
 #endif
     case EVP_CTRL_RAND_KEY:
         {
-            if (RAND_bytes((unsigned char *)ptr, ctx->key_len) <= 0) {
+            if (RAND_bytes((unsigned char *)ptr, EVP_CIPHER_CTX_key_length(ctx)) <= 0) {
                 GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_RNG_ERROR);
                 return -1;
             }
@@ -592,7 +689,7 @@ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
 
     case EVP_CTRL_SET_SBOX:
         if (ptr) {
-            struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+            struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
             int nid;
             int cur_meshing;
             int ret;
@@ -619,7 +716,7 @@ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
         }
     case EVP_CTRL_KEY_MESH:
         {
-            struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+            struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
 
             if (c == NULL) {
                 return -1;
@@ -646,14 +743,14 @@ int gost89_set_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params)
     int len = 0;
     unsigned char *buf = NULL;
     unsigned char *p = NULL;
-    struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+    struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
     GOST_CIPHER_PARAMS *gcp = GOST_CIPHER_PARAMS_new();
     ASN1_OCTET_STRING *os = NULL;
     if (!gcp) {
         GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE);
         return 0;
     }
-    if (!ASN1_OCTET_STRING_set(gcp->iv, ctx->iv, ctx->cipher->iv_len)) {
+    if (!ASN1_OCTET_STRING_set(gcp->iv, EVP_CIPHER_CTX_iv(ctx), EVP_CIPHER_CTX_iv_length(ctx))) {
         GOST_CIPHER_PARAMS_free(gcp);
         GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE);
         return 0;
@@ -691,7 +788,7 @@ int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params)
     int len;
     GOST_CIPHER_PARAMS *gcp = NULL;
     unsigned char *p;
-    struct ossl_gost_cipher_ctx *c = ctx->cipher_data;
+    struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_cipher_data(ctx);
     int nid;
 
     if (ASN1_TYPE_get(params) != V_ASN1_SEQUENCE) {
@@ -704,7 +801,7 @@ int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params)
                                  params->value.sequence->length);
 
     len = gcp->iv->length;
-    if (len != ctx->cipher->iv_len) {
+    if (len != EVP_CIPHER_CTX_iv_length(ctx)) {
         GOST_CIPHER_PARAMS_free(gcp);
         GOSTerr(GOST_F_GOST89_GET_ASN1_PARAMETERS, GOST_R_INVALID_IV_LENGTH);
         return -1;
@@ -722,7 +819,9 @@ int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params)
         GOST_CIPHER_PARAMS_free(gcp);
         return -1;
     }
-    memcpy(ctx->oiv, gcp->iv->data, len);
+    /*XXX missing non-const accessor*/
+    memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), gcp->iv->data,
+        EVP_CIPHER_CTX_iv_length(ctx));
 
     GOST_CIPHER_PARAMS_free(gcp);
 
index bb314d3bc0e33264df1d8a33cbeccf09ae07208b..e9751e029a61b016aa314176939efeb652142d74 100644 (file)
@@ -100,9 +100,12 @@ static int gost_engine_destroy(ENGINE *e)
     digest_gost_destroy();
     digest_gost2012_256_destroy();
     digest_gost2012_512_destroy();
+
     imit_gost_cpa_destroy();
     imit_gost_cp_12_destroy();
 
+    cipher_gost_destroy();
+
     gost_param_free();
 
     pmeth_GostR3410_2001 = NULL;
@@ -206,10 +209,10 @@ static int bind_gost(ENGINE *e, const char *id)
         || !ENGINE_register_digests(e)
         || !ENGINE_register_pkey_meths(e)
         /* These two actually should go in LIST_ADD command */
-        || !EVP_add_cipher(&cipher_gost)
-        || !EVP_add_cipher(&cipher_gost_cbc)
-        || !EVP_add_cipher(&cipher_gost_cpacnt)
-        || !EVP_add_cipher(&cipher_gost_cpcnt_12)
+        || !EVP_add_cipher(cipher_gost())
+        || !EVP_add_cipher(cipher_gost_cbc())
+        || !EVP_add_cipher(cipher_gost_cpacnt())
+        || !EVP_add_cipher(cipher_gost_cpcnt_12())
         || !EVP_add_digest(digest_gost())
         || !EVP_add_digest(digest_gost2012_512())
         || !EVP_add_digest(digest_gost2012_256())
@@ -263,13 +266,13 @@ static int gost_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
     }
 
     if (nid == NID_id_Gost28147_89) {
-        *cipher = &cipher_gost;
+        *cipher = cipher_gost();
     } else if (nid == NID_gost89_cnt) {
-        *cipher = &cipher_gost_cpacnt;
+        *cipher = cipher_gost_cpacnt();
     } else if (nid == NID_gost89_cnt_12) {
-        *cipher = &cipher_gost_cpcnt_12;
+        *cipher = cipher_gost_cpcnt_12();
     } else if (nid == NID_gost89_cbc) {
-        *cipher = &cipher_gost_cbc;
+        *cipher = cipher_gost_cbc();
     } else {
         ok = 0;
         *cipher = NULL;
index 68f40b683cb50814af14faf901df8d7768f2722e..a82362f47e55f3cf8c382e12ee1c12ebd5e676a5 100644 (file)
@@ -205,10 +205,11 @@ extern struct gost_cipher_info gost_cipher_list[];
 /* Find encryption params from ASN1_OBJECT */
 const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj);
 /* Implementation of GOST 28147-89 cipher in CFB and CNT modes */
-extern EVP_CIPHER cipher_gost;
-extern EVP_CIPHER cipher_gost_cbc;
-extern EVP_CIPHER cipher_gost_cpacnt;
-extern EVP_CIPHER cipher_gost_cpcnt_12;
+const EVP_CIPHER* cipher_gost();
+const EVP_CIPHER* cipher_gost_cbc();
+const EVP_CIPHER* cipher_gost_cpacnt();
+const EVP_CIPHER* cipher_gost_cpcnt_12();
+void cipher_gost_destroy();
 # define EVP_MD_CTRL_KEY_LEN (EVP_MD_CTRL_ALG_CTRL+3)
 # define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+4)
 # define EVP_MD_CTRL_MAC_LEN (EVP_MD_CTRL_ALG_CTRL+5)