~brian-sidebotham/openssl-cmake/1.0.1e

« back to all changes in this revision

Viewing changes to crypto/bf/bfs.cpp

  • Committer: Brian Sidebotham
  • Date: 2013-10-19 21:50:27 UTC
  • Revision ID: brian.sidebotham@gmail.com-20131019215027-yzoyh4svqj87uepu
ImportĀ OpenSSLĀ 1.0.1e

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
// gettsc.inl
 
3
//
 
4
// gives access to the Pentium's (secret) cycle counter
 
5
//
 
6
// This software was written by Leonard Janke (janke@unixg.ubc.ca)
 
7
// in 1996-7 and is entered, by him, into the public domain.
 
8
 
 
9
#if defined(__WATCOMC__)
 
10
void GetTSC(unsigned long&);
 
11
#pragma aux GetTSC = 0x0f 0x31 "mov [edi], eax" parm [edi] modify [edx eax];
 
12
#elif defined(__GNUC__)
 
13
inline
 
14
void GetTSC(unsigned long& tsc)
 
15
{
 
16
  asm volatile(".byte 15, 49\n\t"
 
17
               : "=eax" (tsc)
 
18
               :
 
19
               : "%edx", "%eax");
 
20
}
 
21
#elif defined(_MSC_VER)
 
22
inline
 
23
void GetTSC(unsigned long& tsc)
 
24
{
 
25
  unsigned long a;
 
26
  __asm _emit 0fh
 
27
  __asm _emit 31h
 
28
  __asm mov a, eax;
 
29
  tsc=a;
 
30
}
 
31
#endif      
 
32
 
 
33
#include <stdio.h>
 
34
#include <stdlib.h>
 
35
#include <openssl/blowfish.h>
 
36
 
 
37
void main(int argc,char *argv[])
 
38
        {
 
39
        BF_KEY key;
 
40
        unsigned long s1,s2,e1,e2;
 
41
        unsigned long data[2];
 
42
        int i,j;
 
43
 
 
44
        for (j=0; j<6; j++)
 
45
                {
 
46
                for (i=0; i<1000; i++) /**/
 
47
                        {
 
48
                        BF_encrypt(&data[0],&key);
 
49
                        GetTSC(s1);
 
50
                        BF_encrypt(&data[0],&key);
 
51
                        BF_encrypt(&data[0],&key);
 
52
                        BF_encrypt(&data[0],&key);
 
53
                        GetTSC(e1);
 
54
                        GetTSC(s2);
 
55
                        BF_encrypt(&data[0],&key);
 
56
                        BF_encrypt(&data[0],&key);
 
57
                        BF_encrypt(&data[0],&key);
 
58
                        BF_encrypt(&data[0],&key);
 
59
                        GetTSC(e2);
 
60
                        BF_encrypt(&data[0],&key);
 
61
                        }
 
62
 
 
63
                printf("blowfish %d %d (%d)\n",
 
64
                        e1-s1,e2-s2,((e2-s2)-(e1-s1)));
 
65
                }
 
66
        }
 
67