On rereading, I think I am wrong here.  Ignore this.

Henry Rich

On 9/6/2013 5:22 AM, Henry Rich wrote:
I'm looking at

CryptCreateHash =: 'advapi32.dll CryptCreateHash i *i i i i *i' & cd
err =. CryptCreateHash (<a); ALG_SID_SHA_256 ; 0 ; 0 ; (<<h)

and I don't understand why this doesn't give an error on parameters a
and h.  They correspond to *i descriptors, but they are scalar boxes.  I
thought they needed to be scalars, so I would use

err =. CryptCreateHash a; ALG_SID_SHA_256 ; 0 ; 0 ; h

Similar cases later on


Untested.

Henry Rich

On 9/6/2013 12:10 AM, Pascal Jasmin wrote:
I'm trying to get sha256 from microsoft's library working.

MS documentation on the last call in my function:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379947(v=vs.85).aspx


The problem is that the 3rd param to CryptGetHashParam is a pointer to
a byte array, and should hold the hash result, but I'm unable to see
it change.  The 2nd param in CryptHashData may also be called
incorrectly here.

any help?


ALG_SID_SHA_256 =: 12
ALG_CLASS_HASH =: 32768
PROV_RSA_FULL =:1
PROV_RSA_AES =: 24
HP_HASHVAL =: 2
CRYPT_VERIFYCONTEXT =: 4026531840
CryptAcquireContext =: ('advapi32.dll CryptAcquireContextA i *i c c i
i') & cd
NB.(ByRef phProv As Long, ByVal pszContainer As String, ByVal
pszProvider As String, ByVal dwProvType As Long, ByVal dwFlags As Long)
CryptReleaseContext =: 'advapi32.dll CryptReleaseContext i i i' & cd
NB. (ByVal hProv As Long, ByVal dwFlags As Long) As Long
CryptCreateHash =: 'advapi32.dll CryptCreateHash i *i i i i *i' & cd
NB.(ByVal hProv As Long, ByVal Algid As Long, ByVal hKey As Long,
ByVal dwFlags As Long, ByRef phHash As Long) As Long
CryptDestroyHash =: 'advapi32.dll CryptDestroyHash i i' & cd
NB.(ByVal hHash As Long) As Long
CryptHashData =: 'advapi32.dll CryptHashData i *i *c i i' & cd
NB.(ByVal hHash As Long, pbData As Any, ByVal cbData As Long, ByVal
dwFlags As Long) As Long
CryptGetHashParam =: 'advapi32.dll CryptGetHashParam i *i i *c *i i' & cd
NB.(ByVal hHash As Long, ByVal dwParam As Long, pbData As Any, ByRef
pcbData As Long, ByVal dwFlags As Long) As Long



CreateHash =: 3 : 0
a =. mema 8
h =. mema 128
o =. mema 32

err=. CryptAcquireContext (<a);' ';' ';PROV_RSA_FULL;CRYPT_VERIFYCONTEXT
err =. CryptCreateHash (<a); ALG_SID_SHA_256 ; 0 ; 0 ; (<<h)
y memw o, 0 , # y
CryptHashData (<h) ; (y) ; (# y) ; 0
CryptGetHashParam (<h); HP_HASHVAL ; (<o ); (,32) ; 0
NB. memr o, 0, # y
)


vb code that i adapted this from:
http://khoiriyyah.blogspot.ca/2012/06/vb6-hash-class-md5-sha-1-sha-256-sha.html

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to