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

📄 h235-security-messagesdec.c

📁 一个非常美妙的proxy。功能强大。基于sip的协议。如果还要的话
💻 C
📖 第 1 页 / 共 4 页
字号:
   memset (&pvalue->m, 0, sizeof(pvalue->m));   DECODEBIT (pctxt, &optbit);   pvalue->m.ranIntPresent = optbit;   DECODEBIT (pctxt, &optbit);   pvalue->m.iv8Present = optbit;   /* decode ranInt */   if (pvalue->m.ranIntPresent) {      invokeStartElement (pctxt, "ranInt", -1);      stat = decodeUnconsInteger (pctxt, &pvalue->ranInt);      if (stat != ASN_OK) return stat;      invokeIntValue (pctxt, pvalue->ranInt);      invokeEndElement (pctxt, "ranInt", -1);   }   /* decode iv8 */   if (pvalue->m.iv8Present) {      invokeStartElement (pctxt, "iv8", -1);      stat = asn1PD_H235IV8 (pctxt, &pvalue->iv8);      if (stat != ASN_OK) return stat;      invokeEndElement (pctxt, "iv8", -1);   }   if (extbit) {      /* decode extension optional bits length */      stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);      if (stat != ASN_OK) return stat;      bitcnt += 1;      ZEROCONTEXT (&lctxt);      stat = setPERBufferUsingCtxt (&lctxt, pctxt);      if (stat != ASN_OK) return stat;      stat = moveBitCursor (pctxt, bitcnt);      if (stat != ASN_OK) return stat;      for (i = 0; i < bitcnt; i++) {         DECODEBIT (&lctxt, &optbit);         if (optbit) {            stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);            if (stat != ASN_OK) return stat;            if (i < 1 && openType.numocts > 0) {  /* known element */               copyContext (&lctxt2, pctxt);               initContextBuffer (pctxt, openType.data, openType.numocts);               switch (i) {                  case 0:                     pvalue->m.iv16Present = 1;                     invokeStartElement (pctxt, "iv16", -1);                     stat = asn1PD_H235IV16 (pctxt, &pvalue->iv16);                     if (stat != ASN_OK) return stat;                     invokeEndElement (pctxt, "iv16", -1);                     break;                  default:                     pctxt->buffer.byteIndex += openType.numocts;               }               copyContext (pctxt, &lctxt2);            }            else {  /* unknown element */               pctxt->buffer.byteIndex += openType.numocts;            }         }      }   }   return (stat);}/**************************************************************//*                                                            *//*  ENCRYPTED                                                 *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue){   int stat = ASN_OK;   /* decode algorithmOID */   invokeStartElement (pctxt, "algorithmOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);   invokeEndElement (pctxt, "algorithmOID", -1);   /* decode paramS */   invokeStartElement (pctxt, "paramS", -1);   stat = asn1PD_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "paramS", -1);   /* decode encryptedData */   invokeStartElement (pctxt, "encryptedData", -1);   stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->encryptedData);   if (stat != ASN_OK) return stat;   invokeOctStrValue (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);   invokeEndElement (pctxt, "encryptedData", -1);   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoEncryptedToken                          *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue){   int stat = ASN_OK;   /* decode tokenOID */   invokeStartElement (pctxt, "tokenOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);   invokeEndElement (pctxt, "tokenOID", -1);   /* decode token */   invokeStartElement (pctxt, "token", -1);   stat = asn1PD_H235ENCRYPTED (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "token", -1);   return (stat);}/**************************************************************//*                                                            *//*  EncodedGeneralToken                                       *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue){   int stat = ASN_OK;   stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);   if (stat != ASN_OK) return stat;   invokeOpenTypeValue      (pctxt, pvalue->numocts, pvalue->data);   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoSignedToken_token                       *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue){   int stat = ASN_OK;   /* decode toBeSigned */   invokeStartElement (pctxt, "toBeSigned", -1);   stat = asn1PD_H235EncodedGeneralToken (pctxt, &pvalue->toBeSigned);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "toBeSigned", -1);   /* decode algorithmOID */   invokeStartElement (pctxt, "algorithmOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);   invokeEndElement (pctxt, "algorithmOID", -1);   /* decode paramS */   invokeStartElement (pctxt, "paramS", -1);   stat = asn1PD_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "paramS", -1);   /* decode signature */   invokeStartElement (pctxt, "signature", -1);   stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);   if (stat != ASN_OK) return stat;   invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);   invokeEndElement (pctxt, "signature", -1);   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoSignedToken                             *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue){   int stat = ASN_OK;   /* decode tokenOID */   invokeStartElement (pctxt, "tokenOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);   invokeEndElement (pctxt, "tokenOID", -1);   /* decode token */   invokeStartElement (pctxt, "token", -1);   stat = asn1PD_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "token", -1);   return (stat);}/**************************************************************//*                                                            *//*  HASHED                                                    *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue){   int stat = ASN_OK;   /* decode algorithmOID */   invokeStartElement (pctxt, "algorithmOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);   invokeEndElement (pctxt, "algorithmOID", -1);   /* decode paramS */   invokeStartElement (pctxt, "paramS", -1);   stat = asn1PD_H235Params (pctxt, &pvalue->paramS);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "paramS", -1);   /* decode hash */   invokeStartElement (pctxt, "hash", -1);   stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->hash);   if (stat != ASN_OK) return stat;   invokeBitStrValue (pctxt, pvalue->hash.numbits, pvalue->hash.data);   invokeEndElement (pctxt, "hash", -1);   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken_cryptoHashedToken                             *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue){   int stat = ASN_OK;   /* decode tokenOID */   invokeStartElement (pctxt, "tokenOID", -1);   stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);   if (stat != ASN_OK) return stat;   invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);   invokeEndElement (pctxt, "tokenOID", -1);   /* decode hashedVals */   invokeStartElement (pctxt, "hashedVals", -1);   stat = asn1PD_H235ClearToken (pctxt, &pvalue->hashedVals);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "hashedVals", -1);   /* decode token */   invokeStartElement (pctxt, "token", -1);   stat = asn1PD_H235HASHED (pctxt, &pvalue->token);   if (stat != ASN_OK) return stat;   invokeEndElement (pctxt, "token", -1);   return (stat);}/**************************************************************//*                                                            *//*  CryptoToken                                               *//*                                                            *//**************************************************************/EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue){   int stat = ASN_OK;   ASN1UINT ui;   ASN1OpenType openType;   ASN1BOOL extbit;   /* extension bit */   DECODEBIT (pctxt, &extbit);   if (!extbit) {      stat = decodeConsUnsigned (pctxt, &ui, 0, 3);      if (stat != ASN_OK) return stat;      else pvalue->t = ui + 1;      switch (ui) {         /* cryptoEncryptedToken */         case 0:            invokeStartElement (pctxt, "cryptoEncryptedToken", -1);            pvalue->u.cryptoEncryptedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoEncryptedToken);            stat = asn1PD_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);            if (stat != ASN_OK) return stat;            invokeEndElement (pctxt, "cryptoEncryptedToken", -1);            break;         /* cryptoSignedToken */         case 1:            invokeStartElement (pctxt, "cryptoSignedToken", -1);            pvalue->u.cryptoSignedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoSignedToken);            stat = asn1PD_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);            if (stat != ASN_OK) return stat;            invokeEndElement (pctxt, "cryptoSignedToken", -1);            break;         /* cryptoHashedToken */         case 2:            invokeStartElement (pctxt, "cryptoHashedToken", -1);            pvalue->u.cryptoHashedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoHashedToken);            stat = asn1PD_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);            if (stat != ASN_OK) return stat;            invokeEndElement (pctxt, "cryptoHashedToken", -1);            break;         /* cryptoPwdEncr */         case 3:            invokeStartElement (pctxt, "cryptoPwdEncr", -1);            pvalue->u.cryptoPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED);            stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);            if (stat != ASN_OK) return stat;            invokeEndElement (pctxt, "cryptoPwdEncr", -1);            break;         default:            return ASN_E_INVOPT;      }   }   else {      stat = decodeSmallNonNegWholeNumber (pctxt, &ui);      if (stat != ASN_OK) return stat;      else pvalue->t = ui + 5;      stat = decodeByteAlign (pctxt);      if (stat != ASN_OK) return stat;      stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);      if (stat != ASN_OK) return stat;   }   return (stat);}

⌨️ 快捷键说明

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