Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
wtasn.c
Package: win2ksrc.rar [view]
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 37k
Category:
Windows Develop
Development Platform:
Visual C++
- /* Copyright (C) Microsoft Corporation, 1996 - 1999 All rights reserved. */
- /* ASN.1 definitions for Indirect data contents */
- #include <windows.h>
- #include "wtasn.h"
- ASN1module_t WTASN_Module = NULL;
- static int ASN1CALL ASN1Enc_ObjectID(ASN1encoding_t enc, ASN1uint32_t tag, ObjectID *val);
- static int ASN1CALL ASN1Enc_SpcMinimalCriteria(ASN1encoding_t enc, ASN1uint32_t tag, SpcMinimalCriteria *val);
- static int ASN1CALL ASN1Enc_UtcTime(ASN1encoding_t enc, ASN1uint32_t tag, UtcTime *val);
- static int ASN1CALL ASN1Enc_AlgorithmIdentifier(ASN1encoding_t enc, ASN1uint32_t tag, AlgorithmIdentifier *val);
- static int ASN1CALL ASN1Enc_DigestInfo(ASN1encoding_t enc, ASN1uint32_t tag, DigestInfo *val);
- static int ASN1CALL ASN1Enc_SpcAttributeTypeAndOptionalValue(ASN1encoding_t enc, ASN1uint32_t tag, SpcAttributeTypeAndOptionalValue *val);
- static int ASN1CALL ASN1Enc_SpcString(ASN1encoding_t enc, ASN1uint32_t tag, SpcString *val);
- static int ASN1CALL ASN1Enc_SpcSerializedObject(ASN1encoding_t enc, ASN1uint32_t tag, SpcSerializedObject *val);
- static int ASN1CALL ASN1Enc_SpcLink(ASN1encoding_t enc, ASN1uint32_t tag, SpcLink *val);
- static int ASN1CALL ASN1Enc_SpcPeImageData(ASN1encoding_t enc, ASN1uint32_t tag, SpcPeImageData *val);
- static int ASN1CALL ASN1Enc_SpcSigInfo(ASN1encoding_t enc, ASN1uint32_t tag, SpcSigInfo *val);
- static int ASN1CALL ASN1Enc_SpcImage(ASN1encoding_t enc, ASN1uint32_t tag, SpcImage *val);
- static int ASN1CALL ASN1Enc_SpcFinancialCriteria(ASN1encoding_t enc, ASN1uint32_t tag, SpcFinancialCriteria *val);
- static int ASN1CALL ASN1Enc_SpcStatementType(ASN1encoding_t enc, ASN1uint32_t tag, SpcStatementType *val);
- static int ASN1CALL ASN1Enc_SpcSpOpusInfo(ASN1encoding_t enc, ASN1uint32_t tag, SpcSpOpusInfo *val);
- static int ASN1CALL ASN1Enc_NameValue(ASN1encoding_t enc, ASN1uint32_t tag, NameValue *val);
- static int ASN1CALL ASN1Enc_NameValues(ASN1encoding_t enc, ASN1uint32_t tag, NameValues *val);
- static int ASN1CALL ASN1Enc_MemberInfo(ASN1encoding_t enc, ASN1uint32_t tag, MemberInfo *val);
- static int ASN1CALL ASN1Enc_SpcIndirectDataContent(ASN1encoding_t enc, ASN1uint32_t tag, SpcIndirectDataContent *val);
- static int ASN1CALL ASN1Enc_SpcSpAgencyInformation(ASN1encoding_t enc, ASN1uint32_t tag, SpcSpAgencyInformation *val);
- static int ASN1CALL ASN1Dec_ObjectID(ASN1decoding_t dec, ASN1uint32_t tag, ObjectID *val);
- static int ASN1CALL ASN1Dec_SpcMinimalCriteria(ASN1decoding_t dec, ASN1uint32_t tag, SpcMinimalCriteria *val);
- static int ASN1CALL ASN1Dec_UtcTime(ASN1decoding_t dec, ASN1uint32_t tag, UtcTime *val);
- static int ASN1CALL ASN1Dec_AlgorithmIdentifier(ASN1decoding_t dec, ASN1uint32_t tag, AlgorithmIdentifier *val);
- static int ASN1CALL ASN1Dec_DigestInfo(ASN1decoding_t dec, ASN1uint32_t tag, DigestInfo *val);
- static int ASN1CALL ASN1Dec_SpcAttributeTypeAndOptionalValue(ASN1decoding_t dec, ASN1uint32_t tag, SpcAttributeTypeAndOptionalValue *val);
- static int ASN1CALL ASN1Dec_SpcString(ASN1decoding_t dec, ASN1uint32_t tag, SpcString *val);
- static int ASN1CALL ASN1Dec_SpcSerializedObject(ASN1decoding_t dec, ASN1uint32_t tag, SpcSerializedObject *val);
- static int ASN1CALL ASN1Dec_SpcLink(ASN1decoding_t dec, ASN1uint32_t tag, SpcLink *val);
- static int ASN1CALL ASN1Dec_SpcPeImageData(ASN1decoding_t dec, ASN1uint32_t tag, SpcPeImageData *val);
- static int ASN1CALL ASN1Dec_SpcSigInfo(ASN1decoding_t dec, ASN1uint32_t tag, SpcSigInfo *val);
- static int ASN1CALL ASN1Dec_SpcImage(ASN1decoding_t dec, ASN1uint32_t tag, SpcImage *val);
- static int ASN1CALL ASN1Dec_SpcFinancialCriteria(ASN1decoding_t dec, ASN1uint32_t tag, SpcFinancialCriteria *val);
- static int ASN1CALL ASN1Dec_SpcStatementType(ASN1decoding_t dec, ASN1uint32_t tag, SpcStatementType *val);
- static int ASN1CALL ASN1Dec_SpcSpOpusInfo(ASN1decoding_t dec, ASN1uint32_t tag, SpcSpOpusInfo *val);
- static int ASN1CALL ASN1Dec_NameValue(ASN1decoding_t dec, ASN1uint32_t tag, NameValue *val);
- static int ASN1CALL ASN1Dec_NameValues(ASN1decoding_t dec, ASN1uint32_t tag, NameValues *val);
- static int ASN1CALL ASN1Dec_MemberInfo(ASN1decoding_t dec, ASN1uint32_t tag, MemberInfo *val);
- static int ASN1CALL ASN1Dec_SpcIndirectDataContent(ASN1decoding_t dec, ASN1uint32_t tag, SpcIndirectDataContent *val);
- static int ASN1CALL ASN1Dec_SpcSpAgencyInformation(ASN1decoding_t dec, ASN1uint32_t tag, SpcSpAgencyInformation *val);
- static void ASN1CALL ASN1Free_ObjectID(ObjectID *val);
- static void ASN1CALL ASN1Free_UtcTime(UtcTime *val);
- static void ASN1CALL ASN1Free_AlgorithmIdentifier(AlgorithmIdentifier *val);
- static void ASN1CALL ASN1Free_DigestInfo(DigestInfo *val);
- static void ASN1CALL ASN1Free_SpcAttributeTypeAndOptionalValue(SpcAttributeTypeAndOptionalValue *val);
- static void ASN1CALL ASN1Free_SpcString(SpcString *val);
- static void ASN1CALL ASN1Free_SpcSerializedObject(SpcSerializedObject *val);
- static void ASN1CALL ASN1Free_SpcLink(SpcLink *val);
- static void ASN1CALL ASN1Free_SpcPeImageData(SpcPeImageData *val);
- static void ASN1CALL ASN1Free_SpcSigInfo(SpcSigInfo *val);
- static void ASN1CALL ASN1Free_SpcImage(SpcImage *val);
- static void ASN1CALL ASN1Free_SpcStatementType(SpcStatementType *val);
- static void ASN1CALL ASN1Free_SpcSpOpusInfo(SpcSpOpusInfo *val);
- static void ASN1CALL ASN1Free_NameValue(NameValue *val);
- static void ASN1CALL ASN1Free_NameValues(NameValues *val);
- static void ASN1CALL ASN1Free_MemberInfo(MemberInfo *val);
- static void ASN1CALL ASN1Free_SpcIndirectDataContent(SpcIndirectDataContent *val);
- static void ASN1CALL ASN1Free_SpcSpAgencyInformation(SpcSpAgencyInformation *val);
- typedef ASN1BerEncFun_t ASN1EncFun_t;
- static const ASN1EncFun_t encfntab[14] = {
- (ASN1EncFun_t) ASN1Enc_ObjectID,
- (ASN1EncFun_t) ASN1Enc_SpcMinimalCriteria,
- (ASN1EncFun_t) ASN1Enc_UtcTime,
- (ASN1EncFun_t) ASN1Enc_SpcLink,
- (ASN1EncFun_t) ASN1Enc_SpcPeImageData,
- (ASN1EncFun_t) ASN1Enc_SpcSigInfo,
- (ASN1EncFun_t) ASN1Enc_SpcFinancialCriteria,
- (ASN1EncFun_t) ASN1Enc_SpcStatementType,
- (ASN1EncFun_t) ASN1Enc_SpcSpOpusInfo,
- (ASN1EncFun_t) ASN1Enc_NameValue,
- (ASN1EncFun_t) ASN1Enc_NameValues,
- (ASN1EncFun_t) ASN1Enc_MemberInfo,
- (ASN1EncFun_t) ASN1Enc_SpcIndirectDataContent,
- (ASN1EncFun_t) ASN1Enc_SpcSpAgencyInformation,
- };
- typedef ASN1BerDecFun_t ASN1DecFun_t;
- static const ASN1DecFun_t decfntab[14] = {
- (ASN1DecFun_t) ASN1Dec_ObjectID,
- (ASN1DecFun_t) ASN1Dec_SpcMinimalCriteria,
- (ASN1DecFun_t) ASN1Dec_UtcTime,
- (ASN1DecFun_t) ASN1Dec_SpcLink,
- (ASN1DecFun_t) ASN1Dec_SpcPeImageData,
- (ASN1DecFun_t) ASN1Dec_SpcSigInfo,
- (ASN1DecFun_t) ASN1Dec_SpcFinancialCriteria,
- (ASN1DecFun_t) ASN1Dec_SpcStatementType,
- (ASN1DecFun_t) ASN1Dec_SpcSpOpusInfo,
- (ASN1DecFun_t) ASN1Dec_NameValue,
- (ASN1DecFun_t) ASN1Dec_NameValues,
- (ASN1DecFun_t) ASN1Dec_MemberInfo,
- (ASN1DecFun_t) ASN1Dec_SpcIndirectDataContent,
- (ASN1DecFun_t) ASN1Dec_SpcSpAgencyInformation,
- };
- static const ASN1FreeFun_t freefntab[14] = {
- (ASN1FreeFun_t) ASN1Free_ObjectID,
- (ASN1FreeFun_t) NULL,
- (ASN1FreeFun_t) ASN1Free_UtcTime,
- (ASN1FreeFun_t) ASN1Free_SpcLink,
- (ASN1FreeFun_t) ASN1Free_SpcPeImageData,
- (ASN1FreeFun_t) ASN1Free_SpcSigInfo,
- (ASN1FreeFun_t) NULL,
- (ASN1FreeFun_t) ASN1Free_SpcStatementType,
- (ASN1FreeFun_t) ASN1Free_SpcSpOpusInfo,
- (ASN1FreeFun_t) ASN1Free_NameValue,
- (ASN1FreeFun_t) ASN1Free_NameValues,
- (ASN1FreeFun_t) ASN1Free_MemberInfo,
- (ASN1FreeFun_t) ASN1Free_SpcIndirectDataContent,
- (ASN1FreeFun_t) ASN1Free_SpcSpAgencyInformation,
- };
- static const ULONG sizetab[14] = {
- SIZE_WTASN_Module_PDU_0,
- SIZE_WTASN_Module_PDU_1,
- SIZE_WTASN_Module_PDU_2,
- SIZE_WTASN_Module_PDU_3,
- SIZE_WTASN_Module_PDU_4,
- SIZE_WTASN_Module_PDU_5,
- SIZE_WTASN_Module_PDU_6,
- SIZE_WTASN_Module_PDU_7,
- SIZE_WTASN_Module_PDU_8,
- SIZE_WTASN_Module_PDU_9,
- SIZE_WTASN_Module_PDU_10,
- SIZE_WTASN_Module_PDU_11,
- SIZE_WTASN_Module_PDU_12,
- SIZE_WTASN_Module_PDU_13,
- };
- /* forward declarations of values: */
- extern ASN1octet_t SpcPeImageData_flags_default_octets[1];
- /* definitions of value components: */
- static ASN1octet_t SpcPeImageData_flags_default_octets[1] = { 0x80 };
- /* definitions of values: */
- SpcPeImageFlags SpcPeImageData_flags_default = { 1, SpcPeImageData_flags_default_octets };
- void ASN1CALL WTASN_Module_Startup(void)
- {
- WTASN_Module = ASN1_CreateModule(0x10000, ASN1_BER_RULE_DER, ASN1FLAGS_NOASSERT, 14, (const ASN1GenericFun_t *) encfntab, (const ASN1GenericFun_t *) decfntab, freefntab, sizetab, 0x7477);
- }
- void ASN1CALL WTASN_Module_Cleanup(void)
- {
- ASN1_CloseModule(WTASN_Module);
- WTASN_Module = NULL;
- }
- static int ASN1CALL ASN1Enc_ObjectID(ASN1encoding_t enc, ASN1uint32_t tag, ObjectID *val)
- {
- if (!ASN1BEREncObjectIdentifier2(enc, tag ? tag : 0x6, val))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_ObjectID(ASN1decoding_t dec, ASN1uint32_t tag, ObjectID *val)
- {
- if (!ASN1BERDecObjectIdentifier2(dec, tag ? tag : 0x6, val))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_ObjectID(ObjectID *val)
- {
- if (val) {
- }
- }
- static int ASN1CALL ASN1Enc_SpcMinimalCriteria(ASN1encoding_t enc, ASN1uint32_t tag, SpcMinimalCriteria *val)
- {
- if (!ASN1BEREncBool(enc, tag ? tag : 0x1, *val))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcMinimalCriteria(ASN1decoding_t dec, ASN1uint32_t tag, SpcMinimalCriteria *val)
- {
- if (!ASN1BERDecBool(dec, tag ? tag : 0x1, val))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Enc_UtcTime(ASN1encoding_t enc, ASN1uint32_t tag, UtcTime *val)
- {
- if (!ASN1DEREncUTCTime(enc, tag ? tag : 0x17, val))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_UtcTime(ASN1decoding_t dec, ASN1uint32_t tag, UtcTime *val)
- {
- if (!ASN1BERDecUTCTime(dec, tag ? tag : 0x17, val))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_UtcTime(UtcTime *val)
- {
- if (val) {
- }
- }
- static int ASN1CALL ASN1Enc_AlgorithmIdentifier(ASN1encoding_t enc, ASN1uint32_t tag, AlgorithmIdentifier *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1BEREncObjectIdentifier2(enc, 0x6, &(val)->algorithm))
- return 0;
- if ((val)->o[0] & 0x80) {
- if (!ASN1BEREncOpenType(enc, &(val)->parameters))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_AlgorithmIdentifier(ASN1decoding_t dec, ASN1uint32_t tag, AlgorithmIdentifier *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- if (!ASN1BERDecObjectIdentifier2(dd, 0x6, &(val)->algorithm))
- return 0;
- if (ASN1BERDecPeekTag(dd, &t)) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecOpenType2(dd, &(val)->parameters))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_AlgorithmIdentifier(AlgorithmIdentifier *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- }
- }
- }
- static int ASN1CALL ASN1Enc_DigestInfo(ASN1encoding_t enc, ASN1uint32_t tag, DigestInfo *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1Enc_AlgorithmIdentifier(enc, 0, &(val)->digestAlgorithm))
- return 0;
- if (!ASN1DEREncOctetString(enc, 0x4, ((val)->digest).length, ((val)->digest).value))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_DigestInfo(ASN1decoding_t dec, ASN1uint32_t tag, DigestInfo *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1Dec_AlgorithmIdentifier(dd, 0, &(val)->digestAlgorithm))
- return 0;
- if (!ASN1BERDecOctetString2(dd, 0x4, &(val)->digest))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_DigestInfo(DigestInfo *val)
- {
- if (val) {
- ASN1Free_AlgorithmIdentifier(&(val)->digestAlgorithm);
- }
- }
- static int ASN1CALL ASN1Enc_SpcAttributeTypeAndOptionalValue(ASN1encoding_t enc, ASN1uint32_t tag, SpcAttributeTypeAndOptionalValue *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1BEREncObjectIdentifier2(enc, 0x6, &(val)->type))
- return 0;
- if ((val)->o[0] & 0x80) {
- if (!ASN1BEREncOpenType(enc, &(val)->value))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcAttributeTypeAndOptionalValue(ASN1decoding_t dec, ASN1uint32_t tag, SpcAttributeTypeAndOptionalValue *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- if (!ASN1BERDecObjectIdentifier2(dd, 0x6, &(val)->type))
- return 0;
- if (ASN1BERDecPeekTag(dd, &t)) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecOpenType2(dd, &(val)->value))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcAttributeTypeAndOptionalValue(SpcAttributeTypeAndOptionalValue *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- }
- }
- }
- static int ASN1CALL ASN1Enc_SpcString(ASN1encoding_t enc, ASN1uint32_t tag, SpcString *val)
- {
- switch ((val)->choice) {
- case 1:
- if (!ASN1DEREncChar16String(enc, 0x80000000, ((val)->u.unicode).length, ((val)->u.unicode).value))
- return 0;
- break;
- case 2:
- if (!ASN1DEREncCharString(enc, 0x80000001, ((val)->u.ascii).length, ((val)->u.ascii).value))
- return 0;
- break;
- }
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcString(ASN1decoding_t dec, ASN1uint32_t tag, SpcString *val)
- {
- ASN1uint32_t t;
- if (!ASN1BERDecPeekTag(dec, &t))
- return 0;
- switch (t) {
- case 0x80000000:
- (val)->choice = 1;
- if (!ASN1BERDecChar16String(dec, 0x80000000, &(val)->u.unicode))
- return 0;
- break;
- case 0x80000001:
- (val)->choice = 2;
- if (!ASN1BERDecCharString(dec, 0x80000001, &(val)->u.ascii))
- return 0;
- break;
- default:
- ASN1DecSetError(dec, ASN1_ERR_CORRUPT);
- return 0;
- }
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcString(SpcString *val)
- {
- if (val) {
- switch ((val)->choice) {
- case 1:
- ASN1char16string_free(&(val)->u.unicode);
- break;
- case 2:
- ASN1charstring_free(&(val)->u.ascii);
- break;
- }
- }
- }
- static int ASN1CALL ASN1Enc_SpcSerializedObject(ASN1encoding_t enc, ASN1uint32_t tag, SpcSerializedObject *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1DEREncOctetString(enc, 0x4, ((val)->classId).length, ((val)->classId).value))
- return 0;
- if (!ASN1DEREncOctetString(enc, 0x4, ((val)->serializedData).length, ((val)->serializedData).value))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcSerializedObject(ASN1decoding_t dec, ASN1uint32_t tag, SpcSerializedObject *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1BERDecOctetString2(dd, 0x4, &(val)->classId))
- return 0;
- if (!ASN1BERDecOctetString2(dd, 0x4, &(val)->serializedData))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcSerializedObject(SpcSerializedObject *val)
- {
- if (val) {
- }
- }
- static int ASN1CALL ASN1Enc_SpcLink(ASN1encoding_t enc, ASN1uint32_t tag, SpcLink *val)
- {
- ASN1uint32_t nLenOff0;
- switch ((val)->choice) {
- case 1:
- if (!ASN1DEREncCharString(enc, 0x80000000, ((val)->u.url).length, ((val)->u.url).value))
- return 0;
- break;
- case 2:
- if (!ASN1Enc_SpcSerializedObject(enc, 0x80000001, &(val)->u.moniker))
- return 0;
- break;
- case 3:
- if (!ASN1BEREncExplicitTag(enc, 0x80000002, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcString(enc, 0, &(val)->u.file))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- break;
- }
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcLink(ASN1decoding_t dec, ASN1uint32_t tag, SpcLink *val)
- {
- ASN1uint32_t t;
- ASN1decoding_t dd0;
- ASN1octet_t *di0;
- if (!ASN1BERDecPeekTag(dec, &t))
- return 0;
- switch (t) {
- case 0x80000000:
- (val)->choice = 1;
- if (!ASN1BERDecCharString(dec, 0x80000000, &(val)->u.url))
- return 0;
- break;
- case 0x80000001:
- (val)->choice = 2;
- if (!ASN1Dec_SpcSerializedObject(dec, 0x80000001, &(val)->u.moniker))
- return 0;
- break;
- case 0x80000002:
- (val)->choice = 3;
- if (!ASN1BERDecExplicitTag(dec, 0x80000002, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcString(dd0, 0, &(val)->u.file))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd0, di0))
- return 0;
- break;
- default:
- ASN1DecSetError(dec, ASN1_ERR_CORRUPT);
- return 0;
- }
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcLink(SpcLink *val)
- {
- if (val) {
- switch ((val)->choice) {
- case 1:
- ASN1charstring_free(&(val)->u.url);
- break;
- case 2:
- ASN1Free_SpcSerializedObject(&(val)->u.moniker);
- break;
- case 3:
- ASN1Free_SpcString(&(val)->u.file);
- break;
- }
- }
- }
- static int ASN1CALL ASN1Enc_SpcPeImageData(ASN1encoding_t enc, ASN1uint32_t tag, SpcPeImageData *val)
- {
- ASN1uint32_t nLenOff;
- ASN1octet_t o[1];
- ASN1uint32_t r;
- ASN1uint32_t nLenOff0;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- CopyMemory(o, (val)->o, 1);
- if (!ASN1bitstring_cmp(&val->flags, &SpcPeImageData_flags_default, 1))
- o[0] &= ~0x80;
- if (o[0] & 0x80) {
- r = ((val)->flags).length;
- ASN1BEREncRemoveZeroBits(&r, ((val)->flags).value);
- if (!ASN1DEREncBitString(enc, 0x3, r, ((val)->flags).value))
- return 0;
- }
- if (o[0] & 0x40) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000000, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->file))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcPeImageData(ASN1decoding_t dec, ASN1uint32_t tag, SpcPeImageData *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1decoding_t dd0;
- ASN1octet_t *di0;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x3) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecBitString(dd, 0x3, &(val)->flags))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000000) {
- (val)->o[0] |= 0x40;
- if (!ASN1BERDecExplicitTag(dd, 0x80000000, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->file))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcPeImageData(SpcPeImageData *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- ASN1bitstring_free(&(val)->flags);
- }
- if ((val)->o[0] & 0x40) {
- ASN1Free_SpcLink(&(val)->file);
- }
- }
- }
- static int ASN1CALL ASN1Enc_SpcSigInfo(ASN1encoding_t enc, ASN1uint32_t tag, SpcSigInfo *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwSIPversion))
- return 0;
- if (!ASN1DEREncOctetString(enc, 0x4, ((val)->gSIPguid).length, ((val)->gSIPguid).value))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwReserved1))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwReserved2))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwReserved3))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwReserved4))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->dwReserved5))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcSigInfo(ASN1decoding_t dec, ASN1uint32_t tag, SpcSigInfo *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwSIPversion))
- return 0;
- if (!ASN1BERDecOctetString2(dd, 0x4, &(val)->gSIPguid))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwReserved1))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwReserved2))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwReserved3))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwReserved4))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->dwReserved5))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcSigInfo(SpcSigInfo *val)
- {
- if (val) {
- }
- }
- static int ASN1CALL ASN1Enc_SpcImage(ASN1encoding_t enc, ASN1uint32_t tag, SpcImage *val)
- {
- ASN1uint32_t nLenOff;
- ASN1uint32_t nLenOff0;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if ((val)->o[0] & 0x80) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000000, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->imageLink))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if ((val)->o[0] & 0x40) {
- if (!ASN1DEREncOctetString(enc, 0x80000001, ((val)->bitmap).length, ((val)->bitmap).value))
- return 0;
- }
- if ((val)->o[0] & 0x20) {
- if (!ASN1DEREncOctetString(enc, 0x80000002, ((val)->metafile).length, ((val)->metafile).value))
- return 0;
- }
- if ((val)->o[0] & 0x10) {
- if (!ASN1DEREncOctetString(enc, 0x80000003, ((val)->enhancedMetafile).length, ((val)->enhancedMetafile).value))
- return 0;
- }
- if ((val)->o[0] & 0x8) {
- if (!ASN1DEREncOctetString(enc, 0x80000004, ((val)->gifFile).length, ((val)->gifFile).value))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcImage(ASN1decoding_t dec, ASN1uint32_t tag, SpcImage *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1decoding_t dd0;
- ASN1octet_t *di0;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000000) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecExplicitTag(dd, 0x80000000, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->imageLink))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000001) {
- (val)->o[0] |= 0x40;
- if (!ASN1BERDecOctetString2(dd, 0x80000001, &(val)->bitmap))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000002) {
- (val)->o[0] |= 0x20;
- if (!ASN1BERDecOctetString2(dd, 0x80000002, &(val)->metafile))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000003) {
- (val)->o[0] |= 0x10;
- if (!ASN1BERDecOctetString2(dd, 0x80000003, &(val)->enhancedMetafile))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000004) {
- (val)->o[0] |= 0x8;
- if (!ASN1BERDecOctetString2(dd, 0x80000004, &(val)->gifFile))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcImage(SpcImage *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- ASN1Free_SpcLink(&(val)->imageLink);
- }
- if ((val)->o[0] & 0x40) {
- }
- if ((val)->o[0] & 0x20) {
- }
- if ((val)->o[0] & 0x10) {
- }
- if ((val)->o[0] & 0x8) {
- }
- }
- }
- static int ASN1CALL ASN1Enc_SpcFinancialCriteria(ASN1encoding_t enc, ASN1uint32_t tag, SpcFinancialCriteria *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1BEREncBool(enc, 0x1, (val)->financialInfoAvailable))
- return 0;
- if (!ASN1BEREncBool(enc, 0x1, (val)->meetsCriteria))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcFinancialCriteria(ASN1decoding_t dec, ASN1uint32_t tag, SpcFinancialCriteria *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1BERDecBool(dd, 0x1, &(val)->financialInfoAvailable))
- return 0;
- if (!ASN1BERDecBool(dd, 0x1, &(val)->meetsCriteria))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Enc_SpcStatementType(ASN1encoding_t enc, ASN1uint32_t tag, SpcStatementType *val)
- {
- ASN1uint32_t nLenOff;
- ASN1uint32_t i;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- for (i = 0; i < (val)->count; i++) {
- if (!ASN1BEREncObjectIdentifier2(enc, 0x6, &((val)->value)[i]))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcStatementType(ASN1decoding_t dec, ASN1uint32_t tag, SpcStatementType *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1uint32_t n;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- (val)->count = n = 0;
- (val)->value = NULL;
- while (ASN1BERDecNotEndOfContents(dd, di)) {
- if (!ASN1BERDecPeekTag(dd, &t))
- return 0;
- if ((val)->count >= n) {
- n = n ? (n << 1) : 16;
- if (!((val)->value = (ObjectID *)ASN1DecRealloc(dd, (val)->value, n * sizeof(*(val)->value))))
- return 0;
- }
- if (!ASN1BERDecObjectIdentifier2(dd, 0x6, &((val)->value)[(val)->count]))
- return 0;
- ((val)->count)++;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcStatementType(SpcStatementType *val)
- {
- ASN1uint32_t i;
- if (val) {
- for (i = 1; i < (val)->count; i++) {
- }
- ASN1Free((val)->value);
- }
- }
- static int ASN1CALL ASN1Enc_SpcSpOpusInfo(ASN1encoding_t enc, ASN1uint32_t tag, SpcSpOpusInfo *val)
- {
- ASN1uint32_t nLenOff;
- ASN1uint32_t nLenOff0;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if ((val)->o[0] & 0x80) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000000, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcString(enc, 0, &(val)->programName))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if ((val)->o[0] & 0x40) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000001, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->moreInfo))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if ((val)->o[0] & 0x20) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000002, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->publisherInfo))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcSpOpusInfo(ASN1decoding_t dec, ASN1uint32_t tag, SpcSpOpusInfo *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1decoding_t dd0;
- ASN1octet_t *di0;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000000) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecExplicitTag(dd, 0x80000000, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcString(dd0, 0, &(val)->programName))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000001) {
- (val)->o[0] |= 0x40;
- if (!ASN1BERDecExplicitTag(dd, 0x80000001, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->moreInfo))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000002) {
- (val)->o[0] |= 0x20;
- if (!ASN1BERDecExplicitTag(dd, 0x80000002, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->publisherInfo))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcSpOpusInfo(SpcSpOpusInfo *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- ASN1Free_SpcString(&(val)->programName);
- }
- if ((val)->o[0] & 0x40) {
- ASN1Free_SpcLink(&(val)->moreInfo);
- }
- if ((val)->o[0] & 0x20) {
- ASN1Free_SpcLink(&(val)->publisherInfo);
- }
- }
- }
- static int ASN1CALL ASN1Enc_NameValue(ASN1encoding_t enc, ASN1uint32_t tag, NameValue *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1DEREncChar16String(enc, 0x1e, ((val)->refname).length, ((val)->refname).value))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->typeaction))
- return 0;
- if (!ASN1DEREncOctetString(enc, 0x4, ((val)->value).length, ((val)->value).value))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_NameValue(ASN1decoding_t dec, ASN1uint32_t tag, NameValue *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1BERDecChar16String(dd, 0x1e, &(val)->refname))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->typeaction))
- return 0;
- if (!ASN1BERDecOctetString2(dd, 0x4, &(val)->value))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_NameValue(NameValue *val)
- {
- if (val) {
- ASN1char16string_free(&(val)->refname);
- }
- }
- static int ASN1CALL ASN1Enc_NameValues(ASN1encoding_t enc, ASN1uint32_t tag, NameValues *val)
- {
- ASN1uint32_t nLenOff;
- void *pBlk;
- ASN1uint32_t i;
- ASN1encoding_t enc2;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x11, &nLenOff))
- return 0;
- if (!ASN1DEREncBeginBlk(enc, ASN1_DER_SET_OF_BLOCK, &pBlk))
- return 0;
- for (i = 0; i < (val)->count; i++) {
- if (!ASN1DEREncNewBlkElement(pBlk, &enc2))
- return 0;
- if (!ASN1Enc_NameValue(enc2, 0, &((val)->value)[i]))
- return 0;
- if (!ASN1DEREncFlushBlkElement(pBlk))
- return 0;
- }
- if (!ASN1DEREncEndBlk(pBlk))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_NameValues(ASN1decoding_t dec, ASN1uint32_t tag, NameValues *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1uint32_t n;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x11, &dd, &di))
- return 0;
- (val)->count = n = 0;
- (val)->value = NULL;
- while (ASN1BERDecNotEndOfContents(dd, di)) {
- if (!ASN1BERDecPeekTag(dd, &t))
- return 0;
- if ((val)->count >= n) {
- n = n ? (n << 1) : 16;
- if (!((val)->value = (NameValue *)ASN1DecRealloc(dd, (val)->value, n * sizeof(*(val)->value))))
- return 0;
- }
- if (!ASN1Dec_NameValue(dd, 0, &((val)->value)[(val)->count]))
- return 0;
- ((val)->count)++;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_NameValues(NameValues *val)
- {
- ASN1uint32_t i;
- if (val) {
- ASN1Free_NameValue(&(val)->value[0]);
- for (i = 1; i < (val)->count; i++) {
- ASN1Free_NameValue(&(val)->value[i]);
- }
- ASN1Free((val)->value);
- }
- }
- static int ASN1CALL ASN1Enc_MemberInfo(ASN1encoding_t enc, ASN1uint32_t tag, MemberInfo *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1DEREncChar16String(enc, 0x1e, ((val)->subguid).length, ((val)->subguid).value))
- return 0;
- if (!ASN1BEREncS32(enc, 0x2, (val)->certversion))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_MemberInfo(ASN1decoding_t dec, ASN1uint32_t tag, MemberInfo *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1BERDecChar16String(dd, 0x1e, &(val)->subguid))
- return 0;
- if (!ASN1BERDecS32Val(dd, 0x2, &(val)->certversion))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_MemberInfo(MemberInfo *val)
- {
- if (val) {
- ASN1char16string_free(&(val)->subguid);
- }
- }
- static int ASN1CALL ASN1Enc_SpcIndirectDataContent(ASN1encoding_t enc, ASN1uint32_t tag, SpcIndirectDataContent *val)
- {
- ASN1uint32_t nLenOff;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if (!ASN1Enc_SpcAttributeTypeAndOptionalValue(enc, 0, &(val)->data))
- return 0;
- if (!ASN1Enc_DigestInfo(enc, 0, &(val)->messageDigest))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcIndirectDataContent(ASN1decoding_t dec, ASN1uint32_t tag, SpcIndirectDataContent *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- if (!ASN1Dec_SpcAttributeTypeAndOptionalValue(dd, 0, &(val)->data))
- return 0;
- if (!ASN1Dec_DigestInfo(dd, 0, &(val)->messageDigest))
- return 0;
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcIndirectDataContent(SpcIndirectDataContent *val)
- {
- if (val) {
- ASN1Free_SpcAttributeTypeAndOptionalValue(&(val)->data);
- ASN1Free_DigestInfo(&(val)->messageDigest);
- }
- }
- static int ASN1CALL ASN1Enc_SpcSpAgencyInformation(ASN1encoding_t enc, ASN1uint32_t tag, SpcSpAgencyInformation *val)
- {
- ASN1uint32_t nLenOff;
- ASN1uint32_t nLenOff0;
- if (!ASN1BEREncExplicitTag(enc, tag ? tag : 0x10, &nLenOff))
- return 0;
- if ((val)->o[0] & 0x80) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000000, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->policyInformation))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if ((val)->o[0] & 0x40) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000001, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcString(enc, 0, &(val)->policyDisplayText))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if ((val)->o[0] & 0x20) {
- if (!ASN1Enc_SpcImage(enc, 0x80000002, &(val)->logoImage))
- return 0;
- }
- if ((val)->o[0] & 0x10) {
- if (!ASN1BEREncExplicitTag(enc, 0x80000003, &nLenOff0))
- return 0;
- if (!ASN1Enc_SpcLink(enc, 0, &(val)->logoLink))
- return 0;
- if (!ASN1BEREncEndOfContents(enc, nLenOff0))
- return 0;
- }
- if (!ASN1BEREncEndOfContents(enc, nLenOff))
- return 0;
- return 1;
- }
- static int ASN1CALL ASN1Dec_SpcSpAgencyInformation(ASN1decoding_t dec, ASN1uint32_t tag, SpcSpAgencyInformation *val)
- {
- ASN1decoding_t dd;
- ASN1octet_t *di;
- ASN1uint32_t t;
- ASN1decoding_t dd0;
- ASN1octet_t *di0;
- if (!ASN1BERDecExplicitTag(dec, tag ? tag : 0x10, &dd, &di))
- return 0;
- ZeroMemory((val)->o, 1);
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000000) {
- (val)->o[0] |= 0x80;
- if (!ASN1BERDecExplicitTag(dd, 0x80000000, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->policyInformation))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000001) {
- (val)->o[0] |= 0x40;
- if (!ASN1BERDecExplicitTag(dd, 0x80000001, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcString(dd0, 0, &(val)->policyDisplayText))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000002) {
- (val)->o[0] |= 0x20;
- if (!ASN1Dec_SpcImage(dd, 0x80000002, &(val)->logoImage))
- return 0;
- }
- ASN1BERDecPeekTag(dd, &t);
- if (t == 0x80000003) {
- (val)->o[0] |= 0x10;
- if (!ASN1BERDecExplicitTag(dd, 0x80000003, &dd0, &di0))
- return 0;
- if (!ASN1Dec_SpcLink(dd0, 0, &(val)->logoLink))
- return 0;
- if (!ASN1BERDecEndOfContents(dd, dd0, di0))
- return 0;
- }
- if (!ASN1BERDecEndOfContents(dec, dd, di))
- return 0;
- return 1;
- }
- static void ASN1CALL ASN1Free_SpcSpAgencyInformation(SpcSpAgencyInformation *val)
- {
- if (val) {
- if ((val)->o[0] & 0x80) {
- ASN1Free_SpcLink(&(val)->policyInformation);
- }
- if ((val)->o[0] & 0x40) {
- ASN1Free_SpcString(&(val)->policyDisplayText);
- }
- if ((val)->o[0] & 0x20) {
- ASN1Free_SpcImage(&(val)->logoImage);
- }
- if ((val)->o[0] & 0x10) {
- ASN1Free_SpcLink(&(val)->logoLink);
- }
- }
- }