Hi,

I'm trying to mimic the following C/C++ example in NativeBoots to allow random 
number
generation on windows:

  https://gist.github.com/kbjorklu/6317361

When I combine the flags in Pharo using "|" in the same way like in the first 
function call
of the example: 

acquireContextExample1
  NBFFICallout stdcall: #(BOOL CryptAcquireContextA(HCRYPTPROV self, 0, 0, 
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) module: #advapi32        

I get an error 'comma expected'. Looks like the NBFnSpecParser does not allow 
expression evaluation like CRYPT_VERIFYCONTEXT | CRYPT_SILENT. Will this be 
possible 
in future versions?

Nonetheless I tried to continue and since I defined:
   CRYPT_VERIFYCONTEXT := 16rF0000000.
   CRYPT_SILENT := 16r00000040.

I evaluated manually and tried to use the harcoded value directly: 

acquireContextExample2

        "Retrieves information about the current console font." 
         <primitive: 'primitiveNativeCall' module: 'NativeBoostPlugin'>

        ^ NBFFICallout stdcall: #(BOOL CryptAcquireContextA(HCRYPTPROV self, 0, 
0, PROV_RSA_FULL, 16rF0000040)) module: #advapi32       


but this returns another error when converting using #asDWord:

  (16rF0000040 i4) exceeds doubleword (32bit) range

in an AJImmediate but 16rF0000040. Looks like it is treated as unsiged since 

    16rF0000040 asUImm32 asDWord  

works. How to specifiy the number directly but as unsigned?

To reproduce:
 - take a fresh Pharo3.0 Latest update: #30759
 - load "OSWindows" from config browser to get the core and other packages
 - load "OS-Windows-Cryptography" package/mcz from 
smalltalkhub.com/#!/~OS/OS-Windows
 - evaluate WinCryptoProvider new acquireContextExample2 or WinCryptoProvider 
new acquireContextExample1

Any helping hand in converting the example would be appreciated. 

Thx
T.

Reply via email to