亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? r_enhanc.c

?? 一個測試DES加密算法和測試程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
     context->bufferLen = partInLen);

  return (0);
}

/* Assume partOut buffer is at least 8 bytes.
 */
int R_SealFinal (context, partOut, partOutLen)
R_ENVELOPE_CTX *context;                                         /* context */
unsigned char *partOut;                         /* last encrypted data part */
unsigned int *partOutLen;             /* length of last encrypted data part */
{
  unsigned int padLen;

  /* Pad and encrypt final block.
   */
  padLen = 8 - context->bufferLen;
  R_memset
    ((POINTER)(context->buffer + context->bufferLen), (int)padLen, padLen);
  CipherUpdate (context, partOut, context->buffer, 8);
  *partOutLen = 8;

  /* Restart the context.
   */
  CipherRestart (context);
  context->bufferLen = 0;

  return (0);
}

/* Assume caller has already ASCII decoded the encryptedKey if necessary.
 */
int R_OpenInit
  (context, encryptionAlgorithm, encryptedKey, encryptedKeyLen, iv, privateKey)
R_ENVELOPE_CTX *context;                                     /* new context */
int encryptionAlgorithm;                       /* data encryption algorithm */
unsigned char *encryptedKey;               /* encrypted data encryption key */
unsigned int encryptedKeyLen;                    /* length of encrypted key */
unsigned char iv[8];                               /* initialization vector */
R_RSA_PRIVATE_KEY *privateKey;               /* recipient's RSA private key */
{
  int status;
  unsigned char key[MAX_ENCRYPTED_KEY_LEN];
  unsigned int keyLen;
  
  if (encryptedKeyLen > MAX_ENCRYPTED_KEY_LEN)
    return (RE_LEN);
  
  do {
    context->encryptionAlgorithm = encryptionAlgorithm;

    if (RSAPrivateDecrypt
        (key, &keyLen, encryptedKey, encryptedKeyLen, privateKey)) {
      status = RE_PRIVATE_KEY;
      break;
    }

    if (encryptionAlgorithm == EA_DES_CBC) {    
      if (keyLen != 8) {
        status = RE_PRIVATE_KEY;
        break;
      }
    }
    else {
      if (keyLen != 24) {
        status = RE_PRIVATE_KEY;
        break;
      }
    }
    
    if ((status = CipherInit (context, encryptionAlgorithm, key, iv, 0)) != 0)
      break;

    context->bufferLen = 0;
  } while (0);
  
  /* Zeroize sensitive information.
   */
  R_memset ((POINTER)key, 0, sizeof (key));

  return (status);
}

/* Assume partOut buffer is at least partInLen + 7, since this may flush
     buffered input. Always leaves at least one byte in buffer.
 */
int R_OpenUpdate (context, partOut, partOutLen, partIn, partInLen)
R_ENVELOPE_CTX *context;                                         /* context */
unsigned char *partOut;                         /* next recovered data part */
unsigned int *partOutLen;             /* length of next recovered data part */
unsigned char *partIn;                          /* next encrypted data part */
unsigned int partInLen;               /* length of next encrypted data part */
{
  unsigned int tempLen;

  tempLen = 8 - context->bufferLen;
  if (partInLen <= tempLen) {
    /* Just accumulate into buffer.
     */
    R_memcpy
      ((POINTER)(context->buffer + context->bufferLen), (POINTER)partIn,
       partInLen);
    context->bufferLen += partInLen;
    *partOutLen = 0;
    return (0);
  }

  /* Fill the buffer and decrypt.  We know that there will be more left
       in partIn after decrypting the buffer.
   */
  R_memcpy
    ((POINTER)(context->buffer + context->bufferLen), (POINTER)partIn,
     tempLen);
  CipherUpdate (context, partOut, context->buffer, 8);
  partIn += tempLen;
  partInLen -= tempLen;
  partOut += 8;
  *partOutLen = 8;

  /* Decrypt as many 8 byte blocks as possible, leaving at least one byte
       in partIn.
   */
  tempLen = 8 * ((partInLen - 1) / 8);
  CipherUpdate (context, partOut, partIn, tempLen);
  partIn += tempLen;
  partInLen -= tempLen;
  *partOutLen += tempLen;

  /* Length is between 1 and 8, so copy into buffer.
   */
  R_memcpy
    ((POINTER)context->buffer, (POINTER)partIn,
     context->bufferLen = partInLen);

  return (0);
}

/* Assume partOut buffer is at least 7 bytes.
 */
int R_OpenFinal (context, partOut, partOutLen)
R_ENVELOPE_CTX *context;                                         /* context */
unsigned char *partOut;                         /* last recovered data part */
unsigned int *partOutLen;             /* length of last recovered data part */
{
  int status;
  unsigned char lastPart[8];
  unsigned int padLen;

  status = 0;
  do {
    if (context->bufferLen == 0)
      /* There was no input data to decrypt */
      *partOutLen = 0;
    else {
      if (context->bufferLen != 8) {
        status = RE_KEY;
        break;
      }

      /* Decrypt and strip padding from final block which is in buffer.
       */
      CipherUpdate (context, lastPart, context->buffer, 8);
    
      padLen = lastPart[7];
      if (padLen == 0 || padLen > 8) {
        status = RE_KEY;
        break;
      }
      if (R_memcmp 
          ((POINTER)&lastPart[8 - padLen], PADDING[padLen], padLen) != 0) {
        status = RE_KEY;
        break;
      }
      
      R_memcpy ((POINTER)partOut, (POINTER)lastPart, *partOutLen = 8 - padLen);
    }

    /* Restart the context.
     */
    CipherRestart (context);
    context->bufferLen = 0;
  } while (0);

  /* Zeroize sensitive information.
   */
  R_memset ((POINTER)lastPart, 0, sizeof (lastPart));

  return (status);
}

int R_SignPEMBlock 
  (encodedContent, encodedContentLen, encodedSignature, encodedSignatureLen,
   content, contentLen, recode, digestAlgorithm, privateKey)
unsigned char *encodedContent;                           /* encoded content */
unsigned int *encodedContentLen;               /* length of encoded content */
unsigned char *encodedSignature;                       /* encoded signature */
unsigned int *encodedSignatureLen;           /* length of encoded signature */
unsigned char *content;                                          /* content */
unsigned int contentLen;                               /* length of content */
int recode;                                                /* recoding flag */
int digestAlgorithm;                            /* message-digest algorithm */
R_RSA_PRIVATE_KEY *privateKey;                  /* signer's RSA private key */
{
  int status;
  unsigned char signature[MAX_SIGNATURE_LEN];
  unsigned int signatureLen;
  
  if ((status = R_SignBlock
       (signature, &signatureLen, content, contentLen, digestAlgorithm,
        privateKey)) != 0)
    return (status);

  R_EncodePEMBlock 
    (encodedSignature, encodedSignatureLen, signature, signatureLen);

  if (recode)
    R_EncodePEMBlock
    (encodedContent, encodedContentLen, content, contentLen);

  return (0);
}

int R_SignBlock
  (signature, signatureLen, block, blockLen, digestAlgorithm, privateKey)
unsigned char *signature;                                      /* signature */
unsigned int *signatureLen;                          /* length of signature */
unsigned char *block;                                              /* block */
unsigned int blockLen;                                   /* length of block */
int digestAlgorithm;                            /* message-digest algorithm */
R_RSA_PRIVATE_KEY *privateKey;                  /* signer's RSA private key */
{
  R_SIGNATURE_CTX context;
  int status;

  do {
    if ((status = R_SignInit (&context, digestAlgorithm)) != 0)
      break;
    if ((status = R_SignUpdate (&context, block, blockLen)) != 0)
      break;
    if ((status = R_SignFinal (&context, signature, signatureLen, privateKey))
        != 0)
      break;
  } while (0);

  /* Zeroize sensitive information. */
  R_memset ((POINTER)&context, 0, sizeof (context));

  return (status);
}

int R_VerifyPEMSignature 
  (content, contentLen, encodedContent, encodedContentLen, encodedSignature,
   encodedSignatureLen, recode, digestAlgorithm, publicKey)
unsigned char *content;                                          /* content */
unsigned int *contentLen;                              /* length of content */
unsigned char *encodedContent;                /* (possibly) encoded content */
unsigned int encodedContentLen;                /* length of encoded content */
unsigned char *encodedSignature;                       /* encoded signature */
unsigned int encodedSignatureLen;            /* length of encoded signature */
int recode;                                                /* recoding flag */
int digestAlgorithm;                            /* message-digest algorithm */
R_RSA_PUBLIC_KEY *publicKey;                     /* signer's RSA public key */
{
  unsigned char signature[MAX_SIGNATURE_LEN];
  unsigned int signatureLen;
  
  if (encodedSignatureLen > MAX_PEM_SIGNATURE_LEN)
    return (RE_SIGNATURE_ENCODING);
  
  if (recode) {
    if (R_DecodePEMBlock
        (content, contentLen, encodedContent, encodedContentLen))
      return (RE_CONTENT_ENCODING);
  }
  else {
    content = encodedContent;
    *contentLen = encodedContentLen;
  }
    
  if (R_DecodePEMBlock
      (signature, &signatureLen, encodedSignature, encodedSignatureLen))
    return (RE_SIGNATURE_ENCODING);
  
  return (R_VerifyBlockSignature 
          (content, *contentLen, signature, signatureLen, digestAlgorithm,
           publicKey));
}

int R_VerifyBlockSignature 
  (block, blockLen, signature, signatureLen, digestAlgorithm, publicKey)
unsigned char *block;                                              /* block */
unsigned int blockLen;                                   /* length of block */
unsigned char *signature;                                      /* signature */
unsigned int signatureLen;                           /* length of signature */
int digestAlgorithm;                            /* message-digest algorithm */
R_RSA_PUBLIC_KEY *publicKey;                     /* signer's RSA public key */
{
  R_SIGNATURE_CTX context;
  int status;

  do {
    if ((status = R_VerifyInit (&context, digestAlgorithm)) != 0)
      break;
    if ((status = R_VerifyUpdate (&context, block, blockLen)) != 0)
      break;
    if ((status = R_VerifyFinal (&context, signature, signatureLen, publicKey))
        != 0)
      break;
  } while (0);

  /* Zeroize sensitive information. */
  R_memset ((POINTER)&context, 0, sizeof (context));

  return (status);
}

int R_SealPEMBlock 
  (encryptedContent, encryptedContentLen, encryptedKey, encryptedKeyLen,
   encryptedSignature, encryptedSignatureLen, iv, content, contentLen,
   digestAlgorithm, publicKey, privateKey, randomStruct)
unsigned char *encryptedContent;              /* encoded, encrypted content */
unsigned int *encryptedContentLen;                                /* length */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉加勒比综合久久| 日韩美女视频一区二区| 成人av在线资源| 亚洲18色成人| 亚洲视频综合在线| 亚洲精品一区二区在线观看| 色婷婷av一区二区三区软件| 久久99精品国产.久久久久久| 亚洲欧美日韩小说| 日本一区二区三区免费乱视频| 欧美色综合天天久久综合精品| 国产69精品久久777的优势| 亚洲妇女屁股眼交7| 亚洲日本电影在线| 国产女主播视频一区二区| 欧美一区二区女人| 欧美又粗又大又爽| 91亚洲精品一区二区乱码| 精品一二三四在线| 日本在线不卡视频| 亚洲电影一级黄| 一区二区三区四区在线播放| 中文成人av在线| 久久久久久**毛片大全| 欧美一级片免费看| 欧美美女喷水视频| 欧美三区免费完整视频在线观看| 成人教育av在线| 大尺度一区二区| 国产成人免费视频精品含羞草妖精| 日韩成人免费电影| 日韩不卡在线观看日韩不卡视频| 亚洲国产cao| 亚洲一区免费在线观看| 亚洲精品少妇30p| 亚洲视频 欧洲视频| 国产精品久久久久久久裸模| 久久久99免费| 国产视频一区二区在线观看| 久久一区二区视频| 久久久99久久| 中文字幕乱码亚洲精品一区| 久久欧美一区二区| 欧美国产乱子伦| 亚洲人快播电影网| 亚洲另类春色国产| 亚洲成人免费影院| 视频一区视频二区中文字幕| 日韩电影在线看| 国模冰冰炮一区二区| 国产美女在线观看一区| 国产精品99久| 不卡av在线免费观看| www.日本不卡| 欧美中文一区二区三区| 欧美欧美欧美欧美首页| 日韩精品一区二区三区视频在线观看 | 亚洲福利一区二区| 日韩在线一区二区三区| 精品夜夜嗨av一区二区三区| 国产**成人网毛片九色 | 欧美中文字幕一区二区三区 | 中文字幕在线观看一区二区| 亚洲人xxxx| 五月婷婷久久丁香| 久久99精品久久久久久动态图| 国产美女一区二区| 一本在线高清不卡dvd| 欧美欧美午夜aⅴ在线观看| 精品成人一区二区三区四区| 亚洲欧洲精品天堂一级| 亚洲成人午夜影院| 国产高清精品网站| 色88888久久久久久影院野外| 欧美另类z0zxhd电影| 精品国产123| 亚洲图片你懂的| 日韩经典一区二区| 成人av手机在线观看| 欧美日韩精品福利| 久久久国产一区二区三区四区小说 | 国产精品美女久久久久久久| 一区二区三区中文字幕| 美腿丝袜在线亚洲一区| 国产91高潮流白浆在线麻豆 | 日韩欧美国产一区二区三区| 国产欧美精品一区| 日韩高清在线观看| 99麻豆久久久国产精品免费| 91麻豆精品国产自产在线观看一区 | 99riav久久精品riav| 欧美精品久久99| 国产精品麻豆网站| 免费观看久久久4p| 日本高清不卡视频| 久久久久久麻豆| 日韩综合小视频| 91丨九色丨蝌蚪富婆spa| 精品久久人人做人人爱| 亚洲线精品一区二区三区| 国产精品一区二区久久不卡 | 精品国产网站在线观看| 亚洲一级片在线观看| 国产精品888| 欧美一区二区视频网站| 亚洲精品乱码久久久久久日本蜜臀| 精品一区二区在线免费观看| 欧美天堂一区二区三区| 国产精品成人免费| 久国产精品韩国三级视频| 在线播放中文一区| 一区二区三区在线观看国产| 国产电影一区在线| 精品国产精品一区二区夜夜嗨| 亚洲地区一二三色| 91丨九色丨蝌蚪富婆spa| 国产精品视频线看| 国产精品一品二品| 欧美精品一区二区蜜臀亚洲| 日韩国产欧美三级| 欧美日韩一本到| 亚洲一卡二卡三卡四卡| 日本黄色一区二区| 国产精品家庭影院| 成人免费高清在线| 国产人成一区二区三区影院| 美女看a上一区| 日韩亚洲欧美成人一区| 欧美aaaaaa午夜精品| 亚洲午夜久久久| 色噜噜狠狠色综合中国| 亚洲精品高清在线| 91捆绑美女网站| 亚洲免费观看高清完整版在线观看| 成人手机电影网| 国产精品麻豆欧美日韩ww| 国产在线一区观看| 久久精品视频免费| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品一区二区三区香蕉| 九九久久精品视频| 精品少妇一区二区三区视频免付费 | 国产精品色呦呦| 成人免费视频caoporn| 国产精品毛片大码女人| 色偷偷久久一区二区三区| 一区二区三区色| 欧美日韩中文国产| 日韩电影在线一区二区三区| 日韩欧美亚洲国产另类| 国产一区二区看久久| 久久精品人人做人人综合 | 日本一区二区三区电影| 精品一区二区三区的国产在线播放| 日韩一卡二卡三卡四卡| 激情欧美一区二区| 日本一区二区在线不卡| 91一区二区在线| 午夜av一区二区三区| 亚洲精品一区二区三区影院 | 日本va欧美va精品发布| 久久嫩草精品久久久久| 高清av一区二区| 一区二区三区日韩欧美精品| 欧美日韩国产高清一区| 国产一区二区视频在线| 中文字幕亚洲一区二区av在线| 91高清在线观看| 美女国产一区二区| 国产精品国产精品国产专区不蜜| 欧美亚洲综合在线| 韩国视频一区二区| 亚洲欧美另类小说视频| 91精品国产免费| 成人黄色电影在线 | 日韩电影在线一区| 亚洲国产精品ⅴa在线观看| 欧美日韩一级二级三级| 国产激情一区二区三区| 亚洲午夜私人影院| 久久精品视频在线免费观看| 91视频在线看| 久久99久久精品| 亚洲一区二区3| 国产午夜亚洲精品午夜鲁丝片| 一本久久综合亚洲鲁鲁五月天| 午夜成人在线视频| 日韩美女精品在线| 久久午夜羞羞影院免费观看| 日本韩国精品在线| 国产精品亚洲视频| 奇米影视一区二区三区| 日韩久久一区二区| 久久久亚洲精品石原莉奈 | 精品国内二区三区| 在线一区二区三区四区五区| 国产精品一区二区在线播放 | 久久成人综合网| 一区二区三区在线免费观看| 中文字幕精品一区二区三区精品|