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

📄 der_encode_bit_string.c

📁 这是由Rinick编写的加解密函数库。最近找了不少关于加解密的C源码
💻 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_encode_bit_string.c  ASN.1 DER, encode a BIT STRING, Tom St Denis*/#ifdef LTC_DER/**  Store a BIT STRING  @param in       The array of bits to store (one per char)  @param inlen    The number of bits tostore  @param out      [out] The destination for the DER encoded BIT STRING  @param outlen   [in/out] The max size and resulting size of the DER BIT STRING  @return CRYPT_OK if successful*/int der_encode_bit_string(const unsigned char *in, unsigned long inlen,                                unsigned char *out, unsigned long *outlen){   unsigned long len, x, y, buf;   int           err;   LTC_ARGCHK(in     != NULL);   LTC_ARGCHK(out    != NULL);   LTC_ARGCHK(outlen != NULL);   /* avoid overflows */   if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) {      return err;   }   if (len > *outlen) {      return CRYPT_BUFFER_OVERFLOW;   }   /* store header (include bit padding count in length) */   x = 0;   y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1;   out[x++] = 0x03;   if (y < 128) {      out[x++] = y;   } else if (y < 256) {      out[x++] = 0x81;      out[x++] = y;   } else if (y < 65536) {      out[x++] = 0x82;      out[x++] = (y>>8)&255;      out[x++] = y&255;   }   /* store number of zero padding bits */   out[x++] = (8 - inlen) & 7;   /* store the bits in big endian format */   for (y = buf = 0; y < inlen; y++) {       buf |= (in[y] ? 1 : 0) << (7 - (y & 7));       if ((y & 7) == 7) {          out[x++] = buf;          buf      = 0;       }   }   /* store last byte */   if (inlen & 7) {      out[x++] = buf;   }   *outlen = x;   return CRYPT_OK;}#endif/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c,v $ *//* $Revision: 1.1 $ *//* $Date: 2005/05/16 15:08:11 $ */

⌨️ 快捷键说明

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