ÿþ 
 v a r   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y   =   0 ;  
 v a r   C A P I C O M _ C U R R E N T _ U S E R _ S T O R E   =   2 ;  
 v a r   C A P I C O M _ S M A R T _ C A R D _ U S E R _ S T O R E   =   4 ;  
 v a r   C A P I C O M _ C E R T I F I C A T E _ F I N D _ S H A 1 _ H A S H   =   0 ;  
 v a r   C A P I C O M _ C E R T I F I C A T E _ F I N D _ E X T E N D E D _ P R O P E R T Y   =   6 ;  
 v a r   C A P I C O M _ C E R T I F I C A T E _ F I N D _ T I M E _ V A L I D   =   9 ;  
 v a r   C A P I C O M _ C E R T I F I C A T E _ F I N D _ K E Y _ U S A G E   =   1 2 ;  
 v a r   C A P I C O M _ D I G I T A L _ S I G N A T U R E _ K E Y _ U S A G E   =   0 x 0 0 0 0 0 0 8 0 ;  
 v a r   C A P I C O M _ A U T H E N T I C A T E D _ A T T R I B U T E _ S I G N I N G _ T I M E   =   0 ;  
 v a r   C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E   =   0 ;  
 v a r   C A P I C O M _ E N C O D E _ B A S E 6 4   =   0 ;  
 v a r   C A P I C O M _ E _ C A N C E L L E D   =   - 2 1 3 8 5 6 8 4 4 6 ;  
 v a r   C E R T _ K E Y _ S P E C _ P R O P _ I D   =   6 ;  
 v a r   C A P I C O M _ H A S H _ A L G O R I T H M _ S H A 1   =   0 ;  
  
 v a r   C A P I C O M _ C H E C K _ N O N E   =   0 ;  
 v a r   C A P I C O M _ C H E C K _ T R U S T E D _ R O O T   =   1 ;  
 v a r   C A P I C O M _ C H E C K _ T I M E _ V A L I D I T Y   =   2 ;  
 v a r   C A P I C O M _ C H E C K _ S I G N A T U R E _ V A L I D I T Y   =   4 ;  
 v a r   C A P I C O M _ C H E C K _ O N L I N E _ R E V O C A T I O N _ S T A T U S   =   8 ;  
 v a r   C A P I C O M _ C H E C K _ O F F L I N E _ R E V O C A T I O N _ S T A T U S   =   1 6 ;  
  
 v a r   C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ V A L I D   =   1 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ N E S T E D   =   2 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ R E V O K E D   =   4 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ N O T _ S I G N A T U R E _ V A L I D   =   8 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ N O T _ V A L I D _ F O R _ U S A G E   =   1 6 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ U N T R U S T E D _ R O O T   =   3 2 ;  
 v a r   C A P I C O M _ T R U S T _ R E V O C A T I O N _ S T A T U S _ U N K N O W N   =   6 4 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ C Y C L I C   =   1 2 8 ;  
 v a r   C A P I C O M _ T R U S T _ I S _ P A R T I A L _ C H A I N   =   6 5 5 3 6 ;  
 v a r   C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ T I M E _ V A L I D   =   1 3 1 0 7 2 ;  
 v a r   C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ S I G N A T U R E _ V A L I D   =   2 6 2 1 4 4 ;  
 v a r   C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ V A L I D _ F O R _ U S A G E   =   5 2 4 2 8 8 ;  
 v a r   C A P I C O M _ V E R I F Y _ S I G N A T U R E _ O N L Y   =   0 ;  
  
 v a r   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ R C 2   =   0 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ R C 4   =   1 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ D E S   =   2 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ 3 D E S   =   3 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ A E S   =   4 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ M A X I M U M   =   0 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ 4 0 _ B I T S   =   1 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ 5 6 _ B I T S   =   2 ;  
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ 1 2 8 _ B I T S   =   3 ;    
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ 1 9 2 _ B I T S   =   4 ;    
 v a r   C A P I C O M _ E N C R Y P T I O N _ K E Y _ L E N G T H _ 2 5 6 _ B I T S   =   5 ;    
 v a r   C A P I C O M _ S E C R E T _ P A S S W O R D   =   0 ;  
 v a r   C A P I C O M _ E N C O D E _ B A S E 6 4   =   0 ;  
 v a r   C A P I C O M _ E N C O D E _ B I N A R Y   =   1 ;  
 v a r   C A P I C O M _ E N C O D E _ A N Y   =   - 1 ;  
 v a r   C A P I C O M _ V E R I F Y _ S I G N A T U R E _ A N D _ C E R T I F I C A T E   =   1 ;  
  
  
 v a r   M y S t o r e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S t o r e " ) ;  
 v a r   F i l t e r e d C e r t i f i c a t e s   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . C e r t i f i c a t e s " ) ;  
 v a r   C e r t i f i c a t e   =   n u l l  
  
 v a r   r e q ;  
 v a r   s e n d e r ;  
  
  
 f u n c t i o n   I s C A P I C O M I n s t a l l e d ( )  
 {  
  
         i f ( t y p e o f ( o C A P I C O M )   = =   " o b j e c t " )  
         {  
                   i f (   ( o C A P I C O M . o b j e c t   ! =   n u l l )   )  
                   {  
                             / /   W e   f o u n d   C A P I C O M !  
                             r e t u r n   t r u e ;  
                   }  
                   e l s e   r e t u r n   f a l s e ;  
         }  
         e l s e   r e t u r n   f a l s e ;  
 }  
  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   c h e c k C e r t S t a t u s ( s z T h u m b p r i n t )  
       {  
         i f   ( I s C A P I C O M I n s t a l l e d )  
         {  
           / /   f i n d   t h e   c e r t i f i c a t e   s p e c i f i e d !  
           v a r   C e r t i f i c a t e s   =   F i n d C e r t i f i c a t e B y T h u m b p r i n t ( s z T h u m b p r i n t ) ;  
           C e r t i f i c a t e   =   C e r t i f i c a t e s . I t e m ( 1 ) ;  
  
           w i n d o w . s t a t u s = " C h e c k i n g   C e r t i f i c a t e   S t a t u s . . . . " ;  
           / /   C A P I C O M   e x p o s e s   C e r t i f i c a t e   s t a t u s   c h e c k i n g   t h r o u g h   I s V a l i d ,   t h e   C h e c k F l a g   p a r a m e t e r  
           / /   a l l o w s   y o u   t o   s p e c i f y   t h e   i t e m s   y o u   w a n t   t o   h a v e   c h e c k e d   f o r   y o u .  
           C e r t i f i c a t e . I s V a l i d ( ) . C h e c k F l a g   =   ( C A P I C O M _ C H E C K _ T R U S T E D _ R O O T   |   C A P I C O M _ C H E C K _ T I M E _ V A L I D I T Y   |   C A P I C O M _ C H E C K _ S I G N A T U R E _ V A L I D I T Y   ) ; / / |   C A P I C O M _ C H E C K _ O N L I N E _ R E V O C A T I O N _ S T A T U S  
                   i f   ( C e r t i f i c a t e . I s V a l i d ( ) . R e s u l t   = =   t r u e )  
                   {  
                             / /   c l e a r   t h e   s t a t u s   w i n d o w  
                             w i n d o w . s t a t u s = " " ;  
                             / / a l e r t ( " . EH1/  *'&Ì/  '3*  \ " "   +     C e r t i f i c a t e . G e t I n f o ( C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E )   +   " \ " '9*('1  ¯H'GÌ  /Ì,Ì*'D  " ) ;  
                             r e t u r n   t r u e ;  
                   }  
                   e l s e  
                   {  
                             v a r   C h a i n   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . C h a i n " ) ;  
                             C h a i n . B u i l d ( C e r t i f i c a t e )  
  
                             / /   c l e a r   t h e   s t a t u s   w i n d o w  
                             w i n d o w . s t a t u s = " " ;  
                             i f   ( C A P I C O M _ T R U S T _ I S _ N O T _ S I G N A T U R E _ V A L I D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C r y p t o A P I   f o u n d   a   p r o b l e m   w i t h   t h e   s i g n a t u r e   o n   ' "   +     C e r t i f i c a t e . G e t I n f o ( C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E )   +   " ' " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( ( C A P I C O M _ T R U S T _ I S _ U N T R U S T E D _ R O O T   &   C h a i n . S t a t u s )   | |   ( C A P I C O M _ T R U S T _ I S _ P A R T I A L _ C H A I N   &   C h a i n . S t a t u s ) )  
                             {  
                               a l e r t ( " C r y p t o A P I   w a s   u n a b l e   t o   c h a i n   ' "   +     C e r t i f i c a t e . G e t I n f o ( C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E )   +   " '   t o   a   t r u s t e d   a u t h o r i t y " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ I S _ C Y C L I C   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ I S _ C Y C L I C " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ T I M E _ V A L I D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ T I M E _ V A L I D " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ S I G N A T U R E _ V A L I D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ S I G N A T U R E _ V A L I D " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ V A L I D _ F O R _ U S A G E   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ C T L _ I S _ N O T _ V A L I D _ F O R _ U S A G E " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ V A L I D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ V A L I D " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ N E S T E D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ I S _ N O T _ T I M E _ N E S T E D " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ I S _ N O T _ V A L I D _ F O R _ U S A G E   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C A P I C O M _ T R U S T _ I S _ N O T _ V A L I D _ F O R _ U S A G E " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ I S _ R E V O K E D   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( " C r y p t o A P I   d e t e r m i n e d   t h a t   ' "   +     C e r t i f i c a t e . G e t I n f o ( C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E )   +   " '   o r   o n e   o f   i t s   i s s u e r s   w a s   r e v o k e d . " ) ;  
                               r e t u r n   f a l s e ;  
                             }  
                             i f   ( C A P I C O M _ T R U S T _ R E V O C A T I O N _ S T A T U S _ U N K N O W N   &   C h a i n . S t a t u s )  
                             {  
                               a l e r t ( ' '9*('1  ¯H'GJ  /J,J*'D  '   +   C e r t i f i c a t e . G e t I n f o ( C A P I C O M _ I N F O _ S U B J E C T _ S I M P L E _ N A M E )   +   ' B'(D  *'JJ/  FEJ  ('4/' )  
                               r e t u r n   f a l s e ;  
                             }  
                   }  
           }  
           e l s e   r e t u r n   f a l s e ;  
       }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *        
 f u n c t i o n   F i n d C e r t i f i c a t e B y T h u m b p r i n t ( s z T h u m b p r i n t )  
 {  
  
         / /   i n s t a n t i a t e   t h e   C A P I C O M   o b j e c t s  
         v a r   M y S t o r e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S t o r e " ) ;  
         / / v a r   A d d r S t o r e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S t o r e " ) ;  
         v a r   C A S t o r e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S t o r e " ) ;  
         v a r   R o o t S t o r e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S t o r e " ) ;  
         v a r   F o u n d C e r t i f i c a t e s   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . C e r t i f i c a t e s " ) ;  
  
         / /   o p e n   t h e   s t o r e   o b j e c t s  
         t r y  
         {  
                   M y S t o r e . O p e n ( C A P I C O M _ C U R R E N T _ U S E R _ S T O R E ,   " M y " ,   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y ) ;                    
                   / / A d d r S t o r e . O p e n ( C A P I C O M _ C U R R E N T _ U S E R _ S T O R E ,   " A d d r e s s B o o k " ,   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y ) ;  
                   C A S t o r e . O p e n ( C A P I C O M _ C U R R E N T _ U S E R _ S T O R E ,   " C A " ,   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y ) ;  
                   R o o t S t o r e . O p e n ( C A P I C O M _ C U R R E N T _ U S E R _ S T O R E ,   " R o o t " ,   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y ) ;  
         }  
         c a t c h   ( e )  
         {  
                   a l e r t ( " A n   e r r o r   o c c u r r e d   w h i l e   o p e n i n g   y o u r   c e r t i f i c a t e   s t o r e s ,   a b o r t i n g " ) ;  
                   r e t u r n   f a l s e ;  
         }  
  
         / /   t h i s   m a y   t a k e   a   s e c o n d   s o   l e t s   u p d a t e   t h e   u s e r   w i t h   w h a t   w e   a r e   d o i n g  
         w i n d o w . s t a t u s = " F i n d i n g   C e r t i f i c a t e   w i t h   t h e   T h u m b p r i n t   o f   "   +   s z T h u m b p r i n t   +   " . " ;  
  
         / /   c r e a t e   a n   a r r a y   o f   a l l   o f   t h e   s t o r e s  
         M y S t o r e s   =   n e w   A r r a y ( M y S t o r e ,   C A S t o r e ,   R o o t S t o r e ) ;  
  
         / /   e n u m e r a t e   t h r o u g h   t h e   s t o r e s  
         f o r   ( i S t o r e   =   0 ;   i S t o r e   < =   ( M y S t o r e s . l e n g t h   - 1 ) ;   i S t o r e + + )  
         {  
                   / /   l o o k   f o r   o u r   t h u m b p r i n t   i n   t h i s   s t o r e  
                   v a r   C e r t i f i c a t e s   =   M y S t o r e s [ i S t o r e ] . C e r t i f i c a t e s . F i n d ( C A P I C O M _ C E R T I F I C A T E _ F I N D _ S H A 1 _ H A S H ,   s z T h u m b p r i n t ) ;  
  
                   / /   e n u m e r a t e   t h r o u g h   e a c h   o f   t h e   c e r t i f i c a t e s   w e   f o u n d   ( i f   a n y )  
                   f o r   ( i C e r t   =   1 ;   i C e r t   < =   ( C e r t i f i c a t e s . C o u n t ) ;   i C e r t + + )  
                   {  
                             F o u n d C e r t i f i c a t e s . A d d ( C e r t i f i c a t e s . I t e m ( i C e r t ) ) ;  
                   }  
         }  
  
         / /   u p d a t e   t h e   s t a t u s  
         w i n d o w . s t a t u s = " " ;  
  
         / /   r e t u r n   t h e   c e r t i f i c a t e  
         i f   ( t y p e o f ( F o u n d C e r t i f i c a t e s )   = =   " o b j e c t " )  
         {  
                   r e t u r n   F o u n d C e r t i f i c a t e s ;  
         }          
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
       f u n c t i o n   i n i t ( )  
       {  
         / /   T h e   i n s t a l l a t i o n   o f   C A P I C O M   i s   d e p e n d a n t   o n   v a r i o u s   s e c u r i t y   p e r m i s s i o n s   o n   t h e   h o s t   p c  
         / /   s o m e   o f   t h e s e   p e r m i s s i o n s   i n c l u d e :  
         / /   *   r e a d   a n d   c r e a t e   p e r m i s s i o n s   t o   t h e   H K R   k e y   i n   t h e   r e g i s t r y   ( t o   r e g i s t e r   t h e   o b j e c t )  
         / /   *   r e a d   p e r m i s s i o n s   t o   t h e   c a p i c o m . d l l   o n   t h e   f i l e   s y s t e m  
         / /  
         / /   I f   a   u s e r   d o e s   n o t   h a v e   s a i d   p e r m i s s i o n s   y o u   w i l l   n o t   b e   a b l e   t o   I n s t a n t i a t e   t h e   o b j e c t  
         / /   a s   s u c h   y o u r   c o d e   w i l l   n o t   w o r k .   S o   p r i o r   t o   u t i l i z i n g   a n y   o f   t h e   o b j e c t s   i m p l e m e n t e d  
         / /   b y   C A P I C O M   w e   w i l l   c h e c k   t o   s e e   i f   i t   h a s   b e e n   i n s t a l l e d .  
         i f   ( I s C A P I C O M I n s t a l l e d ( )   ! =   t r u e )  
         {  
           / /   A l e r t   t h e   t h a t   C A P I C O M   w a s   n o t   a b l e   t o   b e   i n s t a l l e d  
           / /   a l e r t ( " C A P I C O M   c o u l d   n o t   b e   l o a d e d ,   p o s s i b l y   d u e   t o   i n s u f f i c i e n t   a c c e s s   p r i v i l e g e s   o n   t h i s   m a c h i n e . " ) ;  
               a l e r t ( " 'E©'F  /3*13Ì  (G  A'ÌD  ©*'(.'FG  'Ì  'E6'Ì  /Ì,Ì*'D  H,H/  F/'1/" ) ;  
         }  
  
       }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
  
       f u n c t i o n   C h e c k T o k e n ( s z T h u m b p r i n t )    
       {                
 	 	 i f ( s z T h u m b p r i n t   = =   " " )  
 	 	 {  
 	 	 	 a l e r t ( ' D7A'  3.*  'A2'1  -'HJ  ¯H'GJ  /J,J*'D  .H/  1'  (G  C'E~JH*1  E*5D  FE'&J/' )  
 	 	 	 r e t u r n   f a l s e ;  
 	 	 }  
  
 	       t r y  
 	       {  
 	       	         M y S t o r e . O p e n ( 2 ,   " M y " ,   0 ) ;  
         	       	  
 	                 F i l t e r e d C e r t i f i c a t e s   =   M y S t o r e . C e r t i f i c a t e s ;  
  
 	       	         i f ( F i l t e r e d C e r t i f i c a t e s . C o u n t   >   0 )  
 	       	         {  
 	       	 	         C e r t i f i c a t e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . C e r t i f i c a t e " ) ;  
 	       	 	         i f   ( s z T h u m b p r i n t   ! =   " " )  
       	 	 	                 C e r t i f i c a t e   =   F i n d C e r t i f i c a t e B y T h u m b p r i n t ( s z T h u m b p r i n t ) . I t e m ( 1 ) ;  
       	 	 	         e l s e  
       	 	 	                 C e r t i f i c a t e   =   S e l e c t C e r t ( ) ;  
       	 	 	          
         	 	         i f ( C e r t i f i c a t e . T h u m b p r i n t . t o U p p e r C a s e ( )   = =   s z T h u m b p r i n t . t o U p p e r C a s e ( ) )  
         	 	         {  
         	 	 	         i f ( c h e c k C e r t S t a t u s ( s z T h u m b p r i n t ) )  
         	 	 	 	         r e t u r n   t r u e ;  
         	 	 	         e l s e  
         	 	 	 	         r e t u r n   f a l s e ;  
  
       	 	 	         }  
         	 	         e l s e  
         	 	         {  
         	 	 	         a l e r t ( ' ¯H'GJ  /J,J*'D  EH,H/  /1  3.*  'A2'1  E*9DB  (G  C/  C'1(1J  H'1/  4/G  FEJ  ('4/' )  
         	 	 	         r e t u r n   f a l s e ;  
       	 	 	         }  
 	       	         }  
 	 	         e l s e  
 	 	         {  
                                 a l e r t ( ' D7A'  3.*  'A2'1  -'HJ  ¯H'GJ  /J,J*'D  .H/  1'  (G  C'E~JH*1  E*5D  FE'&J/' )  
                                 r e t u r n   f a l s e ;  
                         }  
 	 	  
 	       }  
 	       c a t c h   ( e )  
 	       {  
 	 	         i f   ( e . n u m b e r   ! =   C A P I C O M _ E _ C A N C E L L E D )  
 	 	         {  
 	       	 	         a l e r t ( " A n   e r r o r   o c c u r r e d   w h i l e   o p e n i n g   y o u r   p e r s o n a l   c e r t i f i c a t e   s t o r e ,   a b o r t i n g " ) ;  
 	 	 	         a l e r t ( e . d e s c r i p t i o n )  
 	 	 	         r e t u r n   f a l s e ;  
 	 	         }  
 	       }  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
  
 f u n c t i o n   C h e c k L o g i n T o k e n ( s z T h u m b p r i n t )  
 {  
         i f ( c h e c k C e r t S t a t u s ( s z T h u m b p r i n t ) )  
         {  
                 r e t u r n   t r u e ;  
         }  
         e l s e  
                 r e t u r n   f a l s e ;  
  
 }  
  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
  
  
 f u n c t i o n   D o H a s h ( v a l )  
 {  
 	 v a r   H a s h e d D a t a   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . H a s h e d D a t a " ) ;  
 	 H a s h e d D a t a . A l g o r i t h m   =   C A P I C O M _ H A S H _ A L G O R I T H M _ S H A 1 ;  
 	 H a s h e d D a t a . H a s h ( v a l ) ;  
 	 r e t u r n   H a s h e d D a t a . V a l u e  
 }  
  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   D o S i g n ( v a l ,   U s e r C e r t )  
 {  
         i f ( ! C h e c k T o k e n ( U s e r C e r t ) )  
         {  
                 t h r o w   ' D7A'  3.*  'A2'1  -'HJ  ¯H'GJ  /J,J*'D  .H/  1'  (G  C'E~JH*1  E*5D  FE'&J/'  
         }  
         v a r   S i g n e d D a t a   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S i g n e d D a t a " ) ;  
         v a r   S i g n e r   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . S i g n e r " ) ;  
         v a r   T i m e A t t r i b u t e   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . A t t r i b u t e " ) ;  
         S i g n e d D a t a . C o n t e n t   =   v a l ;  
  
         t r y  
         {  
                 S i g n e r . C e r t i f i c a t e   =   C e r t i f i c a t e ;  
                 v a r   T o d a y   =   n e w   D a t e ( ) ;  
                 T i m e A t t r i b u t e . N a m e   =   C A P I C O M _ A U T H E N T I C A T E D _ A T T R I B U T E _ S I G N I N G _ T I M E ;  
                 T i m e A t t r i b u t e . V a l u e   =   T o d a y . g e t V a r D a t e ( ) ;  
                 T o d a y   =   n u l l ;  
                 S i g n e r . A u t h e n t i c a t e d A t t r i b u t e s . A d d ( T i m e A t t r i b u t e ) ;  
  
                 / /   D o   t h e   S i g n   o p e r a t i o n  
                 s z S i g n a t u r e   =   S i g n e d D a t a . S i g n ( S i g n e r ,   f a l s e ,   C A P I C O M _ E N C O D E _ B A S E 6 4 ) ;  
                 r e t u r n   s z S i g n a t u r e  
         }  
         c a t c h   ( e )  
         {  
                 t h r o w   e . d e s c r i p t i o n ;  
         }  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   c r e a t e C o o k i e ( n a m e , v a l u e , d a y s )   {  
 	 i f   ( d a y s )   {  
 	 	 v a r   d a t e   =   n e w   D a t e ( ) ;  
 	 	 d a t e . s e t T i m e ( d a t e . g e t T i m e ( ) + ( d a y s * 2 4 * 6 0 * 6 0 * 1 0 0 0 ) ) ;  
 	 	 v a r   e x p i r e s   =   " ;   e x p i r e s = " + d a t e . t o G M T S t r i n g ( ) ;  
 	 }  
 	 e l s e   v a r   e x p i r e s   =   " " ;  
 	 d o c u m e n t . c o o k i e   =   n a m e + " = " + v a l u e + e x p i r e s + " ;   p a t h = / " ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   r e a d C o o k i e ( n a m e )   {  
 	 v a r   n a m e E Q   =   n a m e   +   " = " ;  
 	 a l e r t ( d o c u m e n t . c o o k i e )  
 	 v a r   c a   =   d o c u m e n t . c o o k i e . s p l i t ( ' ; ' ) ;  
 	 f o r ( v a r   i = 0 ; i   <   c a . l e n g t h ; i + + )   {  
 	 	 v a r   c   =   c a [ i ] ;  
 	 	 w h i l e   ( c . c h a r A t ( 0 ) = = '   ' )   c   =   c . s u b s t r i n g ( 1 , c . l e n g t h ) ;  
 	 	 i f   ( c . i n d e x O f ( n a m e E Q )   = =   0 )   r e t u r n   c . s u b s t r i n g ( n a m e E Q . l e n g t h , c . l e n g t h ) ;  
 	 }  
 	 r e t u r n   n u l l ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   s e t C o o k i e ( c _ n a m e , v a l u e , e x p i r e d a y s )  
 {  
 v a r   e x d a t e = n e w   D a t e ( )  
 e x d a t e . s e t D a t e ( e x d a t e . g e t D a t e ( ) + e x p i r e d a y s )  
 d o c u m e n t . c o o k i e = c _ n a m e +   " = "   + e s c a p e ( v a l u e ) +  
 ( ( e x p i r e d a y s = = n u l l )   ?   " "   :   " ; e x p i r e s = " + e x d a t e . t o G M T S t r i n g ( ) )  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   g e t C o o k i e ( c _ n a m e )  
 {  
 i f   ( d o c u m e n t . c o o k i e . l e n g t h > 0 )  
     {  
     c _ s t a r t = d o c u m e n t . c o o k i e . i n d e x O f ( c _ n a m e   +   " = " )  
     i f   ( c _ s t a r t ! = - 1 )  
         {    
         c _ s t a r t = c _ s t a r t   +   c _ n a m e . l e n g t h + 1    
         c _ e n d = d o c u m e n t . c o o k i e . i n d e x O f ( " ; " , c _ s t a r t )  
         i f   ( c _ e n d = = - 1 )   c _ e n d = d o c u m e n t . c o o k i e . l e n g t h  
         r e t u r n   u n e s c a p e ( d o c u m e n t . c o o k i e . s u b s t r i n g ( c _ s t a r t , c _ e n d ) )  
         }    
     }  
 r e t u r n   " "  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   m a k e R e q u e s t ( u r l ,   F u n c ,   M e t h o d ,   P a r a m )   {    
  
       i f   ( w i n d o w . X M L H t t p R e q u e s t )   {    
               r e q   =   n e w   X M L H t t p R e q u e s t ( ) ;    
       }    
       e l s e   i f   ( w i n d o w . A c t i v e X O b j e c t )   {    
               r e q   =   n e w   A c t i v e X O b j e c t ( ' M i c r o s o f t . X M L H T T P ' ) ;    
       }    
  
       / / r e q   =   n e w   X M L H t t p R e q u e s t ( ) ;    
  
       r e q . o n r e a d y s t a t e c h a n g e   =   F u n c ;  
        
       r e q . o p e n ( M e t h o d ,   u r l ,   t r u e ) ;    
       i f (   M e t h o d   = =   ' G E T ' )  
               r e q . s e n d ( n u l l ) ;    
       e l s e  
       {  
 	 	 r e q . s e t R e q u e s t H e a d e r ( " C o n t e n t - t y p e " ,   " a p p l i c a t i o n / x - w w w - f o r m - u r l e n c o d e d " ) ;  
 	 	 r e q . s e t R e q u e s t H e a d e r ( " C o n t e n t - l e n g t h " ,   P a r a m . l e n g t h ) ;  
 	 	 r e q . s e t R e q u e s t H e a d e r ( " C o n n e c t i o n " ,   " c l o s e " ) ;        
        
               r e q . s e n d ( P a r a m ) ;    
         }  
  
 }    
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   e n c r y p t M e s s a g e ( C o d e , M e s s a g e ) {  
         v a r   e d   = n e w   A c t i v e X O b j e c t ( " C A P I C O M . E n c r y p t e d D a t a " )  
         e d . S e t S e c r e t ( c o d e ) ;  
         e d . A l g o r i t h m . N a m e   =   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ D E S ;  
         e d . C o n t e n t = M e s s a g e ;  
         r e t u r n   e d . E n c r y p t ( ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   S i g n M e s s a g e ( M e s s a g e ) {  
         v a r   S i g n   = n e w   A c t i v e X O b j e c t ( " C A P I C O M . S i g n e d D a t a " ) ;  
         v a r   S i g n e r   = n e w   A c t i v e X O b j e c t ( " C A P I C O M . S i g n e r " ) ;  
         S i g n e r . C e r t i f i c a t e   = G e t c e r t i f i c a t e ( )   ;  
         S i g n . C o n t e n t   =   M e s s a g e ;  
         r e t u r n   S i g n . S i g n ( S i g n e r ,   f a l s e ) ;  
  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   C h e c k S i g n ( M e s s a g e , S i g n D A T A ) {  
         v a r   S i g n   = n e w   A c t i v e X O b j e c t ( " C A P I C O M . S i g n e d D a t a " ) ;  
         t r y    
         {  
                 S i g n . V e r i f y   ( S i g n D A T A , f a l s e , C A P I C O M _ V E R I F Y _ S I G N A T U R E _ O N L Y   )  
                 a l e r t ( ' s i g n   i s   O K ' ) ;  
         } c a t c h   ( e x )  
         {  
                 a l e r t ( e x . m e s s a g e ) ;  
         }  
         r e t u r n   ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   d e c r y p t M e s s a g e ( C o d e , M e s s a g e ) {  
         v a r   e d   = n e w   A c t i v e X O b j e c t ( " C A P I C O M . E n c r y p t e d D a t a " )  
         e d . S e t S e c r e t ( C o d e ) ;  
         e d . A l g o r i t h m . N a m e   =   C A P I C O M _ E N C R Y P T I O N _ A L G O R I T H M _ D E S ;  
         e d . D e c r y p t ( M e s s a g e ) ;  
         r e t u r n   e d . C o n t e n t ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   S e l e c t C e r t ( )  
 {  
         v a r   s e l e c t e d C e r t ;  
  
         F i l t e r C e r t i f i c a t e s ( ) ;  
  
         i f   ( F i l t e r e d C e r t i f i c a t e s . C o u n t   >   1 )      
         {              
                 s e l e c t e d C e r t   =   F i l t e r e d C e r t i f i c a t e s . S e l e c t ( ) ;    
                 r e t u r n   s e l e c t e d C e r t . I t e m ( 1 ) ;  
         }            
         e l s e   i f   ( F i l t e r e d C e r t i f i c a t e s . C o u n t   = =   1 )          
         {          
                 s e l e c t e d C e r t   =   F i l t e r e d C e r t i f i c a t e s . I t e m ( 1 ) ;  
                 r e t u r n   s e l e c t e d C e r t ;  
         }  
         e l s e  
         {  
                 a l e r t ( " ! ¯H'GÌ  /Ì,Ì*'D  EH1/  *'&Ì/  Ì'A*  F4/" ) ;  
 	 	 r e t u r n   f a l s e ;  
         }  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
       f u n c t i o n   F i l t e r C e r t i f i c a t e s ( )  
       {  
 	       / /   o p e n   t h e   c u r r e n t   u s e r s   p e r s o n a l   c e r t i f i c a t e   s t o r e  
 	       t r y  
 	       {  
 	       	 M y S t o r e . O p e n ( C A P I C O M _ C U R R E N T _ U S E R _ S T O R E ,   " M y " ,   C A P I C O M _ S T O R E _ O P E N _ R E A D _ O N L Y ) ;  
 	       }  
 	       c a t c h   ( e )  
 	       {  
 	 	 i f   ( e . n u m b e r   ! =   C A P I C O M _ E _ C A N C E L L E D )  
 	 	 {  
 	       	 	 a l e r t ( " A n   e r r o r   o c c u r r e d   w h i l e   o p e n i n g   y o u r   p e r s o n a l   c e r t i f i c a t e   s t o r e ,   a b o r t i n g " ) ;  
 	 	 	 r e t u r n   f a l s e ;  
 	 	 }  
 	       }  
  
 	       / /   f i n d   a l l   o f   t h e   c e r t i f i c a t e s   t h a t :  
 	       / /       *   A r e   t h e y   t i m e   v a l i d  
 	    
 	       F i l t e r e d C e r t i f i c a t e s   =   M y S t o r e . C e r t i f i c a t e s . F i n d ( C A P I C O M _ C E R T I F I C A T E _ F I N D _ T I M E _ V A L I D ) ;  
 	       r e t u r n   F i l t e r e d C e r t i f i c a t e s ;  
     }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   e x p o r t c e r ( )  
 {  
         v a r   o   =   S e l e c t C e r t ( ) ;  
         o ( 1 ) . S a v e ( ' c : \ \ t e s t . c e r ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / U T F 8  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   c h r ( c o d e )  
 {  
 	 r e t u r n   S t r i n g . f r o m C h a r C o d e ( c o d e ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / r e t u r n s   u t f 8   e n c o d e d   c h a r a c h t e r   o f   a   u n i c o d e   v a l u e .  
 / / c o d e   m u s t   b e   a   n u m b e r   i n d i c a t i n g   t h e   U n i c o d e   v a l u e .  
 / / r e t u r n e d   v a l u e   i s   a   s t r i n g   b e t w e e n   1   a n d   4   c h a r a c h t e r s .  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   c o d e 2 u t f ( c o d e )  
 {  
         i f   ( c o d e   = =   1 7 4 0 )   c o d e   =   1 6 1 0 ;  
         i f   ( c o d e   = =   1 6 0 3 )   c o d e   =   1 7 0 5 ;  
 	 i f   ( c o d e   <   1 2 8 )   r e t u r n   c h r ( c o d e ) ;  
 	 i f   ( c o d e   <   2 0 4 8 )   r e t u r n   c h r ( 1 9 2 + ( c o d e > > 6 ) )   +   c h r ( 1 2 8 + ( c o d e & 6 3 ) ) ;  
 	 i f   ( c o d e   <   6 5 5 3 6 )   r e t u r n   c h r ( 2 2 4 + ( c o d e > > 1 2 ) )   +   c h r ( 1 2 8 + ( ( c o d e > > 6 ) & 6 3 ) )   +   c h r ( 1 2 8 + ( c o d e & 6 3 ) ) ;  
 	 i f   ( c o d e   <   2 0 9 7 1 5 2 )   r e t u r n   c h r ( 2 4 0 + ( c o d e > > 1 8 ) )   +   c h r ( 1 2 8 + ( ( c o d e > > 1 2 ) & 6 3 ) )   +   c h r ( 1 2 8 + ( ( c o d e > > 6 ) & 6 3 ) )   +   c h r ( 1 2 8 + ( c o d e & 6 3 ) ) ; 	  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / i t   i s   a   p r i v a t e   f u n c t i o n   f o r   i n t e r n a l   u s e   i n   u t f 8 E n c o d e   f u n c t i o n    
 f u n c t i o n   _ u t f 8 E n c o d e ( s t r )  
 { 	  
 	 v a r   u t f 8 s t r   =   n e w   A r r a y ( ) ;  
 	 f o r   ( v a r   i = 0 ;   i < s t r . l e n g t h ;   i + + )   {  
 	 	 u t f 8 s t r [ i ]   =   c o d e 2 u t f ( s t r . c h a r C o d e A t ( i ) ) ;  
 	 }  
 	 r e t u r n   u t f 8 s t r . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / E n c o d e s   a   u n i c o d e   s t r i n g   t o   U T F 8   f o r m a t .  
 f u n c t i o n   u t f 8 E n c o d e ( s t r )  
 { 	  
 	 v a r   u t f 8 s t r   =   n e w   A r r a y ( ) ;  
 	 v a r   p o s , j   =   0 ;  
 	 v a r   t m p S t r   =   ' ' ;  
 	  
 	 w h i l e   ( ( p o s   =   s t r . s e a r c h ( / [ ^ \ x 0 0 - \ x 7 F ] / ) )   ! =   - 1 )   {  
 	 	 t m p S t r   =   s t r . m a t c h ( / ( [ ^ \ x 0 0 - \ x 7 F ] + [ \ x 0 0 - \ x 7 F ] { 0 , 1 0 } ) + / ) [ 0 ] ;  
 	 	 u t f 8 s t r [ j + + ]   =   s t r . s u b s t r ( 0 ,   p o s ) ;  
 	 	 u t f 8 s t r [ j + + ]   =   _ u t f 8 E n c o d e ( t m p S t r ) ;  
 	 	 s t r   =   s t r . s u b s t r ( p o s   +   t m p S t r . l e n g t h ) ;  
 	 }  
 	  
 	 u t f 8 s t r [ j + + ]   =   s t r ;  
 	 r e t u r n   u t f 8 s t r . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / i t   i s   a   p r i v a t e   f u n c t i o n   f o r   i n t e r n a l   u s e   i n   u t f 8 D e c o d e   f u n c t i o n    
 f u n c t i o n   _ u t f 8 D e c o d e ( u t f 8 s t r )  
 { 	  
 	 v a r   s t r   =   n e w   A r r a y ( ) ;  
 	 v a r   c o d e , c o d e 2 , c o d e 3 , c o d e 4 , j   =   0 ;  
 	 f o r   ( v a r   i = 0 ;   i < u t f 8 s t r . l e n g t h ;   )   {  
 	 	 c o d e   =   u t f 8 s t r . c h a r C o d e A t ( i + + ) ;  
 	 	 i f   ( c o d e   >   1 2 7 )   c o d e 2   =   u t f 8 s t r . c h a r C o d e A t ( i + + ) ;  
 	 	 i f   ( c o d e   >   2 2 3 )   c o d e 3   =   u t f 8 s t r . c h a r C o d e A t ( i + + ) ;  
 	 	 i f   ( c o d e   >   2 3 9 )   c o d e 4   =   u t f 8 s t r . c h a r C o d e A t ( i + + ) ;  
 	 	  
 	 	 i f   ( c o d e   <   1 2 8 )   s t r [ j + + ] =   c h r ( c o d e ) ;  
 	 	 e l s e   i f   ( c o d e   <   2 2 4 )   s t r [ j + + ]   =   c h r ( ( ( c o d e - 1 9 2 ) < < 6 )   +   ( c o d e 2 - 1 2 8 ) ) ;  
 	 	 e l s e   i f   ( c o d e   <   2 4 0 )   s t r [ j + + ]   =   c h r ( ( ( c o d e - 2 2 4 ) < < 1 2 )   +   ( ( c o d e 2 - 1 2 8 ) < < 6 )   +   ( c o d e 3 - 1 2 8 ) ) ;  
 	 	 e l s e   s t r [ j + + ]   =   c h r ( ( ( c o d e - 2 4 0 ) < < 1 8 )   +   ( ( c o d e 2 - 1 2 8 ) < < 1 2 )   +   ( ( c o d e 3 - 1 2 8 ) < < 6 )   +   ( c o d e 4 - 1 2 8 ) ) ;  
 	 }  
 	 r e t u r n   s t r . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / D e c o d e s   a   U T F 8   f o r m a t e d   s t r i n g  
 f u n c t i o n   u t f 8 D e c o d e ( u t f 8 s t r )  
 {  
 	 v a r   s t r   =   n e w   A r r a y ( ) ;  
 	 v a r   p o s   =   0 ;  
 	 v a r   t m p S t r   =   ' ' ;  
 	 v a r   j = 0 ;  
 	 w h i l e   ( ( p o s   =   u t f 8 s t r . s e a r c h ( / [ ^ \ x 0 0 - \ x 7 F ] / ) )   ! =   - 1 )   {  
 	 	 t m p S t r   =   u t f 8 s t r . m a t c h ( / ( [ ^ \ x 0 0 - \ x 7 F ] + [ \ x 0 0 - \ x 7 F ] { 0 , 1 0 } ) + / ) [ 0 ] ;  
 	 	 s t r [ j + + ] =   u t f 8 s t r . s u b s t r ( 0 ,   p o s )   +   _ u t f 8 D e c o d e ( t m p S t r ) ;  
 	 	 u t f 8 s t r   =   u t f 8 s t r . s u b s t r ( p o s   +   t m p S t r . l e n g t h ) ;  
 	 }  
 	  
 	 s t r [ j + + ]   =   u t f 8 s t r ;  
 	 r e t u r n   s t r . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / E n c o d e s   d a t a   t o   B a s e 6 4   f o r m a t  
 f u n c t i o n   b a s e 6 4 E n c o d e ( d a t a ) {  
 	 i f   ( t y p e o f ( b t o a )   = =   ' f u n c t i o n ' )   r e t u r n   b t o a ( d a t a ) ; / / u s e   i n t e r n a l   b a s e 6 4   f u n c t i o n s   i f   a v a i l a b l e   ( g e c k o   o n l y )  
 	 v a r   b 6 4 _ m a p   =   ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + / = ' ;  
 	 v a r   b y t e 1 ,   b y t e 2 ,   b y t e 3 ;  
 	 v a r   c h 1 ,   c h 2 ,   c h 3 ,   c h 4 ;  
 	 v a r   r e s u l t   =   n e w   A r r a y ( ) ;   / / a r r a y   i s   u s e d   i n s t e a d   o f   s t r i n g   b e c a u s e   i n   m o s t   o f   b r o w s e r s   w o r k i n g   w i t h   l a r g e   a r r a y s   i s   f a s t e r   t h a n   w o r k i n g   w i t h   l a r g e   s t r i n g s  
 	 v a r   j = 0 ;  
 	 f o r   ( v a r   i = 0 ;   i < d a t a . l e n g t h ;   i + = 3 )   {  
 	 	 b y t e 1   =   d a t a . c h a r C o d e A t ( i ) ;  
 	 	 b y t e 2   =   d a t a . c h a r C o d e A t ( i + 1 ) ;  
 	 	 b y t e 3   =   d a t a . c h a r C o d e A t ( i + 2 ) ;  
 	 	 c h 1   =   b y t e 1   > >   2 ;  
 	 	 c h 2   =   ( ( b y t e 1   &   3 )   < <   4 )   |   ( b y t e 2   > >   4 ) ;  
 	 	 c h 3   =   ( ( b y t e 2   &   1 5 )   < <   2 )   |   ( b y t e 3   > >   6 ) ;  
 	 	 c h 4   =   b y t e 3   &   6 3 ;  
 	 	  
 	 	 i f   ( i s N a N ( b y t e 2 ) )   {  
 	 	 	 c h 3   =   c h 4   =   6 4 ;  
 	 	 }   e l s e   i f   ( i s N a N ( b y t e 3 ) )   {  
 	 	 	 c h 4   =   6 4 ;  
 	 	 }  
  
 	 	 r e s u l t [ j + + ]   =   b 6 4 _ m a p . c h a r A t ( c h 1 ) + b 6 4 _ m a p . c h a r A t ( c h 2 ) + b 6 4 _ m a p . c h a r A t ( c h 3 ) + b 6 4 _ m a p . c h a r A t ( c h 4 ) ;    
 	 }  
  
 	 r e t u r n   r e s u l t . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 / / D e c o d e s   B a s e 6 4   f o r m a t e d   d a t a  
 f u n c t i o n   b a s e 6 4 D e c o d e ( d a t a ) {  
 	 d a t a   =   d a t a . r e p l a c e ( / [ ^ a - z 0 - 9 \ + \ / = ] / i g ,   ' ' ) ; / /   s t r i p   n o n e   b a s e 6 4   c h a r a c t e r s  
 	 i f   ( t y p e o f ( a t o b )   = =   ' f u n c t i o n ' )   r e t u r n   a t o b ( d a t a ) ; / / u s e   i n t e r n a l   b a s e 6 4   f u n c t i o n s   i f   a v a i l a b l e   ( g e c k o   o n l y )  
 	 v a r   b 6 4 _ m a p   =   ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + / = ' ;  
 	 v a r   b y t e 1 ,   b y t e 2 ,   b y t e 3 ;  
 	 v a r   c h 1 ,   c h 2 ,   c h 3 ,   c h 4 ;  
 	 v a r   r e s u l t   =   n e w   A r r a y ( ) ;   / / a r r a y   i s   u s e d   i n s t e a d   o f   s t r i n g   b e c a u s e   i n   m o s t   o f   b r o w s e r s   w o r k i n g   w i t h   l a r g e   a r r a y s   i s   f a s t e r   t h a n   w o r k i n g   w i t h   l a r g e   s t r i n g s  
 	 v a r   j = 0 ;  
 	 w h i l e   ( ( d a t a . l e n g t h % 4 )   ! =   0 )   {  
 	 	 d a t a   + =   ' = ' ;  
 	 }  
 	  
 	 f o r   ( v a r   i = 0 ;   i < d a t a . l e n g t h ;   i + = 4 )   {  
 	 	 c h 1   =   b 6 4 _ m a p . i n d e x O f ( d a t a . c h a r A t ( i ) ) ;  
 	 	 c h 2   =   b 6 4 _ m a p . i n d e x O f ( d a t a . c h a r A t ( i + 1 ) ) ;  
 	 	 c h 3   =   b 6 4 _ m a p . i n d e x O f ( d a t a . c h a r A t ( i + 2 ) ) ;  
 	 	 c h 4   =   b 6 4 _ m a p . i n d e x O f ( d a t a . c h a r A t ( i + 3 ) ) ;  
  
 	 	 b y t e 1   =   ( c h 1   < <   2 )   |   ( c h 2   > >   4 ) ;  
 	 	 b y t e 2   =   ( ( c h 2   &   1 5 )   < <   4 )   |   ( c h 3   > >   2 ) ;  
 	 	 b y t e 3   =   ( ( c h 3   &   3 )   < <   6 )   |   c h 4 ;  
  
 	 	 r e s u l t [ j + + ]   =   S t r i n g . f r o m C h a r C o d e ( b y t e 1 ) ;  
 	 	 i f   ( c h 3   ! =   6 4 )   r e s u l t [ j + + ]   =   S t r i n g . f r o m C h a r C o d e ( b y t e 2 ) ;  
 	 	 i f   ( c h 4   ! =   6 4 )   r e s u l t [ j + + ]   =   S t r i n g . f r o m C h a r C o d e ( b y t e 3 ) ; 	  
 	 }  
  
 	 r e t u r n   r e s u l t . j o i n ( ' ' ) ;  
 }  
 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
 f u n c t i o n   H a s h ( M e s s a g e )  
 {  
         v a r   s h a   =   n e w   A c t i v e X O b j e c t ( " C A P I C O M . H a s h e d D a t a " ) ;  
         s h a . A l g o r i t h m . N a m e   =   C A P I C O M _ H A S H _ A L G O R I T H M _ S H A 1 ;  
         s h a . H a s h ( b a s e 6 4 E n c o d e ( u t f 8 E n c o d e ( M e s s a g e ) ) ) ;  
         r e t u r n   s h a . V a l u e ;  
 } 
