CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 2 , 2 0 0 6 M y S Q L A B 00002 00003 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y 00004 00005 i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y 00006 00007 t h e F r e e S o f t w a r e F o u n d a t i o n ; v e r s i o n 2 o f t h e L i c e n s e . 00008 00009 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , 00010 00011 b u t W I T H O U T A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f 00012 00013 M E R C H A N T A B I L I T Y o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e 00014 00015 G N U G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s . 00016 00017 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e 00018 00019 a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e 00020 00021 F o u n d a t i o n , I n c . , 5 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A * / 00022 00023 / * 00024 00025 T h i s i s t h e h e a d e r f i l e f o r c o d e w h i c h i m p l e m e n t s t h e S e c u r e 00026 00027 H a s h i n g A l g o r i t h m 1 a s d e f i n e d i n F I P S P U B 1 8 0 - 1 p u b l i s h e d 00028 00029 A p r i l 1 7 , 1 9 9 5 . 00030 00031 M a n y o f t h e v a r i a b l e n a m e s i n t h i s c o d e , e s p e c i a l l y t h e 00032 00033 s i n g l e c h a r a c t e r n a m e s , w e r e u s e d b e c a u s e t h o s e w e r e t h e n a m e s 00034 00035 u s e d i n t h e p u b l i c a t i o n . 00036 00037 P l e a s e r e a d t h e f i l e s h a 1 . c f o r m o r e i n f o r m a t i o n . 00038 00039 M o d i f i e d 2 0 0 2 b y P e t e r Z a i t s e v t o b e t t e r f o l l o w M y S Q L s t a n d a r d s 00040 00041 * / 00042 00043 00044 00045 e n u m s h a _ r e s u l t _ c o d e s 00046 00047 { 00048 00049 S H A _ S U C C E S S = 0 , 00050 00051 S H A _ N U L L , / * N u l l p o i n t e r p a r a m e t e r * / 00052 00053 S H A _ I N P U T _ T O O _ L O N G , / * i n p u t d a t a t o o l o n g * / 00054 00055 S H A _ S T A T E _ E R R O R / * c a l l e d I n p u t a f t e r R e s u l t * / 00056 00057 } ; 00058 00059 # d e f i n e S H A 1 _ H A S H _ S I Z E 2 0 / * H a s h s i z e i n b y t e s * / 00060 00061 / * 00062 00063 T h i s s t r u c t u r e w i l l h o l d c o n t e x t i n f o r m a t i o n f o r t h e S H A - 1 00064 00065 h a s h i n g o p e r a t i o n 00066 00067 * / 00068 00069 t y p e d e f s t r u c t S H A 1 _ C O N T E X T 00070 00071 { 00072 00073 u l o n g l o n g L e n g t h ; / * M e s s a g e l e n g t h i n b i t s * / 00074 00075 u i n t 3 2 I n t e r m e d i a t e _ H a s h [ S H A 1 _ H A S H _ S I Z E / 4 ] ; / * M e s s a g e D i g e s t * / 00076 00077 i n t C o m p u t e d ; / * I s t h e d i g e s t c o m p u t e d ? * / 00078 00079 i n t C o r r u p t e d ; / * I s t h e m e s s a g e d i g e s t c o r r u p t e d ? * / 00080 00081 i n t 1 6 M e s s a g e _ B l o c k _ I n d e x ; / * I n d e x i n t o m e s s a g e b l o c k a r r a y * / 00082 00083 u i n t 8 M e s s a g e _ B l o c k [ 6 4 ] ; / * 5 1 2 - b i t m e s s a g e b l o c k s * / 00084 00085 } S H A 1 _ C O N T E X T ; 00086 00087 / * 00088 00089 F u n c t i o n P r o t o t y p e s 00090 00091 * / 00092 00093 C _ M O D E _ S T A R T 00094 00095 i n t m y s q l _ s h a 1 _ r e s e t ( S H A 1 _ C O N T E X T * ) ; 00096 00097 i n t m y s q l _ s h a 1 _ i n p u t ( S H A 1 _ C O N T E X T * , c o n s t u i n t 8 * , u n s i g n e d i n t ) ; 00098 00099 i n t m y s q l _ s h a 1 _ r e s u l t ( S H A 1 _ C O N T E X T * , u i n t 8 M e s s a g e _ D i g e s t [ S H A 1 _ H A S H _ S I Z E ] ) ; 00100 00101 C _ M O D E _ E N D 00102 00103