#include <stdio.h>
#include "CrC_User.h"

/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜDEFINES*/
/*ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßR34_10_2001_gen_secret_key*/
int CrypC_LR34_10_2001_gen_secret_key(struct LR34_10_2001 *Context)
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
/*            ëà ¡®âª  š ãáâ ­®¢ª  á«ãç ©­®£® á¥ªà¥â­®£® ª«îç                */
/*                  ¢ ª®­â¥ªáâ ®¡à ¡®âªš æšäà®¢®© ¯®€¯šáš                     */
/*                             3410-2001                                 */
/* å®€­ë¥ ¯ à ¬¥âàë:                                                         */
/* - ª § â¥«ì ­  ¡ãä¥à ª®­â¥ªáâ : *Context (áâàãªâãà ).                      */
/* ëå®€:                                                                     */
/* - ®­â¥ªáâ, £®â®¢ë© ª ¢ëçšá«¥­šî æšäà®¢®© ¯®€¯šáš.                         */
/* ®€ë ¢®§¢à â :                                                             */
/* - RET_OK                - ­®à¬ «ì­®¥ § ¢¥àè¥­š¥.                           */
/* - RET_INCORRECTCONTEXT  - ¯¥à¥€ ­ š­šæš «š§šà®¢ ­­ë© ª®­â¥ªáâ €à. à¥Šš¬ .  */
/* - RET_CONTEXTNOREADY    - ­¥ š­šæš «š§šà®¢ ­ë ¯ à ¬¥âàë ¯®€¯šáš.           */
/* - RET_KEYALREADYPRESENT - ãŠ¥ ãáâ ­®¢«¥­ á¥ªà¥â­ë© ª«îç.                   */
/* - RET_INVALIDPARAMETER  - ­ã«¥¢®© ãª § â¥«ì ­  ®¡ï§ â¥«ì­ë© ¯ à ¬¥âà.      */
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
{
         int  i,Ret;

     if(! Context)
  Ret = RET_INVALIDPARAMETER;
else
if((Context->Mark     & GOST_XXXXX_Marker_Mask ==
    R34_10_2001_Marker & GOST_XXXXX_Marker_Mask   ) &&
   (Context->Mark                                  !=
    R34_10_2001_Marker                            )   )
  Ret = RET_INCORRECTCONTEXT;
else if(!(Context->IsReady &  R34_10_2001_CONTEXT                         ))
  Ret = RET_CONTEXTNOTREADY;
else if(  Context->IsReady & (R34_10_2001_SECRETKEY ^ R34_10_2001_PUBLICKEY))
  Ret = RET_KEYALREADYPRESENT;
else  
  {
  /* ¥­¥à æšï á«ãç ©­®£® ª«îç . */
  CrypC_Gen_SecretKey_(Context->RS, Context->SecretKey, 1);
  /* Network to Host Byteorder. */
  CrypC_NetToHost(Context->SecretKey,(Context->Q_Size/4));

  /*  áªšà®¢ ­š¥ ª«îç . */
  CrypC_Mask_SecretKey_(Context->RS, Context->SecretKey);
    
  Context->IsReady |= R34_10_2001_SECRETKEY;
  Ret = RET_OK;
  }
return(Ret);
}
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜR34_10_2001_gen_secret_key*/
/*ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßEOF*/
