LCOV - code coverage report
Current view: top level - home/mbr/git/openssl.git/engines/ccgost - gost_ctl.c (source / functions) Hit Total Coverage
Test: lcov_coverage_final.info Lines: 20 27 74.1 %
Date: 2014-08-02 Functions: 4 4 100.0 %
Branches: 10 20 50.0 %

           Branch data     Line data    Source code
       1                 :            : /**********************************************************************
       2                 :            :  *                        gost_ctl.c                                  *
       3                 :            :  *             Copyright (c) 2005-2006 Cryptocom LTD                  *
       4                 :            :  *       This file is distributed under the same license as OpenSSL   *
       5                 :            :  *                                                                    *
       6                 :            :  *        Implementation of control commands for GOST engine          *
       7                 :            :  *            OpenSSL 0.9.9 libraries required                        *
       8                 :            :  **********************************************************************/            
       9                 :            : #include <stdlib.h>
      10                 :            : #include <string.h>
      11                 :            : #include <openssl/crypto.h>
      12                 :            : #include <openssl/err.h>
      13                 :            : #include <openssl/engine.h>
      14                 :            : #include <openssl/buffer.h>
      15                 :            : #include "gost_lcl.h"
      16                 :            : 
      17                 :            : static char *gost_params[GOST_PARAM_MAX+1]={NULL};
      18                 :            : static const char *gost_envnames[]={"CRYPT_PARAMS"};
      19                 :            : const ENGINE_CMD_DEFN gost_cmds[]=
      20                 :            :         {
      21                 :            : /*      { GOST_CTRL_RNG,
      22                 :            :         "RNG",
      23                 :            :         "Type of random number generator to use",
      24                 :            :         ENGINE_CMD_FLAG_STRING
      25                 :            :         },
      26                 :            :         { GOST_CTRL_RNG_PARAMS,
      27                 :            :         "RNG_PARAMS",
      28                 :            :         "Parameter for random number generator",
      29                 :            :         ENGINE_CMD_FLAG_STRING
      30                 :            :         },
      31                 :            : */        { GOST_CTRL_CRYPT_PARAMS,
      32                 :            :                 "CRYPT_PARAMS",
      33                 :            :                 "OID of default GOST 28147-89 parameters",
      34                 :            :                 ENGINE_CMD_FLAG_STRING
      35                 :            :                         },
      36                 :            : {0,NULL,NULL,0}
      37                 :            :         };
      38                 :            : 
      39                 :        727 : void gost_param_free() 
      40                 :            : {
      41                 :            :         int i;
      42         [ +  + ]:       1454 :         for (i=0;i<=GOST_PARAM_MAX;i++) 
      43         [ -  + ]:        727 :                 if (gost_params[i]!=NULL) 
      44                 :            :                         {
      45                 :          0 :                         OPENSSL_free(gost_params[i]);
      46                 :          0 :                         gost_params[i]=NULL;
      47                 :            :                         }
      48                 :            :                 
      49                 :        727 : }
      50                 :            : 
      51                 :         17 : int gost_control_func(ENGINE *e,int cmd,long i, void *p, void (*f)(void))
      52                 :            :         {
      53                 :         17 :         int param = cmd-ENGINE_CMD_BASE;
      54                 :         17 :         int ret=0;
      55         [ +  - ]:         17 :         if (param <0 || param >GOST_PARAM_MAX) return -1;
      56                 :         17 :         ret=gost_set_default_param(param,p);
      57                 :         17 :         return ret;
      58                 :            :         }
      59                 :            : 
      60                 :          5 : const char *get_gost_engine_param(int param) 
      61                 :            :         {
      62                 :            :         char *tmp;
      63         [ +  - ]:          5 :         if (param <0 || param >GOST_PARAM_MAX) return NULL;
      64         [ -  + ]:          5 :         if (gost_params[param]!=NULL) 
      65                 :            :                 {
      66                 :            :                 return gost_params[param];
      67                 :            :                 }
      68                 :          0 :         tmp = getenv(gost_envnames[param]);
      69         [ #  # ]:          0 :         if (tmp) 
      70                 :            :                 {
      71         [ #  # ]:          0 :                 if (gost_params[param]) OPENSSL_free(gost_params[param]);
      72                 :          0 :                 gost_params[param] = BUF_strdup(tmp);
      73                 :          0 :                 return gost_params[param];
      74                 :            :                 }       
      75                 :            :         return NULL;
      76                 :            :         }       
      77                 :            : 
      78                 :         17 : int gost_set_default_param(int param, const char *value) 
      79                 :            :         {
      80                 :            :         const char *tmp;
      81         [ +  - ]:         17 :         if (param <0 || param >GOST_PARAM_MAX) return 0;
      82                 :         17 :         tmp = getenv(gost_envnames[param]);
      83                 :            :         /* if there is value in the environment, use it, else -passed string * */
      84         [ +  - ]:         17 :         if (!tmp) tmp=value;
      85         [ +  + ]:         17 :         if (gost_params[param]) OPENSSL_free(gost_params[param]);
      86                 :         17 :         gost_params[param] = BUF_strdup(tmp);
      87                 :            : 
      88                 :         17 :         return 1;
      89                 :            :         }       

Generated by: LCOV version 1.9