SHA1Stream.st
changeset 14791 4bd37b3efdb2
parent 14788 1a59705877cd
child 15025 552103f2ae6e
child 18027 3621469cc5e8
equal deleted inserted replaced
14790:28d875953487 14791:4bd37b3efdb2
    98 #endif
    98 #endif
    99 {
    99 {
   100     unsigned long a, b, c, d, e;
   100     unsigned long a, b, c, d, e;
   101     typedef union {
   101     typedef union {
   102 	unsigned char c[64];
   102 	unsigned char c[64];
   103 	unsigned long l[16];
   103 	unsigned int32 /* long */ l[16];
   104     } CHAR64LONG16;
   104     } CHAR64LONG16;
   105     CHAR64LONG16* block;
   105     CHAR64LONG16* block;
   106 #ifdef SHA1HANDSOFF
   106 #ifdef SHA1HANDSOFF
   107     static unsigned char workspace[64];
   107     static unsigned char workspace[64];
   108     block = (CHAR64LONG16*)workspace;
   108     block = (CHAR64LONG16*)workspace;
   485     |digest|
   485     |digest|
   486 
   486 
   487     digest := ByteArray new:HashSize.
   487     digest := ByteArray new:HashSize.
   488 
   488 
   489 %{
   489 %{
   490     if (__isByteArray(__INST(hashContext)) &&
   490     OBJ hcon;
   491 	__byteArraySize(__INST(hashContext)) == sizeof(SHA1_CTX) &&
   491 
       
   492     hcon = __INST(hashContext);
       
   493     if (__isByteArray(hcon) &&
       
   494 	__byteArraySize(hcon) == sizeof(SHA1_CTX) &&
   492 	__isByteArray(digest) &&
   495 	__isByteArray(digest) &&
   493 	__byteArraySize(digest) == 20
   496 	__byteArraySize(digest) == 20
   494     ) {
   497     ) {
   495 	SHA1_CTX *ctx = (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
   498 	SHA1_CTX *ctx = (SHA1_CTX *)(__ByteArrayInstPtr(hcon)->ba_element);
   496 	SHA1_CTX copyContext;
   499 	SHA1_CTX copyContext;
   497 
   500 
   498 	memcpy(&copyContext, ctx, sizeof(copyContext));
   501 	memcpy(&copyContext, ctx, sizeof(SHA1_CTX));
   499 	SHA1Final(__ByteArrayInstPtr(digest)->ba_element, &copyContext);
   502 	SHA1Final(__ByteArrayInstPtr(digest)->ba_element, &copyContext);
   500 	RETURN(digest);
   503 	RETURN(digest);
   501     }
   504     }
   502 %}.
   505 %}.
   503 
   506 
   577 ! !
   580 ! !
   578 
   581 
   579 !SHA1Stream class methodsFor:'documentation'!
   582 !SHA1Stream class methodsFor:'documentation'!
   580 
   583 
   581 version
   584 version
   582     ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.35 2013-02-20 15:40:35 cg Exp $'
   585     ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.36 2013-02-21 10:44:11 cg Exp $'
   583 !
   586 !
   584 
   587 
   585 version_CVS
   588 version_CVS
   586     ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.35 2013-02-20 15:40:35 cg Exp $'
   589     ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.36 2013-02-21 10:44:11 cg Exp $'
   587 ! !
   590 ! !
   588 
   591 
   589 
   592 
   590 SHA1Stream initialize!
   593 SHA1Stream initialize!