⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 der_decode_utctime.c

📁 该压缩包中包括 tom的加密函数库及pdf说明 ,以及Rinick s ECC:椭圆曲线非对称加密密钥生成器
💻 C
字号:
/* LibTomCrypt, modular cryptographic library -- Tom St Denis * * LibTomCrypt is a library that provides various cryptographic * algorithms in a highly modular and flexible manner. * * The library is free for all purposes without any express * guarantee it works. * * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org */#include "tomcrypt.h"/**  @file der_decode_utctime.c  ASN.1 DER, decode a  UTCTIME, Tom St Denis*/#ifdef LTC_DERstatic int char_to_int(unsigned char x){   switch (x)  {      case '0': return 0;      case '1': return 1;      case '2': return 2;      case '3': return 3;      case '4': return 4;      case '5': return 5;      case '6': return 6;      case '7': return 7;      case '8': return 8;      case '9': return 9;   }   return 100;}#define DECODE_V(y, max) \   y  = char_to_int(buf[x])*10 + char_to_int(buf[x+1]); \   if (y >= max) return CRYPT_INVALID_PACKET;           \   x += 2;int der_decode_utctime(const unsigned char *in, unsigned long *inlen,                             ltc_utctime   *out){   unsigned char buf[32];   unsigned long x;   int           y;   LTC_ARGCHK(in    != NULL);   LTC_ARGCHK(inlen != NULL);   LTC_ARGCHK(out   != NULL);   /* check header */   if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) {      return CRYPT_INVALID_PACKET;   }   /* decode the string */   for (x = 0; x < in[1]; x++) {       y = der_ia5_value_decode(in[x+2]);       if (y == -1) {          return CRYPT_INVALID_PACKET;       }       buf[x] = y;   }   *inlen = 2 + x;   /* possible encodings are YYMMDDhhmmZYYMMDDhhmm+hh'mm'YYMMDDhhmm-hh'mm'YYMMDDhhmmssZYYMMDDhhmmss+hh'mm'YYMMDDhhmmss-hh'mm'    So let's do a trivial decode upto [including] mm    */    x = 0;    DECODE_V(out->YY, 100);    DECODE_V(out->MM, 13);    DECODE_V(out->DD, 32);    DECODE_V(out->hh, 24);    DECODE_V(out->mm, 60);    /* clear timezone and seconds info */    out->off_dir = out->off_hh = out->off_mm = out->ss = 0;    /* now is it Z, +, - or 0-9 */    if (buf[x] == 'Z') {       return CRYPT_OK;    } else if (buf[x] == '+' || buf[x] == '-') {       out->off_dir = (buf[x++] == '+') ? 0 : 1;       DECODE_V(out->off_hh, 24);       DECODE_V(out->off_mm, 60);       return CRYPT_OK;    }    /* decode seconds */    DECODE_V(out->ss, 60);    /* now is it Z, +, - */    if (buf[x] == 'Z') {       return CRYPT_OK;    } else if (buf[x] == '+' || buf[x] == '-') {       out->off_dir = (buf[x++] == '+') ? 0 : 1;       DECODE_V(out->off_hh, 24);       DECODE_V(out->off_mm, 60);       return CRYPT_OK;    } else {       return CRYPT_INVALID_PACKET;    }}#endif/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c,v $ *//* $Revision: 1.6 $ *//* $Date: 2005/06/19 12:07:00 $ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -