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

📄 h235-security-messagesenc.c

📁 一个非常美妙的proxy。功能强大。基于sip的协议。如果还要的话
💻 C
📖 第 1 页 / 共 3 页
字号:
   if (extbit) {      /* encode extension optional bits length */      stat = encodeSmallNonNegWholeNumber (pctxt, 1);      if (stat != ASN_OK) return stat;      /* encode optional bits */      encodeBit (pctxt, (ASN1BOOL)pvalue->m.eckasdhkeyPresent);      encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendersIDPresent);      /* encode extension elements */      if (pvalue->m.eckasdhkeyPresent) {         initContext (&lctxt);         stat = setPERBuffer (&lctxt, 0, 0, TRUE);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = asn1PE_H235ECKASDH (&lctxt, &pvalue->eckasdhkey);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = encodeByteAlign (&lctxt);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);         stat = encodeOpenType (pctxt, openType.numocts, openType.data);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         freeContext (&lctxt);      }      if (pvalue->m.sendersIDPresent) {         initContext (&lctxt);         stat = setPERBuffer (&lctxt, 0, 0, TRUE);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = asn1PE_H235Identifier (&lctxt, pvalue->sendersID);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = encodeByteAlign (&lctxt);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);         stat = encodeOpenType (pctxt, openType.numocts, openType.data);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         freeContext (&lctxt);      }   }   return (stat);}/**************************************************************//*                                                            *//*  IV8                                                       *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue){   static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 };   int stat = ASN_OK;   addSizeConstraint (pctxt, &lsize1);   stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  IV16                                                      *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue){   static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };   int stat = ASN_OK;   addSizeConstraint (pctxt, &lsize1);   stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  Params                                                    *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue){   int stat = ASN_OK;   ASN1BOOL extbit;   ASN1OpenType openType;   OOCTXT lctxt;   /* extension bit */   extbit = (ASN1BOOL)(pvalue->m.iv16Present);   encodeBit (pctxt, extbit);   encodeBit (pctxt, (ASN1BOOL)pvalue->m.ranIntPresent);   encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv8Present);   /* encode ranInt */   if (pvalue->m.ranIntPresent) {      stat = encodeUnconsInteger (pctxt, pvalue->ranInt);      if (stat != ASN_OK) return stat;   }   /* encode iv8 */   if (pvalue->m.iv8Present) {      stat = asn1PE_H235IV8 (pctxt, &pvalue->iv8);      if (stat != ASN_OK) return stat;   }   if (extbit) {      /* encode extension optional bits length */      stat = encodeSmallNonNegWholeNumber (pctxt, 0);      if (stat != ASN_OK) return stat;      /* encode optional bits */      encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv16Present);      /* encode extension elements */      if (pvalue->m.iv16Present) {         initContext (&lctxt);         stat = setPERBuffer (&lctxt, 0, 0, TRUE);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = asn1PE_H235IV16 (&lctxt, &pvalue->iv16);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         stat = encodeByteAlign (&lctxt);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);         stat = encodeOpenType (pctxt, openType.numocts, openType.data);         if (stat != ASN_OK) return freeContext (&lctxt), stat;         freeContext (&lctxt);      }   }   return (stat);}/**************************************************************//*                                                            *//*  ENCRYPTED                                                 *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue){   int stat = ASN_OK;   /* encode algorithmOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   /* encode paramS */   stat = asn1PE_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   /* encode encryptedData */   stat = encodeOctetString (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoEncryptedToken                          *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue){   int stat = ASN_OK;   /* encode tokenOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   /* encode token */   stat = asn1PE_H235ENCRYPTED (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  EncodedGeneralToken                                       *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value){   int stat = ASN_OK;   stat = encodeOpenType (pctxt, value.numocts, value.data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoSignedToken_token                       *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue){   int stat = ASN_OK;   /* encode toBeSigned */   stat = asn1PE_H235EncodedGeneralToken (pctxt, pvalue->toBeSigned);   if (stat != ASN_OK) return stat;   /* encode algorithmOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   /* encode paramS */   stat = asn1PE_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   /* encode signature */   stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoSignedToken                             *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue){   int stat = ASN_OK;   /* encode tokenOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   /* encode token */   stat = asn1PE_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  HASHED                                                    *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue){   int stat = ASN_OK;   /* encode algorithmOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   /* encode paramS */   stat = asn1PE_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   /* encode hash */   stat = encodeBitString (pctxt, pvalue->hash.numbits, pvalue->hash.data);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoHashedToken                             *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue){   int stat = ASN_OK;   /* encode tokenOID */   stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   /* encode hashedVals */   stat = asn1PE_H235ClearToken (pctxt, &pvalue->hashedVals);   if (stat != ASN_OK) return stat;   /* encode token */   stat = asn1PE_H235HASHED (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken                                               *//*                                                            *//**************************************************************/EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue){   int stat = ASN_OK;   ASN1BOOL extbit;   /* extension bit */   extbit = (ASN1BOOL)(pvalue->t > 4);   encodeBit (pctxt, extbit);   if (!extbit) {      /* Encode choice index value */      stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);      if (stat != ASN_OK) return stat;      /* Encode root element data value */      switch (pvalue->t)      {         /* cryptoEncryptedToken */         case 1:            stat = asn1PE_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);            if (stat != ASN_OK) return stat;            break;         /* cryptoSignedToken */         case 2:            stat = asn1PE_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);            if (stat != ASN_OK) return stat;            break;         /* cryptoHashedToken */         case 3:            stat = asn1PE_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);            if (stat != ASN_OK) return stat;            break;         /* cryptoPwdEncr */         case 4:            stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);            if (stat != ASN_OK) return stat;            break;         default:            return ASN_E_INVOPT;      }   }   else {      /* Encode extension choice index value */      stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);      if (stat != ASN_OK) return stat;      /* Encode extension element data value */   }   return (stat);}

⌨️ 快捷键说明

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