CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 0 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 / * S e e m d 5 . c f o r e x p l a n a t i o n a n d c o p y r i g h t i n f o r m a t i o n . * / 00024 00025 / * 00026 00027 * $ F r e e B S D : s r c / c o n t r i b / c v s / l i b / m d 5 . h , v 1 . 2 1 9 9 9 / 1 2 / 1 1 1 5 : 1 0 : 0 2 p e t e r E x p $ 00028 00029 * / 00030 00031 / * U n l i k e p r e v i o u s v e r s i o n s o f t h i s c o d e , u i n t 3 2 n e e d n o t b e e x a c t l y 00032 00033 3 2 b i t s , m e r e l y 3 2 b i t s o r m o r e . C h o o s i n g a d a t a t y p e w h i c h i s 3 2 00034 00035 b i t s i n s t e a d o f 6 4 i s n o t i m p o r t a n t ; s p e e d i s c o n s i d e r a b l y m o r e 00036 00037 i m p o r t a n t . A N S I g u a r a n t e e s t h a t " u n s i g n e d l o n g " w i l l b e b i g e n o u g h , 00038 00039 a n d a l w a y s u s i n g i t s e e m s t o h a v e f e w d i s a d v a n t a g e s . * / 00040 00041 t y p e d e f u i n t 3 2 c v s _ u i n t 3 2 ; 00042 00043 t y p e d e f s t r u c t { 00044 00045 c v s _ u i n t 3 2 b u f [ 4 ] ; 00046 00047 c v s _ u i n t 3 2 b i t s [ 2 ] ; 00048 00049 u n s i g n e d c h a r i n [ 6 4 ] ; 00050 00051 } m y _ M D 5 C o n t e x t ; 00052 00053 # i f d e f _ _ c p l u s p l u s 00054 00055 e x t e r n " C " { 00056 00057 # e n d i f 00058 00059 v o i d m y _ M D 5 I n i t ( m y _ M D 5 C o n t e x t * c o n t e x t ) ; 00060 00061 v o i d m y _ M D 5 U p d a t e ( m y _ M D 5 C o n t e x t * c o n t e x t , 00062 00063 u n s i g n e d c h a r c o n s t * b u f , u n s i g n e d l e n ) ; 00064 00065 v o i d m y _ M D 5 F i n a l ( u n s i g n e d c h a r d i g e s t [ 1 6 ] , 00066 00067 m y _ M D 5 C o n t e x t * c o n t e x t ) ; 00068 00069 # i f d e f _ _ c p l u s p l u s 00070 00071 } 00072 00073 # e n d i f 00074 00075 # d e f i n e M Y _ M D 5 _ H A S H ( d i g e s t , b u f , l e n ) \ 00076 00077 d o { \ 00078 00079 m y _ M D 5 C o n t e x t c t x ; \ 00080 00081 m y _ M D 5 I n i t ( & c t x ) ; \ 00082 00083 m y _ M D 5 U p d a t e ( & c t x , b u f , l e n ) ; \ 00084 00085 m y _ M D 5 F i n a l ( d i g e s t , & c t x ) ; \ 00086 00087 } w h i l e ( 0 ) 00088 00089