]> WPIA git - cassiopeia.git/blobdiff - lib/openssl/crypto/rc5/rc5s.cpp
add: execute openssl fetcher to fetch openssl 1.0.1j
[cassiopeia.git] / lib / openssl / crypto / rc5 / rc5s.cpp
diff --git a/lib/openssl/crypto/rc5/rc5s.cpp b/lib/openssl/crypto/rc5/rc5s.cpp
new file mode 100644 (file)
index 0000000..1c5518b
--- /dev/null
@@ -0,0 +1,70 @@
+//
+// gettsc.inl
+//
+// gives access to the Pentium's (secret) cycle counter
+//
+// This software was written by Leonard Janke (janke@unixg.ubc.ca)
+// in 1996-7 and is entered, by him, into the public domain.
+
+#if defined(__WATCOMC__)
+void GetTSC(unsigned long&);
+#pragma aux GetTSC = 0x0f 0x31 "mov [edi], eax" parm [edi] modify [edx eax];
+#elif defined(__GNUC__)
+inline
+void GetTSC(unsigned long& tsc)
+{
+  asm volatile(".byte 15, 49\n\t"
+              : "=eax" (tsc)
+              :
+              : "%edx", "%eax");
+}
+#elif defined(_MSC_VER)
+inline
+void GetTSC(unsigned long& tsc)
+{
+  unsigned long a;
+  __asm _emit 0fh
+  __asm _emit 31h
+  __asm mov a, eax;
+  tsc=a;
+}
+#endif      
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <openssl/rc5.h>
+
+void main(int argc,char *argv[])
+       {
+       RC5_32_KEY key;
+       unsigned long s1,s2,e1,e2;
+       unsigned long data[2];
+       int i,j;
+       static unsigned char d[16]={0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
+
+       RC5_32_set_key(&key, 16,d,12);
+
+       for (j=0; j<6; j++)
+               {
+               for (i=0; i<1000; i++) /**/
+                       {
+                       RC5_32_encrypt(&data[0],&key);
+                       GetTSC(s1);
+                       RC5_32_encrypt(&data[0],&key);
+                       RC5_32_encrypt(&data[0],&key);
+                       RC5_32_encrypt(&data[0],&key);
+                       GetTSC(e1);
+                       GetTSC(s2);
+                       RC5_32_encrypt(&data[0],&key);
+                       RC5_32_encrypt(&data[0],&key);
+                       RC5_32_encrypt(&data[0],&key);
+                       RC5_32_encrypt(&data[0],&key);
+                       GetTSC(e2);
+                       RC5_32_encrypt(&data[0],&key);
+                       }
+
+               printf("cast %d %d (%d)\n",
+                       e1-s1,e2-s2,((e2-s2)-(e1-s1)));
+               }
+       }
+