New protocol PKIXQualified from RFC3739

svn path=/trunk/; revision=12528
This commit is contained in:
Ronnie Sahlberg 2004-11-14 09:50:24 +00:00
parent e7082f5194
commit e7b85d2760
7 changed files with 915 additions and 0 deletions

View File

@ -0,0 +1,220 @@
-- This ASN definition is taken from (and modified to pass through asn2eth)
-- RFC3739
--
-- RFC3739 contains the followin copyright statements:
--
-- Full Copyright Statement
--
-- Copyright (C) The Internet Society (2004). This document is subject
-- to the rights, licenses and restrictions contained in BCP 78 and
-- except as set forth therein, the authors retain all their rights.
--
-- This document and the information contained herein are provided on an
-- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
-- REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
-- INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
-- THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
-- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--
-- Intellectual Property
--
-- The IETF takes no position regarding the validity or scope of any
-- Intellectual Property Rights or other rights that might be claimed
-- to pertain to the implementation or use of the technology
-- described in this document or the extent to which any license
-- under such rights might or might not be available; nor does it
-- represent that it has made any independent effort to identify any
-- such rights. Information on the procedures with respect to
-- rights in RFC documents can be found in BCP 78 and BCP 79.
--
-- Copies of IPR disclosures made to the IETF Secretariat and any
-- assurances of licenses to be made available, or the result of an
-- attempt made to obtain a general license or permission for the use
-- of such proprietary rights by implementers or users of this
-- specification can be obtained from the IETF on-line IPR repository
-- at http://www.ietf.org/ipr.
--
-- The IETF invites any interested party to bring to its attention
-- any copyrights, patents or patent applications, or other
-- proprietary rights that may cover technology that may be required
-- to implement this standard. Please address the information to the
-- IETF at ietf-ipr@ietf.org.
--
-- Acknowledgement
--
-- Funding for the RFC Editor function is currently provided by the
-- Internet Society.
--
PKIXqualified97 {iso(1) identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-qualified-cert-97(35) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
IMPORTS
informationFramework, certificateExtensions, selectedAttributeTypes,
authenticationFramework, upperBounds, id-at
FROM UsefulDefinitions {joint-iso-itu-t(2) ds(5) module(1)
usefulDefinitions(0) 3 }
ub-name
FROM UpperBounds upperBounds
GeneralName
FROM CertificateExtensions certificateExtensions
ATTRIBUTE, AttributeType
FROM InformationFramework informationFramework
DirectoryString
FROM SelectedAttributeTypes selectedAttributeTypes
AlgorithmIdentifier, Extension, EXTENSION
FROM AuthenticationFramework authenticationFramework
id-pkix, id-pe
FROM PKIX1Explicit88 { iso(1) identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
id-pkix1-explicit(18) };
-- Locally defined OIDs
-- Arc for QC personal data attributes
-- id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }
-- Arc for QC statements
-- id-qcs OBJECT IDENTIFIER ::= { id-pkix 11 }
-- Personal data attributes
-- id-pda-dateOfBirth AttributeType ::= { id-pda 1 }
-- id-pda-placeOfBirth AttributeType ::= { id-pda 2 }
-- id-pda-gender AttributeType ::= { id-pda 3 }
-- id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 }
-- id-pda-countryOfResidence AttributeType ::= { id-pda 5 }
-- Certificate extensions
-- id-pe-biometricInfo OBJECT IDENTIFIER ::= { id-pe 2 }
-- id-pe-qcStatements OBJECT IDENTIFIER ::= { id-pe 3 }
-- QC statements
-- id-qcs-pkixQCSyntax-v1 OBJECT IDENTIFIER ::= { id-qcs 1 }
-- id-qcs-pkixQCSyntax-v2 OBJECT IDENTIFIER ::= { id-qcs 2 }
Generalizedtime ::= GeneralizedTime
Directorystring ::= DirectoryString
Printablestring ::= PrintableString
-- Personal data attributes
--
-- dateOfBirth ATTRIBUTE ::= {
-- WITH SYNTAX GeneralizedTime
-- ID id-pda-dateOfBirth }
--
-- placeOfBirth ATTRIBUTE ::= {
-- WITH SYNTAX DirectoryString {ub-name}
-- ID id-pda-placeOfBirth }
--
-- gender ATTRIBUTE ::= {
-- WITH SYNTAX PrintableString (SIZE(1) ^ FROM("M"|"F"|"m"|"f"))
-- ID id-pda-gender }
--
-- countryOfCitizenship ATTRIBUTE ::= {
-- WITH SYNTAX PrintableString (SIZE (2))
-- (CONSTRAINED BY { })
-- ID id-pda-countryOfCitizenship }
--
-- countryOfResidence ATTRIBUTE ::= {
-- WITH SYNTAX PrintableString (SIZE (2))
-- (CONSTRAINED BY { })
-- ID id-pda-countryOfResidence }
--
-- Certificate extensions
-- Biometric info extension
--
-- biometricInfo EXTENSION ::= {
-- SYNTAX BiometricSyntax
-- IDENTIFIED BY id-pe-biometricInfo }
BiometricSyntax ::= SEQUENCE OF BiometricData
BiometricData ::= SEQUENCE {
typeOfBiometricData TypeOfBiometricData,
hashAlgorithm AlgorithmIdentifier,
biometricDataHash OCTET STRING,
sourceDataUri IA5String OPTIONAL,
... }
TypeOfBiometricData ::= CHOICE {
predefinedBiometricType PredefinedBiometricType,
biometricDataOid OBJECT IDENTIFIER }
PredefinedBiometricType ::= INTEGER {
picture(0), handwritten-signature(1)}
-- QC Statements Extension
-- NOTE: This extension does not allow to mix critical and
-- non-critical Qualified Certificate Statements. Either all
-- statements must be critical or all statements must be
-- non-critical.
--
-- qcStatements EXTENSION ::= {
-- SYNTAX QCStatements
-- IDENTIFIED BY id-pe-qcStatements }
QCStatements ::= SEQUENCE OF QCStatement
QCStatement ::= SEQUENCE {
statementId OBJECT IDENTIFIER,
statementInfo ANY OPTIONAL }
-- QC-STATEMENT ::= CLASS {
-- &id OBJECT IDENTIFIER UNIQUE,
-- &Type OPTIONAL }
-- WITH SYNTAX {
-- [SYNTAX &Type] IDENTIFIED BY &id }
-- qcStatement-1 QC-STATEMENT ::= { SYNTAX SemanticsInformation
-- IDENTIFIED BY id-qcs-pkixQCSyntax-v1}
-- This statement identifies conformance with requirements
-- defined in RFC 3039 (Version 1). This statement
-- may optionally contain additional semantics information
-- as specified below.
-- qcStatement-2 QC-STATEMENT ::= { SYNTAX SemanticsInformation
-- IDENTIFIED BY id-qcs-pkixQCSyntax-v2}
-- This statement identifies conformance with requirements
-- defined in this Qualified Certificate profile
-- (Version 2). This statement may optionally contain
-- additional semantics information as specified below.
SemanticsInformation ::= SEQUENCE {
semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL
}
NameRegistrationAuthorities ::= SEQUENCE OF GeneralName
-- The following information object set is defined to constrain the
-- set of attributes applications are required to recognize as QCSs.
-- SupportedStatements QC-STATEMENT ::= {
-- qcStatement-1 |
-- qcStatement-2 , ... }
END

View File

@ -0,0 +1,86 @@
/* packet-pkixqualified.c
* Routines for RFC3739 PKIXqualified packet dissection
* Ronnie Sahlberg 2004
*
* $Id: packet-pkixqualified-template.c 12434 2004-10-29 12:11:42Z sahlberg $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
#include "packet-ber.h"
#include "packet-pkixqualified.h"
#include "packet-x509af.h"
#include "packet-x509ce.h"
#include "packet-x509sat.h"
#define PNAME "PKIX Qualified"
#define PSNAME "PKIXQUALIFIED"
#define PFNAME "pkixqualified"
/* Initialize the protocol and registered fields */
int proto_pkixqualified = -1;
#include "packet-pkixqualified-hf.c"
/* Initialize the subtree pointers */
#include "packet-pkixqualified-ett.c"
static char object_identifier_id[64]; /*64 chars should be long enough? */
#include "packet-pkixqualified-fn.c"
/*--- proto_register_pkixqualified ----------------------------------------------*/
void proto_register_pkixqualified(void) {
/* List of fields */
static hf_register_info hf[] = {
#include "packet-pkixqualified-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
#include "packet-pkixqualified-ettarr.c"
};
/* Register protocol */
proto_pkixqualified = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_pkixqualified, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
/*--- proto_reg_handoff_pkixqualified -------------------------------------------*/
void proto_reg_handoff_pkixqualified(void) {
#include "packet-pkixqualified-dis-tab.c"
}

View File

@ -0,0 +1,31 @@
/* packet-pkixqualified.h
* Routines for RFC3739 PKIXqualified packet dissection
*
* $Id: packet-pkixqualified-template.h 12434 2004-10-29 12:11:42Z sahlberg $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef PACKET_PKIXQUALIFIED_H
#define PACKET_PKIXQUALIFIED_H
/*#include "packet-pkixqualified-exp.h"*/
#endif /* PACKET_PKIXQUALIFIED_H */

View File

@ -0,0 +1,43 @@
# PKIXqualified.cnf
# PKIXqualified conformation file
# $Id: pkixqualified.cnf 12434 2004-10-29 12:11:42Z sahlberg $
#.MODULE_IMPORT
CertificateExtensions x509ce
AuthenticationFramework x509af
SelectedAttributeTypes x509sat
#.INCLUDE ../x509ce/x509ce_exp.cnf
#.INCLUDE ../x509af/x509af_exp.cnf
#.INCLUDE ../x509sat/x509sat_exp.cnf
#.EXPORTS
#.REGISTER
BiometricSyntax B "1.3.6.1.5.5.7.1.2" "id-pe-biometricInfo"
QCStatements B "1.3.6.1.5.5.7.1.3" "id-pe-qcStatements"
SemanticsInformation B "1.3.6.1.5.5.7.11.1" "id-qcs-pkixQCSyntax-v1"
SemanticsInformation B "1.3.6.1.5.5.7.11.2" "id-qcs-pkixQCSyntax-v2"
Generalizedtime B "1.3.6.1.5.5.7.9.1" "id-pda-dateOfBirth"
Directorystring B "1.3.6.1.5.5.7.9.2" "id-pda-placeOfBirth"
Printablestring B "1.3.6.1.5.5.7.9.3" "id-pda-gender"
Printablestring B "1.3.6.1.5.5.7.9.4" "id-pda-countryOfCitizenship"
Printablestring B "1.3.6.1.5.5.7.9.5" "id-pda-countryOfResidence"
#.NO_EMIT
#.TYPE_RENAME
#.FIELD_RENAME
#.FN_BODY QCStatement/statementId
offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
hf_pkixqualified_statementId, object_identifier_id);
#.FN_BODY QCStatement/statementInfo
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
#.END

View File

@ -389,6 +389,7 @@ DISSECTOR_SRC = \
packet-pkcs1.c \
packet-pkix1explicit.c \
packet-pkix1implicit.c \
packet-pkixqualified.c \
packet-pkinit.c \
packet-pktc.c \
packet-pop.c \
@ -673,6 +674,7 @@ DISSECTOR_INCLUDES = \
packet-pkcs1.h \
packet-pkix1explicit.h \
packet-pkix1implicit.h \
packet-pkixqualified.h \
packet-pkinit.h \
packet-pktc.h \
packet-portmap.h \

View File

@ -0,0 +1,495 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* ./packet-pkixqualified.c */
/* ../../tools/asn2eth.py -X -b -e -p pkixqualified -c pkixqualified.cnf -s packet-pkixqualified-template PKIXqualified.asn */
/* Input file: packet-pkixqualified-template.c */
/* packet-pkixqualified.c
* Routines for RFC3739 PKIXqualified packet dissection
* Ronnie Sahlberg 2004
*
* $Id: packet-pkixqualified-template.c 12434 2004-10-29 12:11:42Z sahlberg $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
#include "packet-ber.h"
#include "packet-pkixqualified.h"
#include "packet-x509af.h"
#include "packet-x509ce.h"
#include "packet-x509sat.h"
#define PNAME "PKIX Qualified"
#define PSNAME "PKIXQUALIFIED"
#define PFNAME "pkixqualified"
/* Initialize the protocol and registered fields */
int proto_pkixqualified = -1;
/*--- Included file: packet-pkixqualified-hf.c ---*/
static int hf_pkixqualified_Generalizedtime_PDU = -1; /* Generalizedtime */
static int hf_pkixqualified_Directorystring_PDU = -1; /* Directorystring */
static int hf_pkixqualified_Printablestring_PDU = -1; /* Printablestring */
static int hf_pkixqualified_BiometricSyntax_PDU = -1; /* BiometricSyntax */
static int hf_pkixqualified_QCStatements_PDU = -1; /* QCStatements */
static int hf_pkixqualified_SemanticsInformation_PDU = -1; /* SemanticsInformation */
static int hf_pkixqualified_BiometricSyntax_item = -1; /* BiometricData */
static int hf_pkixqualified_typeOfBiometricData = -1; /* TypeOfBiometricData */
static int hf_pkixqualified_hashAlgorithm = -1; /* AlgorithmIdentifier */
static int hf_pkixqualified_biometricDataHash = -1; /* OCTET_STRING */
static int hf_pkixqualified_sourceDataUri = -1; /* IA5String */
static int hf_pkixqualified_predefinedBiometricType = -1; /* PredefinedBiometricType */
static int hf_pkixqualified_biometricDataOid = -1; /* OBJECT_IDENTIFIER */
static int hf_pkixqualified_QCStatements_item = -1; /* QCStatement */
static int hf_pkixqualified_statementId = -1; /* T_statementId */
static int hf_pkixqualified_statementInfo = -1; /* T_statementInfo */
static int hf_pkixqualified_semanticsIdentifier = -1; /* OBJECT_IDENTIFIER */
static int hf_pkixqualified_nameRegistrationAuthorities = -1; /* NameRegistrationAuthorities */
static int hf_pkixqualified_NameRegistrationAuthorities_item = -1; /* GeneralName */
/*--- End of included file: packet-pkixqualified-hf.c ---*/
/* Initialize the subtree pointers */
/*--- Included file: packet-pkixqualified-ett.c ---*/
static gint ett_pkixqualified_BiometricSyntax = -1;
static gint ett_pkixqualified_BiometricData = -1;
static gint ett_pkixqualified_TypeOfBiometricData = -1;
static gint ett_pkixqualified_QCStatements = -1;
static gint ett_pkixqualified_QCStatement = -1;
static gint ett_pkixqualified_SemanticsInformation = -1;
static gint ett_pkixqualified_NameRegistrationAuthorities = -1;
/*--- End of included file: packet-pkixqualified-ett.c ---*/
static char object_identifier_id[64]; /*64 chars should be long enough? */
/*--- Included file: packet-pkixqualified-fn.c ---*/
/*--- Fields for imported types ---*/
static int dissect_hashAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_hashAlgorithm);
}
static int dissect_NameRegistrationAuthorities_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_x509ce_GeneralName(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_NameRegistrationAuthorities_item);
}
static int
dissect_pkixqualified_Generalizedtime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_generalized_time(pinfo, tree, tvb, offset, hf_index);
return offset;
}
static int
dissect_pkixqualified_Directorystring(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_x509sat_DirectoryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
return offset;
}
static int
dissect_pkixqualified_Printablestring(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const value_string PredefinedBiometricType_vals[] = {
{ 0, "picture" },
{ 1, "handwritten-signature" },
{ 0, NULL }
};
static int
dissect_pkixqualified_PredefinedBiometricType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int dissect_predefinedBiometricType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_PredefinedBiometricType(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_predefinedBiometricType);
}
static int
dissect_pkixqualified_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
hf_index, NULL);
return offset;
}
static int dissect_biometricDataOid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_biometricDataOid);
}
static int dissect_semanticsIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_semanticsIdentifier);
}
static const value_string TypeOfBiometricData_vals[] = {
{ 0, "predefinedBiometricType" },
{ 1, "biometricDataOid" },
{ 0, NULL }
};
static const ber_choice TypeOfBiometricData_choice[] = {
{ 0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_predefinedBiometricType },
{ 1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_biometricDataOid },
{ 0, 0, 0, 0, NULL }
};
static int
dissect_pkixqualified_TypeOfBiometricData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
TypeOfBiometricData_choice, hf_index, ett_pkixqualified_TypeOfBiometricData);
return offset;
}
static int dissect_typeOfBiometricData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_TypeOfBiometricData(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_typeOfBiometricData);
}
static int
dissect_pkixqualified_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_biometricDataHash(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_biometricDataHash);
}
static int
dissect_pkixqualified_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
pinfo, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int dissect_sourceDataUri(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_IA5String(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_sourceDataUri);
}
static const ber_sequence BiometricData_sequence[] = {
{ BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_typeOfBiometricData },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_hashAlgorithm },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_biometricDataHash },
{ BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sourceDataUri },
{ 0, 0, 0, NULL }
};
static int
dissect_pkixqualified_BiometricData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
BiometricData_sequence, hf_index, ett_pkixqualified_BiometricData);
return offset;
}
static int dissect_BiometricSyntax_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_BiometricData(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_BiometricSyntax_item);
}
static const ber_sequence BiometricSyntax_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BiometricSyntax_item },
};
static int
dissect_pkixqualified_BiometricSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
BiometricSyntax_sequence_of, hf_index, ett_pkixqualified_BiometricSyntax);
return offset;
}
static int
dissect_pkixqualified_T_statementId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
hf_pkixqualified_statementId, object_identifier_id);
return offset;
}
static int dissect_statementId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_T_statementId(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_statementId);
}
static int
dissect_pkixqualified_T_statementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
return offset;
}
static int dissect_statementInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_T_statementInfo(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_statementInfo);
}
static const ber_sequence QCStatement_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_statementId },
{ BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_statementInfo },
{ 0, 0, 0, NULL }
};
static int
dissect_pkixqualified_QCStatement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
QCStatement_sequence, hf_index, ett_pkixqualified_QCStatement);
return offset;
}
static int dissect_QCStatements_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_QCStatement(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_QCStatements_item);
}
static const ber_sequence QCStatements_sequence_of[1] = {
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_QCStatements_item },
};
static int
dissect_pkixqualified_QCStatements(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
QCStatements_sequence_of, hf_index, ett_pkixqualified_QCStatements);
return offset;
}
static const ber_sequence NameRegistrationAuthorities_sequence_of[1] = {
{ BER_CLASS_ANY, -1, BER_FLAGS_NOOWNTAG, dissect_NameRegistrationAuthorities_item },
};
static int
dissect_pkixqualified_NameRegistrationAuthorities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
NameRegistrationAuthorities_sequence_of, hf_index, ett_pkixqualified_NameRegistrationAuthorities);
return offset;
}
static int dissect_nameRegistrationAuthorities(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_pkixqualified_NameRegistrationAuthorities(FALSE, tvb, offset, pinfo, tree, hf_pkixqualified_nameRegistrationAuthorities);
}
static const ber_sequence SemanticsInformation_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_semanticsIdentifier },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_nameRegistrationAuthorities },
{ 0, 0, 0, NULL }
};
static int
dissect_pkixqualified_SemanticsInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
SemanticsInformation_sequence, hf_index, ett_pkixqualified_SemanticsInformation);
return offset;
}
/*--- PDUs ---*/
static void dissect_Generalizedtime_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_Generalizedtime(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_Generalizedtime_PDU);
}
static void dissect_Directorystring_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_Directorystring(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_Directorystring_PDU);
}
static void dissect_Printablestring_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_Printablestring(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_Printablestring_PDU);
}
static void dissect_BiometricSyntax_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_BiometricSyntax(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_BiometricSyntax_PDU);
}
static void dissect_QCStatements_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_QCStatements(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_QCStatements_PDU);
}
static void dissect_SemanticsInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkixqualified_SemanticsInformation(FALSE, tvb, 0, pinfo, tree, hf_pkixqualified_SemanticsInformation_PDU);
}
/*--- End of included file: packet-pkixqualified-fn.c ---*/
/*--- proto_register_pkixqualified ----------------------------------------------*/
void proto_register_pkixqualified(void) {
/* List of fields */
static hf_register_info hf[] = {
/*--- Included file: packet-pkixqualified-hfarr.c ---*/
{ &hf_pkixqualified_Generalizedtime_PDU,
{ "Generalizedtime", "pkixqualified.Generalizedtime",
FT_STRING, BASE_NONE, NULL, 0,
"Generalizedtime", HFILL }},
{ &hf_pkixqualified_Directorystring_PDU,
{ "Directorystring", "pkixqualified.Directorystring",
FT_NONE, BASE_NONE, NULL, 0,
"Directorystring", HFILL }},
{ &hf_pkixqualified_Printablestring_PDU,
{ "Printablestring", "pkixqualified.Printablestring",
FT_STRING, BASE_NONE, NULL, 0,
"Printablestring", HFILL }},
{ &hf_pkixqualified_BiometricSyntax_PDU,
{ "BiometricSyntax", "pkixqualified.BiometricSyntax",
FT_UINT32, BASE_DEC, NULL, 0,
"BiometricSyntax", HFILL }},
{ &hf_pkixqualified_QCStatements_PDU,
{ "QCStatements", "pkixqualified.QCStatements",
FT_UINT32, BASE_DEC, NULL, 0,
"QCStatements", HFILL }},
{ &hf_pkixqualified_SemanticsInformation_PDU,
{ "SemanticsInformation", "pkixqualified.SemanticsInformation",
FT_NONE, BASE_NONE, NULL, 0,
"SemanticsInformation", HFILL }},
{ &hf_pkixqualified_BiometricSyntax_item,
{ "Item", "pkixqualified.BiometricSyntax_item",
FT_NONE, BASE_NONE, NULL, 0,
"BiometricSyntax/_item", HFILL }},
{ &hf_pkixqualified_typeOfBiometricData,
{ "typeOfBiometricData", "pkixqualified.typeOfBiometricData",
FT_UINT32, BASE_DEC, VALS(TypeOfBiometricData_vals), 0,
"BiometricData/typeOfBiometricData", HFILL }},
{ &hf_pkixqualified_hashAlgorithm,
{ "hashAlgorithm", "pkixqualified.hashAlgorithm",
FT_NONE, BASE_NONE, NULL, 0,
"BiometricData/hashAlgorithm", HFILL }},
{ &hf_pkixqualified_biometricDataHash,
{ "biometricDataHash", "pkixqualified.biometricDataHash",
FT_BYTES, BASE_HEX, NULL, 0,
"BiometricData/biometricDataHash", HFILL }},
{ &hf_pkixqualified_sourceDataUri,
{ "sourceDataUri", "pkixqualified.sourceDataUri",
FT_STRING, BASE_NONE, NULL, 0,
"BiometricData/sourceDataUri", HFILL }},
{ &hf_pkixqualified_predefinedBiometricType,
{ "predefinedBiometricType", "pkixqualified.predefinedBiometricType",
FT_INT32, BASE_DEC, VALS(PredefinedBiometricType_vals), 0,
"TypeOfBiometricData/predefinedBiometricType", HFILL }},
{ &hf_pkixqualified_biometricDataOid,
{ "biometricDataOid", "pkixqualified.biometricDataOid",
FT_STRING, BASE_NONE, NULL, 0,
"TypeOfBiometricData/biometricDataOid", HFILL }},
{ &hf_pkixqualified_QCStatements_item,
{ "Item", "pkixqualified.QCStatements_item",
FT_NONE, BASE_NONE, NULL, 0,
"QCStatements/_item", HFILL }},
{ &hf_pkixqualified_statementId,
{ "statementId", "pkixqualified.statementId",
FT_STRING, BASE_NONE, NULL, 0,
"QCStatement/statementId", HFILL }},
{ &hf_pkixqualified_statementInfo,
{ "statementInfo", "pkixqualified.statementInfo",
FT_NONE, BASE_NONE, NULL, 0,
"QCStatement/statementInfo", HFILL }},
{ &hf_pkixqualified_semanticsIdentifier,
{ "semanticsIdentifier", "pkixqualified.semanticsIdentifier",
FT_STRING, BASE_NONE, NULL, 0,
"SemanticsInformation/semanticsIdentifier", HFILL }},
{ &hf_pkixqualified_nameRegistrationAuthorities,
{ "nameRegistrationAuthorities", "pkixqualified.nameRegistrationAuthorities",
FT_UINT32, BASE_DEC, NULL, 0,
"SemanticsInformation/nameRegistrationAuthorities", HFILL }},
{ &hf_pkixqualified_NameRegistrationAuthorities_item,
{ "Item", "pkixqualified.NameRegistrationAuthorities_item",
FT_NONE, BASE_NONE, NULL, 0,
"NameRegistrationAuthorities/_item", HFILL }},
/*--- End of included file: packet-pkixqualified-hfarr.c ---*/
};
/* List of subtrees */
static gint *ett[] = {
/*--- Included file: packet-pkixqualified-ettarr.c ---*/
&ett_pkixqualified_BiometricSyntax,
&ett_pkixqualified_BiometricData,
&ett_pkixqualified_TypeOfBiometricData,
&ett_pkixqualified_QCStatements,
&ett_pkixqualified_QCStatement,
&ett_pkixqualified_SemanticsInformation,
&ett_pkixqualified_NameRegistrationAuthorities,
/*--- End of included file: packet-pkixqualified-ettarr.c ---*/
};
/* Register protocol */
proto_pkixqualified = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_pkixqualified, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
/*--- proto_reg_handoff_pkixqualified -------------------------------------------*/
void proto_reg_handoff_pkixqualified(void) {
/*--- Included file: packet-pkixqualified-dis-tab.c ---*/
register_ber_oid_dissector("1.3.6.1.5.5.7.1.2", dissect_BiometricSyntax_PDU, proto_pkixqualified, "id-pe-biometricInfo");
register_ber_oid_dissector("1.3.6.1.5.5.7.1.3", dissect_QCStatements_PDU, proto_pkixqualified, "id-pe-qcStatements");
register_ber_oid_dissector("1.3.6.1.5.5.7.11.1", dissect_SemanticsInformation_PDU, proto_pkixqualified, "id-qcs-pkixQCSyntax-v1");
register_ber_oid_dissector("1.3.6.1.5.5.7.11.2", dissect_SemanticsInformation_PDU, proto_pkixqualified, "id-qcs-pkixQCSyntax-v2");
register_ber_oid_dissector("1.3.6.1.5.5.7.9.1", dissect_Generalizedtime_PDU, proto_pkixqualified, "id-pda-dateOfBirth");
register_ber_oid_dissector("1.3.6.1.5.5.7.9.2", dissect_Directorystring_PDU, proto_pkixqualified, "id-pda-placeOfBirth");
register_ber_oid_dissector("1.3.6.1.5.5.7.9.3", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-gender");
register_ber_oid_dissector("1.3.6.1.5.5.7.9.4", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-countryOfCitizenship");
register_ber_oid_dissector("1.3.6.1.5.5.7.9.5", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-countryOfResidence");
/*--- End of included file: packet-pkixqualified-dis-tab.c ---*/
}

View File

@ -0,0 +1,38 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* ./packet-pkixqualified.h */
/* ../../tools/asn2eth.py -X -b -e -p pkixqualified -c pkixqualified.cnf -s packet-pkixqualified-template PKIXqualified.asn */
/* Input file: packet-pkixqualified-template.h */
/* packet-pkixqualified.h
* Routines for RFC3739 PKIXqualified packet dissection
*
* $Id: packet-pkixqualified-template.h 12434 2004-10-29 12:11:42Z sahlberg $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef PACKET_PKIXQUALIFIED_H
#define PACKET_PKIXQUALIFIED_H
/*#include "packet-pkixqualified-exp.h"*/
#endif /* PACKET_PKIXQUALIFIED_H */