00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _RSADEF_H
00035 #define _RSADEF_H
00036
00037 typedef unsigned short rsa_INT;
00038 typedef unsigned long rsa_LONG;
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #define rsa_MAXINT 0xFFFF
00054
00055 #if rsa_MAXINT == 99
00056 #define rsa_MAXBIT 7
00057 #define rsa_LOWBITS 2
00058 #endif
00059 #if rsa_MAXINT == 9
00060 #define rsa_MAXBIT 4
00061 #define rsa_LOWBITS 1
00062 #endif
00063 #if rsa_MAXINT == 1
00064 #define rsa_MAXBIT 1
00065 #endif
00066 #if rsa_MAXINT == 0xFF
00067 #define rsa_MAXBIT 8
00068 #define rsa_TOINT(x) ((rsa_INT)(x))
00069 #endif
00070 #if rsa_MAXINT == 0xFFFF
00071 #define rsa_MAXBIT 16
00072 #define rsa_TOINT(x) ((rsa_INT)(x))
00073 #endif
00074
00075 #ifndef rsa_MAXBIT
00076 #include "<< ERROR: rsa_MAXBIT must be defined >>"
00077 #endif
00078 #ifndef rsa_LOWBITS
00079 #if rsa_MAXINT == (1 << rsa_MAXBIT) - 1
00080 #define rsa_LOWBITS rsa_MAXBIT
00081 #else
00082 #include "<< ERROR: rsa_LOWBITS must be defined >>"
00083 #endif
00084 #endif
00085
00086 #define rsa_MAXLEN (300*8/(rsa_MAXBIT + 1))
00087 #define rsa_STRLEN (rsa_MAXLEN*rsa_MAXBIT/4)
00088 #define rsa_HIGHBIT (1 << (rsa_MAXBIT-1) )
00089
00090 #if rsa_LOWBITS == rsa_MAXBIT
00091 #define rsa_DIVMAX1(x) ((x) >> rsa_MAXBIT)
00092 #define rsa_MODMAX1(x) ((x) & rsa_MAXINT)
00093 #define rsa_MULMAX1(x) ((x) << rsa_MAXBIT)
00094 #else
00095 #define rsa_DIVMAX1(x) ((x) / (rsa_MAXINT+1))
00096 #define rsa_MODMAX1(x) ((x) % (rsa_MAXINT+1))
00097 #define rsa_MULMAX1(x) ((x) * (unsigned)(rsa_MAXINT+1))
00098 #endif
00099
00100 #ifndef rsa_TOINT
00101 #define rsa_TOINT(x) ((rsa_INT)rsa_MODMAX1(x))
00102 #endif
00103
00104 typedef struct {
00105 int n_len; /* Hoechster benutzter Index */
00106 rsa_INT n_part[rsa_MAXLEN];
00107 } rsa_NUMBER;
00108
00109 #define rsa_NUM0P ((rsa_NUMBER *)0) /* Abkuerzung */
00110
00111 /* Key structures */
00112 typedef struct {
00113 rsa_NUMBER n; /* modulus */
00114 rsa_NUMBER e; /* private or public exponent */
00115 } rsa_KEY;
00116 typedef struct {
00117 int len; /* length of 'data' in bytes */
00118 char *keys; /* 'HEX[n]#HEX[d]\0' */
00119 } rsa_KEY_export;
00120
00121
00122 #endif