>> One thing to try would be to try both ways of the define for __thumb. This 
>> can explain the fingerprint failure. 
>>
>> In fips_canister.c around line 188
>>
>> # if defined(__thumb__) || defined(__thumb)
>>     return (void *)((size_t)instruction_pointer&~1);
>> # else
>>     return (void *)instruction_pointer;
>> # endif
> 
> Well, procedure is build fipscanister.obj, build fips_algvs.exe, use
> fipscanister.obj *binary* with application. So that that whatever thumb
> definition was it worked, in fips_algvs.exe context. Besides, that mask
> is more of an optimization thing. I mean it should work in either case,
> just that without masking the bit all memory references will be
> unaligned. In other words, problem ought to be elsewhere...

There is an inaccuracy in what I said. Specifically the "besides, that
mask is more of an optimization thing" is wrong. Depending on how binary
code is fingerprinted, it might be absolutely crucial to mask the least
significant bit for reasons totally unrelated to optimization. However,
it should be noted that on Windows, be it regular Windows or CE,
fingerprinting does *not* rely on value in question and it does not
matter if the bit in question is masked or not.


_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to