What does this error mean in the Botan crypto library? - cryptography

I'm using the c++ crypto library called Botan, and at arbitrary times I am getting the following error at runtime. What does it mean?
terminate called after throwing an instance of 'Botan::PRNG_Unseeded'
what(): Botan: PRNG not seeded: X9.31(AES-256)

I ran into the same error message, which was caused by missing any entropy source.
You can try to enable a entropy source when building Botan library or generating single source file.
For windows platform, add win32_stats module into option --enable-modules. For linux, use dev_random.
e.g. configure.py --enable-modules=win32_stats,...

Well it looks to me like you forgot to seed the PRNG (pseudo random number generator). Having failed to do so, the Botan library threw the aforementioned exception which seems to have caused the terminate function to be called.

The most likely answer is that you are using v 1.8.2 which had problems with its autoseeding routines. Upgrading to 1.8.4 or 1.8.5 has fixed this for everyone who had reported this problem up to now.

Related

Cannot find "stateless_validation.h" after calling CreateShaderModule() in Vulkan

I have tried to setup Vulkan validation layers, and after running vulkaninfoSDK.exe indeed have multiple validation layers, but I get a message in VS Code "unable to open 'stateless_validation.h': Unable to read file 'c:\j\msdk\build\vulkan-validationlayers\repo\layers\stateless_validation.h".
This message is very strange to me, as I do not even have a folder "j" on my c drive, and have in fact installed Vulkan somewhere on a completely different drive. I am running Windows, the MSVC compiler, have installed the latest Vulkan SDK from LunarG, and have set the environment variable "VK_LAYER_PATH" as recommended here: https://vulkan.lunarg.com/doc/view/1.2.131.1/windows/layer_configuration.html but indeed, the folder I have installed the SDK to does not contain a "stateless_validation.h".
My call stack is 3 functions in VkLayer_khronos_validation.dll: "StatelessValidation::validate_struct_pnext", then "StatelessValidation::PreCallValidateCreateShaderModule,", then "vulkan_layer_chassis::CreateShaderModule" called from my own function.
I notice the file "stateless_validation.h" is on the Github repo here: https://github.com/KhronosGroup/Vulkan-ValidationLayers but I would think downloading the SDK would be enough.
How can I solve this?
It seems that the error was an exception thrown inside the actual validation layer source code itself, and was due to the pNext member of my VkShaderModuleCreateInfo structure instance I was passing to vkCreateShaderModule being uninitialized.
Simply setting this to nullptr solved my issue. It seems that since the exception was thrown from inside the dll itself, my exception handling code was not catching it, which confused me.

Flash Builder - Platform conversion failed error during release build

This is a very annoying problem while generating release build files. Here is the steps I did while building:
Select Project > Export Release Build
Select Signed Native Installer
Import certificate
Click Next.
I always got the following error:
https://forums.adobe.com/servlet/JiveServlet/showImage/2-6524012-651585/build_error.png
Platform conversion failed. Process exited with error 5. Output was
"[ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2
text="Unhandled exception Error: EndUpdateResource: Windows Error #5"
errorID=0]
I have the following setup:
OS: Windows 8.1
System type: 64-bit
Flash Builder Version: 4.6 Premium
Installed FB: FlashBuilder_4_6_LS10.exe
Please help. This is giving me a lot of headaches for a couple of days now.
Additionally, here's the stack trace:
java.io.IOException: Platform conversion failed. Process exited with
error 5. Output was "[ErrorEvent type="error" bubbles=false
cancelable=false eventPhase=2 text="Unhandled exception Error:
EndUpdateResource: Windows Error #5" errorID=0] " at
com.adobe.air.nai.NativePackager.conversionFail(NativePackager.java:222)
at
com.adobe.air.nai.NativePackager.invokePlatformConversion(NativePackager.java:203)
at
com.adobe.air.nai.NativePackager.createPackage(NativePackager.java:92)
at
com.adobe.flexbuilder.multisdk.apollo.export.AIRNativeInstallerPackager.create(AIRNativeI
nstallerPackager.java:129) at
com.adobe.flexbuilder.exportimport.releaseversion.ExportReleaseVersionManager.doExport(Ex
portReleaseVersionManager.java:586) at
com.adobe.flexbuilder.exportimport.releaseversion.ui.ExportReleaseVersionWizard$1.run(Exp
ortReleaseVersionWizard.java:208)
I also suspect this is because of the following settings:
Eclipse.ini
https://forums.adobe.com/servlet/JiveServlet/showImage/2-6525217-651726/eclipse.png
...
-startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher_library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502.jar
...
Notice that the plugin used is not intended for x64 processors.
#ActionScript3030 is correct, for anyone finding this later on, if you re-link your Library Paths (even if they look correct) this should rectify your issue.
The issue is caused by the links not being able to resolve to their GUID counterparts in your AppData/Local folder. This happens quite commonly when you create a new user profile and try to copy over your old user profiles information.
I already figured this out. I created a virtual machine with windows 7 32bit operating system and I'm happy now :)
If you initially created your project on a different system then try to compile it in another system, the class source and swc paths may not match. These paths could be there but not being implemented in code, so you will not get any run time errors while debugging, but it will give you the error 5 during compilation.
Solution:
Remove the idle paths not directly in use in your code. You can identify them by simply checking the path.
Found the same issue when trying to use Microsoft Essential Security on my Windows 7 x32. When i uinstall it - problem gone. So try to check your firewall settings if stucking the same problem.
Just to add an alternative solution (I'm on an x64 Windows and want to keep build exported for x64), in my case the error popped up when building the project with the AIR SDK defined in the app.xml (an older one, 3.9) and went away when I explicitly used a newer SDK (19).
(Disclaimer: I used the command line adt tool from the SDK to build, not Flash Builder).
A little late, but might possibly help someone.
I had the same error recently with FlashDevelop. Figured out that the my path was too long. When I renamed some long folder and file names, the error disappeared.
Try to disable UAC on Windows 8. Change it to "Never notify". The problem

How to load a dll in Tcl?

What I have tried (running Tcl and Tk 8.6.0 on Windows):
load D:/toot/bar/em.dll
load "D:/toot/bar/em.dll"
load D://toot//bar//em.dll
load "D://toot//bar//em.dll"
load D:\toot\bar\em.dll
load "D:\toot\bar\em.dll"
load D:\\toot\\bar\\em.dll
load "D:\\toot\\bar\\em.dll"
All of which return one of these two errors:
couldn't load library [what I put after 'load']: invalid argument
couldn't load library [what I put after 'load', rendered]: this library or a dependent library could not be found in library path
Assuming that file exists D:/toot/bar/em.dll returns truea, load D:/toot/bar/em.dll should work. However, it sounds like you've got problems with things (i.e., other DLLs) that the library depends on.
This is a general problem on Windows that has been asked elsewhere on Stack Overflow; the answers there are relevant to this question. You should also be aware that if the DLL has been linked against a specific version of the Tcl DLL (not recommended on Windows for Tcl extensions) then you need to have the same version of Tcl installed as it was linked against. Stub-enabled extensions do not have this problem at all (though they can still run into problems with other required libraries being absent).
It's a shame that the load command doesn't tell you what DLL is missing in its error message, but IIRC the underlying OS API doesn't report it either. You're stuck with using an external tool to diagnose these thingsā€¦
a Don't worry about backslash/forward-slash issues; Tcl handles those for you.
I have this problem, too,couldn't load library "ChariotExt": invalid argument.
And sovled it by change tcl version x64 to x86.

JNI UnsatisfiedLinkError- how do I load libraries correctly?

I'm trying to work with the Java sample Database program from the CardScan SDK.
I am working with files located in Java/JNI and Java/Database. The program must be run with a 32 bit JRE. I was able to do so on a 64 bit machine by uninstalling Java and installing the 32 bit version, then re-adding the system path for Java. I can run the program and interface with a CardScan database file (.cdb) successfully by double clicking the SDKData.bat file, but when I open the source files for editing and edit the Java.library.path to include the required library (CRTK_JNI.dll), I get UnsatisfiedLinkErrors everywhere:
Exception in thread "main" java.lang.UnsatisfiedLinkError: sdkdata.CRTK.CRTK_Init([I)I
at sdkdata.CRTK.CRTK_Init(Native Method)
at sdkdata.CRTK.(CRTK.java:239)
at sdkdata.SDKData.(SDKData.java:97)
at sdkdata.SDKData.main(SDKData.java:643)
Java Result: 1
Presumably this is happening because the library is not loading properly.
What do I need to do to run and edit the program at full capacity (with all the native functions from CRTK_JNI in working order)?
Presumably this is happening because the library is not loading properly.
On the contrary. The library load is complete. You aren't getting that from a System.load()/loadLibrary() call, you are getting the error when calling your native method, the one that should have the signature:
package sdkdata;
public class CRTK
{
public native int CRTK_Init(int[]);
}
So it isn't there, or you have changed the signature without regenerating the .h and .c files, or you have manually mangled the declaration some other way.
Post your code.
To clarify, this Java sample program is officially unsupported by the CardScan API - it was a bad idea to try to use the API with an unsupported language relying solely on an experimental implementation. I ended up using one of the supported languages (Visual Basic) to work with the SDK; if anyone looking at this question happens to be struggling with using the CardScan API, here is my VB implementation on Github.

When a DLL is not found while P/Invoking, how can I get a message about the specific unmanaged DLL that is missing?

When you link to an unmanaged library (say 'A.dll') which in turn links to another library ('B.dll'), and B.dll is missing, you will get a run-time error message about failing to load 'B.dll'.
But when you P/Invoke into 'A.dll' from managed code, you'll get a general exception of this form:
Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'A.dll': The specified module could not be found.
How can I get an error message that pinpoints the specific unmanaged dll file that failed to load, when p/invoking from managed code ?
I don't think there's any specific API you can use to pinpoint why LoadLibrary (the underlying Win32 API) failed for 'A.dll'. I recommend the use of a tool like Dependency Walker to troubleshoot DLL loading errors.
I'm not sure how you can get this in the form of an exception. When I run into this problem I usually try and open the DLL with depends.exe. It's pretty good and reporting missing dependencies that exist if the DLL is simply loaded from it's current location.
You won't be able to get an answer from the exception, but you can do it (with a lot of work) through Process Monitor. This article discusses how and also includes a tool to scan Process Monitor logs to find the specific problem.
http://tech.blinemedical.com/debug-could-not-load-file-or-assembly-or-one-of-its-dependencies/
The Fusion Log Viewer is a good tool to debug assembly loading problems in .NET apps.
For identifying general file-load problems, you can use Process Monitor.