Import of old SSLeay release: SSLeay 0.9.0b
[openssl.git] / crypto / des / dess.cpp
diff --git a/crypto/des/dess.cpp b/crypto/des/dess.cpp
new file mode 100644 (file)
index 0000000..7fb5987
--- /dev/null
@@ -0,0 +1,67 @@
+//
+// 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 "des.h"
+
+void main(int argc,char *argv[])
+       {
+       des_key_schedule key;
+       unsigned long s1,s2,e1,e2;
+       unsigned long data[2];
+       int i,j;
+
+       for (j=0; j<6; j++)
+               {
+               for (i=0; i<1000; i++) /**/
+                       {
+                       des_encrypt(&data[0],key,1);
+                       GetTSC(s1);
+                       des_encrypt(&data[0],key,1);
+                       des_encrypt(&data[0],key,1);
+                       des_encrypt(&data[0],key,1);
+                       GetTSC(e1);
+                       GetTSC(s2);
+                       des_encrypt(&data[0],key,1);
+                       des_encrypt(&data[0],key,1);
+                       des_encrypt(&data[0],key,1);
+                       des_encrypt(&data[0],key,1);
+                       GetTSC(e2);
+                       des_encrypt(&data[0],key,1);
+                       }
+
+               printf("des %d %d (%d)\n",
+                       e1-s1,e2-s2,((e2-s2)-(e1-s1)));
+               }
+       }
+