rsadef.h

Go to the documentation of this file.
00001 /* @(#)root/auth:$Id: rsadef.h 30749 2009-10-15 16:33:04Z brun $ */
00002 /* Author: Martin Nicolay  22/11/1988 */
00003 
00004 /******************************************************************************
00005 Copyright (C) 2006 Martin Nicolay <m.nicolay@osm-gmbh.de>
00006 
00007 This library is free software; you can redistribute it and/or
00008 modify it under the terms of the GNU Lesser General Public
00009 License as published by the Free Software Foundation; either
00010 version 2.1 of the License, or (at your option) any later
00011 version.
00012 
00013 This library is distributed in the hope that it will be useful,
00014 but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 GNU Lesser General Public License for more details.
00017 
00018 You should have received a copy of the GNU Lesser General Public
00019 License along with this library; if not, write to the Free
00020 Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
00021 MA  02110-1301  USA
00022 ******************************************************************************/
00023 
00024 /*******************************************************************************
00025 *                                                                                                                      *
00026 *       Simple RSA public key code.                                            *
00027 *       Adaptation in library for ROOT by G. Ganis, July 2003                  *
00028 *       (gerardo.ganis@cern.ch)                                                *
00029 *                                                                                                                           *
00030 *       Header used by internal rsa functions                                   *
00031 *                                                                                                                           *
00032 *******************************************************************************/
00033 
00034 #ifndef _RSADEF_H
00035 #define _RSADEF_H
00036 
00037 typedef unsigned short rsa_INT;         /* muss MAXINT fassen           */
00038 typedef unsigned long rsa_LONG;         /* muss (MAXINT+1)^2 -1 fassen  */
00039 
00040 /*
00041  *      (MAXINT+1)-adic Zahlen
00042  */
00043 
00044 /*
00045  *      MAXINT          Maximale Zahl pro Element (muss int sein)
00046  *      MAXBIT          Maximales Bit von MAXINT
00047  *      LOWBITS         Anzahl der consekutiven low Bits von MAXINT
00048  *      HIGHBIT         Hoechsten Bit von MAXINT
00049  *      TOINT           muss (INT)( (x) % MAXINT) ergeben
00050  *      MAXLEN          Laenge der INT Array in jeder NUMBER
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))          /* ACHTUNG !!!!! */
00069 #endif
00070 #if rsa_MAXINT == 0xFFFF
00071 #define rsa_MAXBIT      16
00072 #define rsa_TOINT(x)    ((rsa_INT)(x))          /* ACHTUNG !!!!! */
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

Generated on Tue Jul 5 14:26:29 2011 for ROOT_528-00b_version by  doxygen 1.5.1