هرگونه راهنمایی را در مورد زیر قدردانی کنید.
1) ماژول های فشرده OpenSSL و سپس "دوتایی استاتیک" ساخته شده از OSSL با قابلیت FIPS که "به طور ثابت به زمان اجرا ویندوز پیوند می زند" را ساخته است.
بنابراین ، باینری برنامه من (FipsApp.exe) به DSS های OSSL بستگی ندارد.
2) این باینری های استاتیک یعنی (libeaycompat32.lib ، libeayfips32.lib و ssleay32.lib) را با استفاده از msincore.pl در myapp.dll مصرف کرد. [19659003] 3) FipsApp.exe تابع foo () را در داخل myapp.dll فراخوانی می کند که FIPS_mode_set () را اجرا می کند که باز می گردد (100: خطا: 2D06B06F: lib (45): function (107): دلیل (111): / FIPS / FIPS. c: 232)
نتیجه
1) با اجرای 64 بیتی FipsApp.exe ، حالت FIPS تنظیم می شود و با myapp.dll 64 بیتی کار می کند
2) اما با اجرای 34 بیتی FipsApp.exe که از myapp.dll 32 بیتی با همان تنظیمات استفاده می کند ، FIPS_mode_set () با دلیل شماره 111 (عدم تطابق اثر انگشت)
تلاش شد
از آنجا که در بالای 32 بیتی myapp.dll کار نمی کند ، برخی اضافی پیکربندی
1) myapp.dll 32 بیتی با بالاترین LFLAGS را بازسازی کنید "/ DynamicBase: خیر
/ ثابت ". در اینجا آدرس پایه پیش فرض برای myapp.dll استفاده می شود
2) myapp.dll 32 بیتی را با آدرس پایه 0xFB00000 دوباره بسازید.
(OSSL همین کار را برای DLL های FIPS انجام می دهد)
3) بررسی کردن در زیر
http://openssl.6102.n7.nabble.com/FIPS-Static-Library-linked-into-Win32-Dll-builds-but-fails- Self-test-td63011.htmlociation19659003(But 32-bit myapp DLL آیا همیشه با عدم تطابق اثر انگشت شکست می خورد.
سؤال
چگونه می توانم myapp.dll 32 بیتی را در حالت FIPS کار کنم؟
FIPS_mode_set () برمی گردد
(100: خطا: 2D06B06F: lib (45): Function (107): دلیل (111): / FIPS / FIPS.c: 232)
ممنون.