当前位置: 首页 > news >正文

如何做网站推广网站平台做推广

如何做网站推广,网站平台做推广,河南网站备案地址,国家企业信用信息公示系统网官网文章目录 openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板概述笔记工程中需要的openssl的库实现补充 - 最终的模板工程END openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板 概述 openssl3.2 - 测试程序的学习 整了几个test.c, 每开一个新的测试工…

文章目录

    • openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板
    • 概述
    • 笔记
    • 工程中需要的openssl的库实现
    • 补充 - 最终的模板工程
    • END

openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板

概述

openssl3.2 - 测试程序的学习
整了几个test.c, 每开一个新的测试工程, 总要改这改那的. 挺麻烦的.
想建立一个专门用于学习openssl测试工程的VS2019模板工程. 等做新实验时, 将openssl的测试程序加入工程, 做少量改动, 就能做实验.
如果每次做一个实验, 都要向工程中加入大量支持文件, 受不了.

观察了一下makefile中的测试工程的生成, 普遍都是一个测试程序的.c + 一个测试库 + openssl的公共库.


// 测试.exe的实现组成
test\afalgtest.exe: test\afalgtest-bin-afalgtest.obj test\libtestutil.lib libcrypto.libIF EXIST test\afalgtest.exe.manifest DEL /F /Q test\afalgtest.exe.manifest$(LD) $(LDFLAGS) $(BIN_LDFLAGS) @<<
test\afalgtest-bin-afalgtest.obj// 测试.c的实现组成
test\afalgtest-bin-afalgtest.obj: test\afalgtest.c$(CC)  $(BIN_CFLAGS) -I"include" -I"apps\include" $(BIN_CPPFLAGS)  -c $(COUTFLAG)$@ "test\afalgtest.c"cmd /C "$(CC) /Zs /showIncludes  $(BIN_CFLAGS) -I"include" -I"apps\include" $(BIN_CPPFLAGS)  "test\afalgtest.c" > test\afalgtest-bin-afalgtest.d 2>&1"// libtestutil.lib的实现组成
test\libtestutil.lib: apps\lib\libtestutil-lib-opt.obj apps\lib\libtestutil-lib-win32_init.obj test\testutil\libtestutil-lib-apps_shims.obj test\testutil\libtestutil-lib-basic_output.obj test\testutil\libtestutil-lib-cb.obj test\testutil\libtestutil-lib-driver.obj test\testutil\libtestutil-lib-fake_random.obj test\testutil\libtestutil-lib-format_output.obj test\testutil\libtestutil-lib-load.obj test\testutil\libtestutil-lib-main.obj test\testutil\libtestutil-lib-options.obj test\testutil\libtestutil-lib-output.obj test\testutil\libtestutil-lib-provider.obj test\testutil\libtestutil-lib-random.obj test\testutil\libtestutil-lib-stanza.obj test\testutil\libtestutil-lib-test_cleanup.obj test\testutil\libtestutil-lib-test_options.obj test\testutil\libtestutil-lib-tests.obj test\testutil\libtestutil-lib-testutil_init.obj$(AR) $(ARFLAGS) $(AROUTFLAG)test\libtestutil.lib @<<
apps\lib\libtestutil-lib-opt.obj
apps\lib\libtestutil-lib-win32_init.obj
test\testutil\libtestutil-lib-apps_shims.obj
test\testutil\libtestutil-lib-basic_output.obj
test\testutil\libtestutil-lib-cb.obj
test\testutil\libtestutil-lib-driver.obj
test\testutil\libtestutil-lib-fake_random.obj
test\testutil\libtestutil-lib-format_output.obj
test\testutil\libtestutil-lib-load.obj
test\testutil\libtestutil-lib-main.obj
test\testutil\libtestutil-lib-options.obj
test\testutil\libtestutil-lib-output.obj
test\testutil\libtestutil-lib-provider.obj
test\testutil\libtestutil-lib-random.obj
test\testutil\libtestutil-lib-stanza.obj
test\testutil\libtestutil-lib-test_cleanup.obj
test\testutil\libtestutil-lib-test_options.obj
test\testutil\libtestutil-lib-tests.obj
test\testutil\libtestutil-lib-testutil_init.obj
<<
apps\lib\libtestutil-lib-opt.obj: apps\lib\opt.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "apps\lib\opt.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "apps\lib\opt.c" > apps\lib\libtestutil-lib-opt.d 2>&1"
apps\lib\libtestutil-lib-win32_init.obj: apps\lib\win32_init.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "apps\lib\win32_init.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "apps\lib\win32_init.c" > apps\lib\libtestutil-lib-win32_init.d 2>&1"
test\testutil\libtestutil-lib-apps_shims.obj: test\testutil\apps_shims.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\apps_shims.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\apps_shims.c" > test\testutil\libtestutil-lib-apps_shims.d 2>&1"
test\testutil\libtestutil-lib-basic_output.obj: test\testutil\basic_output.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\basic_output.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\basic_output.c" > test\testutil\libtestutil-lib-basic_output.d 2>&1"
test\testutil\libtestutil-lib-cb.obj: test\testutil\cb.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\cb.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\cb.c" > test\testutil\libtestutil-lib-cb.d 2>&1"
test\testutil\libtestutil-lib-driver.obj: test\testutil\driver.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\driver.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\driver.c" > test\testutil\libtestutil-lib-driver.d 2>&1"
test\testutil\libtestutil-lib-fake_random.obj: test\testutil\fake_random.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\fake_random.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\fake_random.c" > test\testutil\libtestutil-lib-fake_random.d 2>&1"
test\testutil\libtestutil-lib-format_output.obj: test\testutil\format_output.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\format_output.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\format_output.c" > test\testutil\libtestutil-lib-format_output.d 2>&1"
test\testutil\libtestutil-lib-load.obj: test\testutil\load.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\load.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\load.c" > test\testutil\libtestutil-lib-load.d 2>&1"
test\testutil\libtestutil-lib-main.obj: test\testutil\main.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\main.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\main.c" > test\testutil\libtestutil-lib-main.d 2>&1"
test\testutil\libtestutil-lib-options.obj: test\testutil\options.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\options.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\options.c" > test\testutil\libtestutil-lib-options.d 2>&1"
test\testutil\libtestutil-lib-output.obj: test\testutil\output.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\output.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\output.c" > test\testutil\libtestutil-lib-output.d 2>&1"
test\testutil\libtestutil-lib-provider.obj: test\testutil\provider.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\provider.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\provider.c" > test\testutil\libtestutil-lib-provider.d 2>&1"
test\testutil\libtestutil-lib-random.obj: test\testutil\random.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\random.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\random.c" > test\testutil\libtestutil-lib-random.d 2>&1"
test\testutil\libtestutil-lib-stanza.obj: test\testutil\stanza.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\stanza.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\stanza.c" > test\testutil\libtestutil-lib-stanza.d 2>&1"
test\testutil\libtestutil-lib-test_cleanup.obj: test\testutil\test_cleanup.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\test_cleanup.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\test_cleanup.c" > test\testutil\libtestutil-lib-test_cleanup.d 2>&1"
test\testutil\libtestutil-lib-test_options.obj: test\testutil\test_options.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\test_options.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\test_options.c" > test\testutil\libtestutil-lib-test_options.d 2>&1"
test\testutil\libtestutil-lib-tests.obj: test\testutil\tests.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\tests.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\tests.c" > test\testutil\libtestutil-lib-tests.d 2>&1"
test\testutil\libtestutil-lib-testutil_init.obj: test\testutil\testutil_init.c$(CC)  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  -c $(COUTFLAG)$@ "test\testutil\testutil_init.c"cmd /C "$(CC) /Zs /showIncludes  $(LIB_CFLAGS) -I"include" -I"apps\include" -I"." $(LIB_CPPFLAGS)  "test\testutil\testutil_init.c" > test\testutil\libtestutil-lib-testutil_init.d 2>&1"
engines\capi.dll: engines\capi-dso-e_capi.obj engines\capi.def libcrypto.libIF EXIST engines\capi.dll.manifest DEL /F /Q engines\capi.dll.manifestcmd /C "$(LD) $(LDFLAGS) $(DSO_LDFLAGS) @<< || (DEL /Q $(@B).* engines\capi.* & EXIT 1)"

那应该建立一个以 libtestutil.lib 实现为主的工程, 补充一些空实现(在自己添加的2个公共实现里面, 用宏来控制空实现的有无), 让这个.exe工程能自编译过.
那么这就是专门做openssl测试程序实验的工程.

等做openssl测试程序新实验时, 如果测试.c有程序里面需要的要求的几个必须实现, 用宏关掉模板公共实现中的空实现即可.
试了一下好使, 做新实验时方便多了.

笔记

工程中需要的openssl的库实现

将编译过的openssl源码目录中的apps, test/testutil 目录直接拷贝到模板工程下, 将垃圾都删掉(只保留.c, .h)
工程设置合适的头文件路径和库路径
按照makefile中, test\libtestutil.lib 的实现要求, 加入对应的.c
加入自己做的2个公共文件, 里面有头文件包含和库包含, 还有宏控制的openssl测试专用的几个空实现.
在这里插入图片描述

/*!
\file my_openSSL_lib.h
*/#ifndef __MY_OPENSSL_LIB_H__
#define __MY_OPENSSL_LIB_H__#ifdef  _WIN32
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") // for select()#include <windows.h>
#endif /* #ifdef  _WIN32 */#pragma comment(lib, "libcrypto.lib")
#pragma comment(lib, "libssl.lib")#ifdef  _WIN32
#define MY_SLEEP(x) Sleep(x)
#else
#define MY_SLEEP(x) sleep(x)
#endif /* #ifdef  _WIN32 */#define USE_MY_SETUP_TEST// #define USE_MY_OPTION_choice#ifdef USE_MY_OPTION_choice#include "testutil.h"// 需要将其他实现中的enum定义拷贝过来
typedef enum OPTION_choice {OPT_ERR = -1,OPT_EOF = 0,OPT_CONFIG_FILE,OPT_TEST_ENUM
} OPTION_CHOICE;#endif // #ifdef USE_MY_OPTION_choice#endif /* #ifndef __MY_OPENSSL_LIB_H__ */
/*!
* \file D:\my_dev\my_local_git_prj\study\openSSL\nmake_test\test_c\prj_005_afalgtest.c\my_openSSL_lib.c
*/#include "my_openSSL_lib.h"#define MY_USE_APPLINK
#ifdef MY_USE_APPLINK
#include <openssl/applink.c> /*! for OPENSSL_Uplink(00007FF8B7EF0FE8,08): no OPENSSL_Applink */
#endif // #ifdef MY_USE_APPLINK#ifdef USE_MY_OPTION_choiceconst OPTIONS* test_get_options(void)
{// 这个函数返回不能为空, 从其他有实现的函数中拷贝一个实现过来, 否则有崩溃报错static const OPTIONS test_options[] = {OPT_TEST_OPTIONS_DEFAULT_USAGE,{ "config", OPT_CONFIG_FILE, '<',"The configuration file to use for the libctx" },{ NULL }};return test_options;
}#endif // #ifdef USE_MY_OPTION_choice#ifdef USE_MY_SETUP_TEST
int setup_tests(void)
{return 0;
}# endif // 

编译通过

1>  正在创建库 D:\my_dev\my_local_git_prj\study\openSSL\nmake_test\test_c\prj_openssl_test_template\x64\Debug\prj_template.lib 和对象 D:\my_dev\my_local_git_prj\study\openSSL\nmake_test\test_c\prj_openssl_test_template\x64\Debug\prj_template.exp
1>prj_template.vcxproj -> D:\my_dev\my_local_git_prj\study\openSSL\nmake_test\test_c\prj_openssl_test_template\x64\Debug\prj_template.exe
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0==========

就将这个工程作为openssl测试(test/*.c)专用的工程模板

补充 - 最终的模板工程

用工程模板, 过了100+的官方测试工程,都好使.
记录一下最终版本.
工程中有些实现要删除掉, 因为和测试工程中的函数定义重复. 最终模板工程的文件列表如下

文件夹 PATH 列表
卷序列号为 36AD-51CE
D:.
|   my_openSSL_lib.c
|   my_openSSL_lib.h
|   prj_template.sln
|   prj_template.vcxproj
|   prj_template.vcxproj.filters
|   prj_template.vcxproj.user
|   testutil.h
|   tree_all_file.txt
|   
+---apps
|   |   asn1parse.c
|   |   ca.c
|   |   ciphers.c
|   |   cmp.c
|   |   cms.c
|   |   crl.c
|   |   crl2pkcs7.c
|   |   dgst.c
|   |   dhparam.c
|   |   dsa.c
|   |   dsaparam.c
|   |   ec.c
|   |   ecparam.c
|   |   enc.c
|   |   engine.c
|   |   errstr.c
|   |   fipsinstall.c
|   |   gendsa.c
|   |   genpkey.c
|   |   genrsa.c
|   |   info.c
|   |   kdf.c
|   |   list.c
|   |   mac.c
|   |   nseq.c
|   |   ocsp.c
|   |   openssl.c
|   |   passwd.c
|   |   pkcs12.c
|   |   pkcs7.c
|   |   pkcs8.c
|   |   pkey.c
|   |   pkeyparam.c
|   |   pkeyutl.c
|   |   prime.c
|   |   progs.c
|   |   progs.h
|   |   rand.c
|   |   rehash.c
|   |   req.c
|   |   rsa.c
|   |   rsautl.c
|   |   sess_id.c
|   |   smime.c
|   |   speed.c
|   |   spkac.c
|   |   srp.c
|   |   storeutl.c
|   |   s_client.c
|   |   s_server.c
|   |   s_time.c
|   |   testdsa.h
|   |   testrsa.h
|   |   timeouts.h
|   |   ts.c
|   |   verify.c
|   |   version.c
|   |   vms_decc_init.c
|   |   x509.c
|   |   
|   +---include
|   |       apps.h
|   |       apps_ui.h
|   |       app_libctx.h
|   |       app_params.h
|   |       cmp_mock_srv.h
|   |       ec_common.h
|   |       engine_loader.h
|   |       fmt.h
|   |       function.h
|   |       http_server.h
|   |       log.h
|   |       names.h
|   |       opt.h
|   |       platform.h
|   |       s_apps.h
|   |       vms_term_sock.h
|   |       __DECC_INCLUDE_EPILOGUE.H
|   |       __DECC_INCLUDE_PROLOGUE.H
|   |       
|   \---lib
|           apps.c
|           apps_opt_printf.c
|           apps_ui.c
|           app_libctx.c
|           app_params.c
|           app_provider.c
|           app_rand.c
|           app_x509.c
|           build.info
|           cmp_mock_srv.c
|           columns.c
|           engine.c
|           engine_loader.c
|           fmt.c
|           http_server.c
|           log.c
|           names.c
|           opt.c
|           s_cb.c
|           s_socket.c
|           tlssrp_depr.c
|           vms_decc_argv.c
|           vms_term_sock.c
|           win32_init.c
|           
+---include
|   |   bn_prime.h
|   |   bn_rand_range.h
|   |   evp_local.h
|   |   
|   +---crypto
|   |       aes_platform.h
|   |       aria.h
|   |       asn1.h
|   |       asn1err.h
|   |       asn1_dsa.h
|   |       async.h
|   |       asyncerr.h
|   |       bioerr.h
|   |       bn.h
|   |       bnerr.h
|   |       bn_conf.h
|   |       bn_dh.h
|   |       bn_srp.h
|   |       buffererr.h
|   |       chacha.h
|   |       cmll_platform.h
|   |       cmperr.h
|   |       cmserr.h
|   |       comperr.h
|   |       conferr.h
|   |       context.h
|   |       crmferr.h
|   |       cryptlib.h
|   |       cryptoerr.h
|   |       cterr.h
|   |       ctype.h
|   |       decoder.h
|   |       decodererr.h
|   |       des_platform.h
|   |       dh.h
|   |       dherr.h
|   |       dsa.h
|   |       dsaerr.h
|   |       dso_conf.h
|   |       ec.h
|   |       ecerr.h
|   |       ecx.h
|   |       encoder.h
|   |       encodererr.h
|   |       engine.h
|   |       engineerr.h
|   |       err.h
|   |       ess.h
|   |       esserr.h
|   |       evp.h
|   |       evperr.h
|   |       httperr.h
|   |       lhash.h
|   |       md32_common.h
|   |       modes.h
|   |       objects.h
|   |       objectserr.h
|   |       ocsperr.h
|   |       pem.h
|   |       pemerr.h
|   |       pkcs12err.h
|   |       pkcs7.h
|   |       pkcs7err.h
|   |       poly1305.h
|   |       ppc_arch.h
|   |       punycode.h
|   |       rand.h
|   |       randerr.h
|   |       rand_pool.h
|   |       riscv_arch.h
|   |       rsa.h
|   |       rsaerr.h
|   |       security_bits.h
|   |       sha.h
|   |       siphash.h
|   |       siv.h
|   |       sm2.h
|   |       sm2err.h
|   |       sm4.h
|   |       sm4_platform.h
|   |       sparc_arch.h
|   |       sparse_array.h
|   |       store.h
|   |       storeerr.h
|   |       tserr.h
|   |       types.h
|   |       uierr.h
|   |       x509.h
|   |       x509err.h
|   |       x509v3err.h
|   |       __DECC_INCLUDE_EPILOGUE.H
|   |       __DECC_INCLUDE_PROLOGUE.H
|   |       
|   \---internal
|           asn1.h
|           bio.h
|           bio_addr.h
|           bio_tfo.h
|           common.h
|           comp.h
|           conf.h
|           constant_time.h
|           core.h
|           cryptlib.h
|           dane.h
|           deprecated.h
|           der.h
|           deterministic_nonce.h
|           dso.h
|           dsoerr.h
|           endian.h
|           err.h
|           event_queue.h
|           e_os.h
|           ffc.h
|           hpke_util.h
|           ktls.h
|           list.h
|           namemap.h
|           nelem.h
|           numbers.h
|           o_dir.h
|           packet.h
|           packet_quic.h
|           params.h
|           param_build_set.h
|           param_names.h
|           passphrase.h
|           priority_queue.h
|           property.h
|           propertyerr.h
|           provider.h
|           quic_ackm.h
|           quic_cc.h
|           quic_cfq.h
|           quic_channel.h
|           quic_demux.h
|           quic_error.h
|           quic_fc.h
|           quic_fifd.h
|           quic_reactor.h
|           quic_record_rx.h
|           quic_record_tx.h
|           quic_record_util.h
|           quic_rx_depack.h
|           quic_sf_list.h
|           quic_ssl.h
|           quic_statm.h
|           quic_stream.h
|           quic_stream_map.h
|           quic_thread_assist.h
|           quic_tls.h
|           quic_tserver.h
|           quic_txp.h
|           quic_txpim.h
|           quic_types.h
|           quic_vlint.h
|           quic_wire.h
|           quic_wire_pkt.h
|           recordmethod.h
|           refcount.h
|           ring_buf.h
|           safe_math.h
|           sha3.h
|           sizes.h
|           sm3.h
|           sockets.h
|           ssl.h
|           ssl3_cbc.h
|           sslconf.h
|           statem.h
|           symhacks.h
|           thread.h
|           thread_arch.h
|           thread_once.h
|           time.h
|           tlsgroups.h
|           tsan_assist.h
|           uint_set.h
|           unicode.h
|           __DECC_INCLUDE_EPILOGUE.H
|           __DECC_INCLUDE_PROLOGUE.H
|           
\---testutilapps_shims.cbasic_output.ccb.cdriver.cfake_random.cformat_output.cload.cmain.coptions.coutput.coutput.hprovider.crandom.cstanza.ctests.ctu_local.h

VS2019工程中看到的工程文件(不包含头文件, 都是根据头文件路径设置自动引用)
在这里插入图片描述
在openssl安装好的目录, 不需要添加任何openssl源码目录的文件, 保持原样.
自己在工程中添加的2个文件(my_openSSL_lib.*), 这块是是否能方便添加任何官方测试实现, 并能快速编译通过的点.

/*!
\file my_openSSL_lib.h
*/#ifndef __MY_OPENSSL_LIB_H__
#define __MY_OPENSSL_LIB_H__#ifdef  _WIN32
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") // for select()#include <windows.h>
#endif /* #ifdef  _WIN32 */#pragma comment(lib, "libcrypto.lib")
#pragma comment(lib, "libssl.lib")// --------------------------------------------------------------------------------
// 开关宏 - begin
// 5个开关宏默认是打开的, 在没有加入openssl官方的测试实现(.c)时, 本工程模板也能正常编译过, 只是不干活
// 加入openssl官方的测试实现(.c)后, 如果工程提供了开关宏同名的函数实现, 只需要将对应开关宏关掉, 就可以将官方测试实现编译过.
// --------------------------------------------------------------------------------// 提供默认的 global_init()
#define MY_GLOBAL_INIT // 提供默认的 test_get_options()
#define USE_MY_OPTION_choice// 提供默认的setup_tests()
#define USE_MY_SETUP_TEST// 提供默认的 cleanup_tests()
#define USE_MY_CLEANUP_TEST// 提供默认的 opt_printf_stderr()
#define USE_MY_OPT_PRINT_ERR// --------------------------------------------------------------------------------
// 开关宏 - END
// --------------------------------------------------------------------------------#ifdef  _WIN32
#define MY_SLEEP(x) Sleep(x)
#else
#define MY_SLEEP(x) sleep(x)
#endif /* #ifdef  _WIN32 */#ifdef USE_MY_OPTION_choice#include "testutil.h"// 需要将其他实现中的enum定义拷贝过来
typedef enum OPTION_choice {OPT_CONFIG_FILE = 1,
} OPTION_CHOICE;#endif // #ifdef USE_MY_OPTION_choice#endif /* #ifndef __MY_OPENSSL_LIB_H__ */
/*!
* \file D:\my_dev\my_local_git_prj\study\openSSL\nmake_test\test_c\prj_005_afalgtest.c\my_openSSL_lib.c
*/#include "my_openSSL_lib.h"
#include "opt.h"
#include "testutil.h"
#include "tu_local.h" // for OPT_TEST_OPTIONS_DEFAULT_USAGE
#include "output.h" // for test_vprintf_stderr()#define MY_USE_APPLINK
#ifdef MY_USE_APPLINK
#include <openssl/applink.c> /*! for OPENSSL_Uplink(00007FF8B7EF0FE8,08): no OPENSSL_Applink */
#endif // #ifdef MY_USE_APPLINK#ifdef USE_MY_OPTION_choice
const OPTIONS* test_get_options(void)
{// 这个函数返回不能为空, 从其他有实现的函数中拷贝一个实现过来, 否则有崩溃报错static const OPTIONS test_options[] = {OPT_TEST_OPTIONS_DEFAULT_USAGE,{ "config", OPT_CONFIG_FILE, '<',"The configuration file to use for the libctx" },{ NULL }};return test_options;
}#endif // #ifdef USE_MY_OPTION_choice#ifdef USE_MY_SETUP_TEST
int setup_tests(void)
{return 0;
}# endif // #ifdef USE_MY_CLEANUP_TEST
void cleanup_tests(void)
{
}
#endif // #ifdef USE_MY_CLEANUP_TEST#ifdef USE_MY_OPT_PRINT_ERR
int opt_printf_stderr(const char* fmt, ...)
{va_list ap;int ret;va_start(ap, fmt);ret = test_vprintf_stderr(fmt, ap);va_end(ap);return ret;
}#endif // #ifdef USE_MY_OPT_PRINT_ERR#ifdef MY_GLOBAL_INITint global_init(void)
{
#ifndef OPENSSL_NO_TRACEsetup_trace(getenv("OPENSSL_TRACE"));
#endifreturn 1;
}#endif // #ifdef MY_GLOBAL_INIT

这个工程模板只适合官方测试工程中, 用于测试对外提供的那些API.
如果是官方内部测试的实现, 是编译不过的.
不过, openssl的用户, 基本也就关心外部API怎么用. 从openssl用户的立场出发, 这个工程模板就挺好的.

END

http://www.yidumall.com/news/34536.html

相关文章:

  • o2o网站建设短视频营销成功的案例
  • 互助盘网站怎么做的百度一下手机版
  • 百度 网站 质量度南宁企业官网seo
  • 做网站优化有什么途径百度手机应用市场
  • 体育类网站 设计天津关键词排名推广
  • 做游戏模板下载网站有哪些内容成都关键词自然排名
  • 网站开发使用软件网络优化的工作内容
  • 南昌 网站建设黄石seo
  • 公众号的微网站怎么做的海外网站建站
  • 好的免费网站建站平台打字赚钱平台 学生一单一结
  • 网站备案阿里云流程网址链接生成器
  • c2c网站建设国内好用的搜索引擎
  • 如何建立游戏网站网站排名优化系统
  • 网站怎么做全屏滚动网页设计与制作学什么
  • 重庆网站搭建公司如何做网络推广人员
  • 网站付费推广竞价培训
  • wordpress七牛云教程seo网站关键词优化哪家好
  • 到哪查找网站域名网站开发软件
  • 网站制作 深圳网络广告策划的内容
  • phpcms v9做网站今日最近的新闻大事10条
  • 网站制作产品资料百度搜索推广采取
  • 湖北省自然资源厅原副厅长被双开网站首页关键词如何优化
  • 党员写试卷需要在哪个网站做百度关键词广告怎么收费
  • 温州哪里做网站比较好网络推广工作好干吗
  • 手机web网站开发软件有搜索引擎竞价排名
  • 建设工程与建设工程项目沈阳seo博客
  • 网站如何让百度抓取长沙专业网站制作
  • 做微商怎样加入网站卖东西赚钱怎么样做推广
  • 做网站找哪家好要钱吗友情链接只有链接
  • 模拟网站建设软件北京专业seo公司