diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/packet-novell_pkis.c | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-novell_pkis.c')
-rw-r--r-- | epan/dissectors/packet-novell_pkis.c | 702 |
1 files changed, 702 insertions, 0 deletions
diff --git a/epan/dissectors/packet-novell_pkis.c b/epan/dissectors/packet-novell_pkis.c new file mode 100644 index 00000000..7ed2310e --- /dev/null +++ b/epan/dissectors/packet-novell_pkis.c @@ -0,0 +1,702 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-novell_pkis.c */ +/* asn2wrs.py -b -u -L -p novell_pkis -c ./novell_pkis.cnf -s ./packet-novell_pkis-template -D . -O ../.. novell_pkis.asn */ + +/* packet-novell_pkis.c + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/expert.h> +#include <epan/prefs.h> +#include <epan/oids.h> +#include <epan/conversation.h> +#include <epan/asn1.h> + +#include "packet-per.h" +#include "packet-ber.h" + +static int hf_novell_pkis_SecurityAttributes_PDU = -1; /* SecurityAttributes */ +static int hf_novell_pkis_RelianceLimits_PDU = -1; /* RelianceLimits */ +static int hf_novell_pkis_versionNumber = -1; /* OCTET_STRING_SIZE_2 */ +static int hf_novell_pkis_nSI = -1; /* BOOLEAN */ +static int hf_novell_pkis_securityTM = -1; /* T_securityTM */ +static int hf_novell_pkis_uriReference = -1; /* IA5String */ +static int hf_novell_pkis_gLBExtensions = -1; /* GLBExtensions */ +static int hf_novell_pkis_keyQuality = -1; /* KeyQuality */ +static int hf_novell_pkis_cryptoProcessQuality = -1; /* CryptoProcessQuality */ +static int hf_novell_pkis_certificateClass = -1; /* CertificateClass */ +static int hf_novell_pkis_enterpriseId = -1; /* EnterpriseId */ +static int hf_novell_pkis_enforceQuality = -1; /* BOOLEAN */ +static int hf_novell_pkis_compusecQuality = -1; /* CompusecQuality */ +static int hf_novell_pkis_cryptoQuality = -1; /* CryptoQuality */ +static int hf_novell_pkis_keyStorageQuality = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_CompusecQuality_item = -1; /* CompusecQualityPair */ +static int hf_novell_pkis_compusecCriteria = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_compusecRating = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_CryptoQuality_item = -1; /* CryptoQualityPair */ +static int hf_novell_pkis_cryptoModuleCriteria = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_cryptoModuleRating = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_classValue = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_certificateValid = -1; /* BOOLEAN */ +static int hf_novell_pkis_rootLabel = -1; /* SecurityLabelType1 */ +static int hf_novell_pkis_registryLabel = -1; /* SecurityLabelType1 */ +static int hf_novell_pkis_enterpriseLabel = -1; /* SEQUENCE_SIZE_1_1_OF_SecurityLabelType1 */ +static int hf_novell_pkis_enterpriseLabel_item = -1; /* SecurityLabelType1 */ +static int hf_novell_pkis_labelType1 = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_secrecyLevel1 = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_integrityLevel1 = -1; /* INTEGER_0_255 */ +static int hf_novell_pkis_secrecyCategories1 = -1; /* BIT_STRING_SIZE_96 */ +static int hf_novell_pkis_integrityCategories1 = -1; /* BIT_STRING_SIZE_64 */ +static int hf_novell_pkis_secrecySingletons1 = -1; /* Singletons */ +static int hf_novell_pkis_integritySingletons1 = -1; /* Singletons */ +static int hf_novell_pkis_Singletons_item = -1; /* SingletonChoice */ +static int hf_novell_pkis_uniqueSingleton = -1; /* INTEGER_0_9223372036854775807 */ +static int hf_novell_pkis_singletonRange = -1; /* SingletonRange */ +static int hf_novell_pkis_singletonLowerBound = -1; /* INTEGER_0_9223372036854775807 */ +static int hf_novell_pkis_singletonUpperBound = -1; /* INTEGER_0_9223372036854775807 */ +static int hf_novell_pkis_singletonValue = -1; /* BOOLEAN */ +static int hf_novell_pkis_perTransactionLimit = -1; /* MonetaryValue */ +static int hf_novell_pkis_perCertificateLimit = -1; /* MonetaryValue */ +static int hf_novell_pkis_currency = -1; /* Currency */ +static int hf_novell_pkis_amount = -1; /* INTEGER */ +static int hf_novell_pkis_amtExp10 = -1; /* INTEGER */ +static gint ett_novell_pkis_SecurityAttributes = -1; +static gint ett_novell_pkis_GLBExtensions = -1; +static gint ett_novell_pkis_Quality = -1; +static gint ett_novell_pkis_CompusecQuality = -1; +static gint ett_novell_pkis_CompusecQualityPair = -1; +static gint ett_novell_pkis_CryptoQuality = -1; +static gint ett_novell_pkis_CryptoQualityPair = -1; +static gint ett_novell_pkis_CertificateClass = -1; +static gint ett_novell_pkis_EnterpriseId = -1; +static gint ett_novell_pkis_SEQUENCE_SIZE_1_1_OF_SecurityLabelType1 = -1; +static gint ett_novell_pkis_SecurityLabelType1 = -1; +static gint ett_novell_pkis_Singletons = -1; +static gint ett_novell_pkis_SingletonChoice = -1; +static gint ett_novell_pkis_SingletonRange = -1; +static gint ett_novell_pkis_RelianceLimits = -1; +static gint ett_novell_pkis_MonetaryValue = -1; + + +static int +dissect_novell_pkis_OCTET_STRING_SIZE_2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_T_securityTM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_IA5String(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_INTEGER_0_255(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t CompusecQualityPair_sequence[] = { + { &hf_novell_pkis_compusecCriteria, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_compusecRating, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_CompusecQualityPair(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + CompusecQualityPair_sequence, hf_index, ett_novell_pkis_CompusecQualityPair); + + return offset; +} + + +static const ber_sequence_t CompusecQuality_sequence_of[1] = { + { &hf_novell_pkis_CompusecQuality_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_CompusecQualityPair }, +}; + +static int +dissect_novell_pkis_CompusecQuality(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + CompusecQuality_sequence_of, hf_index, ett_novell_pkis_CompusecQuality); + + return offset; +} + + +static const ber_sequence_t CryptoQualityPair_sequence[] = { + { &hf_novell_pkis_cryptoModuleCriteria, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_cryptoModuleRating, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_CryptoQualityPair(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + CryptoQualityPair_sequence, hf_index, ett_novell_pkis_CryptoQualityPair); + + return offset; +} + + +static const ber_sequence_t CryptoQuality_sequence_of[1] = { + { &hf_novell_pkis_CryptoQuality_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_CryptoQualityPair }, +}; + +static int +dissect_novell_pkis_CryptoQuality(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + CryptoQuality_sequence_of, hf_index, ett_novell_pkis_CryptoQuality); + + return offset; +} + + +static const ber_sequence_t Quality_sequence[] = { + { &hf_novell_pkis_enforceQuality, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BOOLEAN }, + { &hf_novell_pkis_compusecQuality, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_CompusecQuality }, + { &hf_novell_pkis_cryptoQuality, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_CryptoQuality }, + { &hf_novell_pkis_keyStorageQuality, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_Quality(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + Quality_sequence, hf_index, ett_novell_pkis_Quality); + + return offset; +} + + + +static int +dissect_novell_pkis_KeyQuality(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_novell_pkis_Quality(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_novell_pkis_CryptoProcessQuality(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_novell_pkis_Quality(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t CertificateClass_sequence[] = { + { &hf_novell_pkis_classValue, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_certificateValid, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BOOLEAN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_CertificateClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + CertificateClass_sequence, hf_index, ett_novell_pkis_CertificateClass); + + return offset; +} + + + +static int +dissect_novell_pkis_BIT_STRING_SIZE_96(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_BIT_STRING_SIZE_64(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_INTEGER_0_9223372036854775807(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t SingletonRange_sequence[] = { + { &hf_novell_pkis_singletonLowerBound, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_9223372036854775807 }, + { &hf_novell_pkis_singletonUpperBound, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_9223372036854775807 }, + { &hf_novell_pkis_singletonValue, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BOOLEAN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_SingletonRange(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + SingletonRange_sequence, hf_index, ett_novell_pkis_SingletonRange); + + return offset; +} + + +static const value_string novell_pkis_SingletonChoice_vals[] = { + { 0, "uniqueSingleton" }, + { 1, "singletonRange" }, + { 0, NULL } +}; + +static const ber_choice_t SingletonChoice_choice[] = { + { 0, &hf_novell_pkis_uniqueSingleton, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_9223372036854775807 }, + { 1, &hf_novell_pkis_singletonRange, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_SingletonRange }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_SingletonChoice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + SingletonChoice_choice, hf_index, ett_novell_pkis_SingletonChoice, + NULL); + + return offset; +} + + +static const ber_sequence_t Singletons_sequence_of[1] = { + { &hf_novell_pkis_Singletons_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_novell_pkis_SingletonChoice }, +}; + +static int +dissect_novell_pkis_Singletons(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + Singletons_sequence_of, hf_index, ett_novell_pkis_Singletons); + + return offset; +} + + +static const ber_sequence_t SecurityLabelType1_sequence[] = { + { &hf_novell_pkis_labelType1, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_secrecyLevel1, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_integrityLevel1, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER_0_255 }, + { &hf_novell_pkis_secrecyCategories1, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BIT_STRING_SIZE_96 }, + { &hf_novell_pkis_integrityCategories1, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BIT_STRING_SIZE_64 }, + { &hf_novell_pkis_secrecySingletons1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_Singletons }, + { &hf_novell_pkis_integritySingletons1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_Singletons }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_SecurityLabelType1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + SecurityLabelType1_sequence, hf_index, ett_novell_pkis_SecurityLabelType1); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_SIZE_1_1_OF_SecurityLabelType1_sequence_of[1] = { + { &hf_novell_pkis_enterpriseLabel_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_SecurityLabelType1 }, +}; + +static int +dissect_novell_pkis_SEQUENCE_SIZE_1_1_OF_SecurityLabelType1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_SIZE_1_1_OF_SecurityLabelType1_sequence_of, hf_index, ett_novell_pkis_SEQUENCE_SIZE_1_1_OF_SecurityLabelType1); + + return offset; +} + + +static const ber_sequence_t EnterpriseId_sequence[] = { + { &hf_novell_pkis_rootLabel, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_novell_pkis_SecurityLabelType1 }, + { &hf_novell_pkis_registryLabel, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_novell_pkis_SecurityLabelType1 }, + { &hf_novell_pkis_enterpriseLabel, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_novell_pkis_SEQUENCE_SIZE_1_1_OF_SecurityLabelType1 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_EnterpriseId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + EnterpriseId_sequence, hf_index, ett_novell_pkis_EnterpriseId); + + return offset; +} + + +static const ber_sequence_t GLBExtensions_sequence[] = { + { &hf_novell_pkis_keyQuality, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_novell_pkis_KeyQuality }, + { &hf_novell_pkis_cryptoProcessQuality, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_novell_pkis_CryptoProcessQuality }, + { &hf_novell_pkis_certificateClass, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_novell_pkis_CertificateClass }, + { &hf_novell_pkis_enterpriseId, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_novell_pkis_EnterpriseId }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_GLBExtensions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + GLBExtensions_sequence, hf_index, ett_novell_pkis_GLBExtensions); + + return offset; +} + + +static const ber_sequence_t SecurityAttributes_sequence[] = { + { &hf_novell_pkis_versionNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_OCTET_STRING_SIZE_2 }, + { &hf_novell_pkis_nSI , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_BOOLEAN }, + { &hf_novell_pkis_securityTM, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_T_securityTM }, + { &hf_novell_pkis_uriReference, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_IA5String }, + { &hf_novell_pkis_gLBExtensions, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_GLBExtensions }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_SecurityAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + SecurityAttributes_sequence, hf_index, ett_novell_pkis_SecurityAttributes); + + return offset; +} + + + +static int +dissect_novell_pkis_Currency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_novell_pkis_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t MonetaryValue_sequence[] = { + { &hf_novell_pkis_currency, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_Currency }, + { &hf_novell_pkis_amount , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER }, + { &hf_novell_pkis_amtExp10, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_MonetaryValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + MonetaryValue_sequence, hf_index, ett_novell_pkis_MonetaryValue); + + return offset; +} + + +static const ber_sequence_t RelianceLimits_sequence[] = { + { &hf_novell_pkis_perTransactionLimit, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_MonetaryValue }, + { &hf_novell_pkis_perCertificateLimit, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_novell_pkis_MonetaryValue }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_novell_pkis_RelianceLimits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + RelianceLimits_sequence, hf_index, ett_novell_pkis_RelianceLimits); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_SecurityAttributes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_novell_pkis_SecurityAttributes(FALSE, tvb, offset, &asn1_ctx, tree, hf_novell_pkis_SecurityAttributes_PDU); + return offset; +} +static int dissect_RelianceLimits_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_novell_pkis_RelianceLimits(FALSE, tvb, offset, &asn1_ctx, tree, hf_novell_pkis_RelianceLimits_PDU); + return offset; +} + + +void proto_register_novell_pkis (void); +void proto_reg_handoff_novell_pkis(void); + +static int proto_novell_pkis = -1; + +void proto_reg_handoff_novell_pkis(void) +{ + register_ber_oid_dissector("2.16.840.1.113719.1.9.4.1", dissect_SecurityAttributes_PDU, proto_novell_pkis, "pa-sa"); + register_ber_oid_dissector("2.16.840.1.113719.1.9.4.2", dissect_RelianceLimits_PDU, proto_novell_pkis, "pa-rl"); + +} + +void proto_register_novell_pkis (void) +{ + static hf_register_info hf[] = { + { &hf_novell_pkis_SecurityAttributes_PDU, + { "SecurityAttributes", "novell_pkis.SecurityAttributes_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_RelianceLimits_PDU, + { "RelianceLimits", "novell_pkis.RelianceLimits_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_versionNumber, + { "versionNumber", "novell_pkis.versionNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_2", HFILL }}, + { &hf_novell_pkis_nSI, + { "nSI", "novell_pkis.nSI", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_novell_pkis_securityTM, + { "securityTM", "novell_pkis.securityTM", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_uriReference, + { "uriReference", "novell_pkis.uriReference", + FT_STRING, BASE_NONE, NULL, 0, + "IA5String", HFILL }}, + { &hf_novell_pkis_gLBExtensions, + { "gLBExtensions", "novell_pkis.gLBExtensions_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_keyQuality, + { "keyQuality", "novell_pkis.keyQuality_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_cryptoProcessQuality, + { "cryptoProcessQuality", "novell_pkis.cryptoProcessQuality_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_certificateClass, + { "certificateClass", "novell_pkis.certificateClass_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_enterpriseId, + { "enterpriseId", "novell_pkis.enterpriseId_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_enforceQuality, + { "enforceQuality", "novell_pkis.enforceQuality", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_novell_pkis_compusecQuality, + { "compusecQuality", "novell_pkis.compusecQuality", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_cryptoQuality, + { "cryptoQuality", "novell_pkis.cryptoQuality", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_keyStorageQuality, + { "keyStorageQuality", "novell_pkis.keyStorageQuality", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_CompusecQuality_item, + { "CompusecQualityPair", "novell_pkis.CompusecQualityPair_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_compusecCriteria, + { "compusecCriteria", "novell_pkis.compusecCriteria", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_compusecRating, + { "compusecRating", "novell_pkis.compusecRating", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_CryptoQuality_item, + { "CryptoQualityPair", "novell_pkis.CryptoQualityPair_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_cryptoModuleCriteria, + { "cryptoModuleCriteria", "novell_pkis.cryptoModuleCriteria", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_cryptoModuleRating, + { "cryptoModuleRating", "novell_pkis.cryptoModuleRating", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_classValue, + { "classValue", "novell_pkis.classValue", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_certificateValid, + { "certificateValid", "novell_pkis.certificateValid", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_novell_pkis_rootLabel, + { "rootLabel", "novell_pkis.rootLabel_element", + FT_NONE, BASE_NONE, NULL, 0, + "SecurityLabelType1", HFILL }}, + { &hf_novell_pkis_registryLabel, + { "registryLabel", "novell_pkis.registryLabel_element", + FT_NONE, BASE_NONE, NULL, 0, + "SecurityLabelType1", HFILL }}, + { &hf_novell_pkis_enterpriseLabel, + { "enterpriseLabel", "novell_pkis.enterpriseLabel", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_1_OF_SecurityLabelType1", HFILL }}, + { &hf_novell_pkis_enterpriseLabel_item, + { "SecurityLabelType1", "novell_pkis.SecurityLabelType1_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_labelType1, + { "labelType1", "novell_pkis.labelType1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_secrecyLevel1, + { "secrecyLevel1", "novell_pkis.secrecyLevel1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_integrityLevel1, + { "integrityLevel1", "novell_pkis.integrityLevel1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_novell_pkis_secrecyCategories1, + { "secrecyCategories1", "novell_pkis.secrecyCategories1", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_96", HFILL }}, + { &hf_novell_pkis_integrityCategories1, + { "integrityCategories1", "novell_pkis.integrityCategories1", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_64", HFILL }}, + { &hf_novell_pkis_secrecySingletons1, + { "secrecySingletons1", "novell_pkis.secrecySingletons1", + FT_UINT32, BASE_DEC, NULL, 0, + "Singletons", HFILL }}, + { &hf_novell_pkis_integritySingletons1, + { "integritySingletons1", "novell_pkis.integritySingletons1", + FT_UINT32, BASE_DEC, NULL, 0, + "Singletons", HFILL }}, + { &hf_novell_pkis_Singletons_item, + { "SingletonChoice", "novell_pkis.SingletonChoice", + FT_UINT32, BASE_DEC, VALS(novell_pkis_SingletonChoice_vals), 0, + NULL, HFILL }}, + { &hf_novell_pkis_uniqueSingleton, + { "uniqueSingleton", "novell_pkis.uniqueSingleton", + FT_UINT64, BASE_DEC, NULL, 0, + "INTEGER_0_9223372036854775807", HFILL }}, + { &hf_novell_pkis_singletonRange, + { "singletonRange", "novell_pkis.singletonRange_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_singletonLowerBound, + { "singletonLowerBound", "novell_pkis.singletonLowerBound", + FT_UINT64, BASE_DEC, NULL, 0, + "INTEGER_0_9223372036854775807", HFILL }}, + { &hf_novell_pkis_singletonUpperBound, + { "singletonUpperBound", "novell_pkis.singletonUpperBound", + FT_UINT64, BASE_DEC, NULL, 0, + "INTEGER_0_9223372036854775807", HFILL }}, + { &hf_novell_pkis_singletonValue, + { "singletonValue", "novell_pkis.singletonValue", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_novell_pkis_perTransactionLimit, + { "perTransactionLimit", "novell_pkis.perTransactionLimit_element", + FT_NONE, BASE_NONE, NULL, 0, + "MonetaryValue", HFILL }}, + { &hf_novell_pkis_perCertificateLimit, + { "perCertificateLimit", "novell_pkis.perCertificateLimit_element", + FT_NONE, BASE_NONE, NULL, 0, + "MonetaryValue", HFILL }}, + { &hf_novell_pkis_currency, + { "currency", "novell_pkis.currency", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_novell_pkis_amount, + { "amount", "novell_pkis.amount", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_novell_pkis_amtExp10, + { "amtExp10", "novell_pkis.amtExp10", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + }; + static gint *ett[] = { + &ett_novell_pkis_SecurityAttributes, + &ett_novell_pkis_GLBExtensions, + &ett_novell_pkis_Quality, + &ett_novell_pkis_CompusecQuality, + &ett_novell_pkis_CompusecQualityPair, + &ett_novell_pkis_CryptoQuality, + &ett_novell_pkis_CryptoQualityPair, + &ett_novell_pkis_CertificateClass, + &ett_novell_pkis_EnterpriseId, + &ett_novell_pkis_SEQUENCE_SIZE_1_1_OF_SecurityLabelType1, + &ett_novell_pkis_SecurityLabelType1, + &ett_novell_pkis_Singletons, + &ett_novell_pkis_SingletonChoice, + &ett_novell_pkis_SingletonRange, + &ett_novell_pkis_RelianceLimits, + &ett_novell_pkis_MonetaryValue, + }; + + /* execute protocol initialization only once */ + if (proto_novell_pkis != -1) return; + + proto_novell_pkis = proto_register_protocol("Novell PKIS ASN.1 type", "novell_pkis", "novell_pkis"); + proto_register_field_array (proto_novell_pkis, hf, array_length (hf)); + proto_register_subtree_array (ett, array_length (ett)); +} |