diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2004-09-16 08:58:28 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2004-09-16 08:58:28 +0000 |
commit | 0388e3cd12bd3f59422200ceb1dd9eb287c77e01 (patch) | |
tree | c25d41edc204b53e30eb82e9731cfb10e9aaeecd | |
parent | 1335871c8eaf1af3a342ce8a32923f4b1a5565c8 (diff) |
new protocol PKIX1EXPLICIT
svn path=/trunk/; revision=12013
-rw-r--r-- | asn1/pkix1explicit/PKIX1EXPLICIT93.asn | 854 | ||||
-rw-r--r-- | asn1/pkix1explicit/packet-pkix1explicit-template.c | 113 | ||||
-rw-r--r-- | asn1/pkix1explicit/packet-pkix1explicit-template.h | 37 | ||||
-rw-r--r-- | asn1/pkix1explicit/pkix1explicit.cnf | 21 | ||||
-rw-r--r-- | asn1/pkix1explicit/pkix1explicit_exp.cnf | 15 |
5 files changed, 1040 insertions, 0 deletions
diff --git a/asn1/pkix1explicit/PKIX1EXPLICIT93.asn b/asn1/pkix1explicit/PKIX1EXPLICIT93.asn new file mode 100644 index 0000000000..a812a8398c --- /dev/null +++ b/asn1/pkix1explicit/PKIX1EXPLICIT93.asn @@ -0,0 +1,854 @@ +-- This file is based on PKIX1Explicit93 definition in +-- RFC2459 section b.1 +-- +--Appendix F of RFC2459 +--Appendix F. Full Copyright Statement +-- +-- Copyright (C) The Internet Society (1999). All Rights Reserved. +-- +-- This document and translations of it may be copied and furnished to +-- others, and derivative works that comment on or otherwise explain it +-- or assist in its implementation may be prepared, copied, published +-- and distributed, in whole or in part, without restriction of any +-- kind, provided that the above copyright notice and this paragraph are +-- included on all such copies and derivative works. However, this +-- document itself may not be modified in any way, such as by removing +-- the copyright notice or references to the Internet Society or other +-- Internet organizations, except as needed for the purpose of +-- developing Internet standards in which case the procedures for +-- copyrights defined in the Internet Standards process must be +-- followed, or as required to translate it into languages other than +-- English. +-- +-- The limited permissions granted above are perpetual and will not be +-- revoked by the Internet Society or its successors or assigns. +-- +-- This document and the information contained herein is provided on an +-- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +-- TASK FORCE DISCLAIMS 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. +-- +-- +--NOTE: This ASN1 definition have been significantly modified from the original +--version in RFC2459 in order to accomodate the featuresets available +--in the ethereal projects asn2eth compiler. +--It has also been modified and structures have been commented out that +--are already implemented in the X509 dissectors. +--Dissectors present already in the X509 dissectors should be implemented in +--the template by hand as stubs that will just call the original +--dissector functions in X509 in order not to duplicate code. +-- +--Structures and constructs in this definition are uncommented and +--implemented on-demand when someone needs them. +-- +--If you export new types from this file, make sure to update the +--pkix1explicit_exp.cnf file with the proper definitions + + + +PKIX1Explicit93 {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-93(3)} + + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +-- EXPORTS ALL -- + +IMPORTS + authorityKeyIdentifier, subjectKeyIdentifier, keyUsage, + extendedKeyUsage, privateKeyUsagePeriod, certificatePolicies, + policyMappings, subjectAltName, issuerAltName, + basicConstraints, nameConstraints, policyConstraints, + cRLDistributionPoints, subjectDirectoryAttributes, + cRLNumber, reasonCode, instructionCode, invalidityDate, + issuingDistributionPoint, certificateIssuer, + deltaCRLIndicator, authorityInfoAccess, id-ce + FROM PKIX1Implicit93 {iso(1) identified-organization(3) + dod(6) internet(1) security(5) mechanisms(5) pkix(7) + id-mod(0) id-pkix1-implicit-93(4)} ; + +-- +-- Locally defined OIDs +-- +--id-pkix OBJECT IDENTIFIER ::= +-- { iso(1) identified-organization(3) dod(6) internet(1) +-- security(5) mechanisms(5) pkix(7) } +-- +-- PKIX arcs +-- arc for private certificate extensions +--id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } +-- arc for policy qualifier types +--id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } +-- arc for extended key purpose OIDS +--id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } +-- arc for access descriptors +--id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } +-- +-- policyQualifierIds for Internet policy qualifiers +--id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } +-- OID for CPS qualifier +-- +--id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } +-- OID for user notice qualifier +-- +-- based on excerpts from AuthenticationFramework +-- {joint-iso-ccitt ds(5) modules(1) authenticationFramework(7) 2} +-- +-- Public Key Certificate +-- +--Certificate ::= SIGNED { SEQUENCE { +-- version [0] Version DEFAULT v1, +-- serialNumber CertificateSerialNumber, +-- signature AlgorithmIdentifier, +-- issuer Name, +-- validity Validity, +-- subject Name, +-- subjectPublicKeyInfo SubjectPublicKeyInfo, +-- issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL, +-- if present, version shall be v2 or v3 +-- subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL, +-- if present, version shall be v2 or v3 +-- extensions [3] Extensions OPTIONAL +-- if present, version shall be v3 +-- } +--} +-- +--UniqueIdentifier ::= BIT STRING +-- +--Version ::= INTEGER { v1(0), v2(1), v3(2) } + + -- This one is defined with .NO_EMIT in the conformance file + -- and implemented in the template as just a call to the + -- corresponding function in x509 +CertificateSerialNumber ::= INTEGER + +--Validity ::= SEQUENCE { +-- notBefore Time, +-- notAfter Time } +-- +--Time ::= CHOICE { +-- utcTime UTCTime, +-- generalTime GeneralizedTime } +-- + + + + -- This one is implemented in the template as just a call to the + -- corresponding function in x509 +--SubjectPublicKeyInfo ::= SEQUENCE{ +-- algorithm AlgorithmIdentifier, +-- subjectPublicKey BIT STRING +--} + + + + +--Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension +-- +--Extension ::= SEQUENCE { +-- extnId EXTENSION.&id ({ExtensionSet}), +-- critical BOOLEAN DEFAULT FALSE, +-- extnValue OCTET STRING } +-- contains a DER encoding of a value of type +-- &ExtnType for the +-- extension object identified by extnId +-- +-- The following information object set is defined to constrain the +-- set of legal certificate extensions. +-- +--ExtensionSet EXTENSION ::= { authorityKeyIdentifier | +-- subjectKeyIdentifier | +-- keyUsage | +-- extendedKeyUsage | +-- privateKeyUsagePeriod | +-- certificatePolicies | +-- policyMappings | +-- subjectAltName | +-- issuerAltName | +-- basicConstraints | +-- nameConstraints | +-- policyConstraints | +-- cRLDistributionPoints | +-- subjectDirectoryAttributes | +-- authorityInfoAccess } +-- +--EXTENSION ::= CLASS { +-- &id OBJECT IDENTIFIER UNIQUE, +-- &ExtnType } +--WITH SYNTAX { +-- SYNTAX &ExtnType +-- IDENTIFIED BY &id } +-- +-- Certificate Revocation List +-- +--CertificateList ::= SIGNED { SEQUENCE { +-- version Version OPTIONAL, +-- if present, shall be v2 +-- signature AlgorithmIdentifier, +-- issuer Name, +-- thisUpdate Time, +-- nextUpdate Time OPTIONAL, +-- revokedCertificates SEQUENCE OF SEQUENCE { +-- userCertificate CertificateSerialNumber, +-- revocationDate Time, +-- crlEntryExtensions EntryExtensions OPTIONAL } OPTIONAL, +-- crlExtensions [0] CRLExtensions OPTIONAL }} +-- +--CRLExtensions ::= SEQUENCE SIZE (1..MAX) OF CRLExtension +-- +--CRLExtension ::= SEQUENCE { +-- extnId EXTENSION.&id ({CRLExtensionSet}), +-- critical BOOLEAN DEFAULT FALSE, +-- extnValue OCTET STRING } +-- contains a DER encoding of a value of type +-- &ExtnType for the +-- extension object identified by extnId +-- +-- The following information object set is defined to constrain the +-- set of legal CRL extensions. +-- +--CRLExtensionSet EXTENSION ::= { authorityKeyIdentifier | +-- issuerAltName | +-- cRLNumber | +-- deltaCRLIndicator | +-- issuingDistributionPoint } +-- +-- EXTENSION defined above for certificates +-- +--EntryExtensions ::= SEQUENCE SIZE (1..MAX) OF EntryExtension +-- +--EntryExtension ::= SEQUENCE { +-- extnId EXTENSION.&id ({EntryExtensionSet}), +-- critical BOOLEAN DEFAULT FALSE, +-- extnValue OCTET STRING } +-- contains a DER encoding of a value of type +-- &ExtnType for the +-- extension object identified by extnId +-- +-- The following information object set is defined to constrain the +-- set of legal CRL entry extensions. +-- +--EntryExtensionSet EXTENSION ::= { reasonCode | +-- instructionCode | +-- invalidityDate | +-- certificateIssuer } +-- +-- information object classes used in the defintion +-- of certificates and CRLs +-- +-- Parameterized Type SIGNED +-- +-- SIGNED { ToBeSigned } ::= SEQUENCE { +-- toBeSigned ToBeSigned, +-- algorithm AlgorithmIdentifier, +-- signature BIT STRING +-- } +-- + + -- This one is implemented in the template as just a call to the + -- corresponding function in x509 +-- Definition of AlgorithmIdentifier +-- ISO definition was: +--AlgorithmIdentifier ::= SEQUENCE { +-- algorithm ALGORITHM.&id({SupportedAlgorithms}), +-- parameters ALGORITHM.&Type({SupportedAlgorithms} +-- { @algorithm}) OPTIONAL +--} + +-- Definition of ALGORITHM +-- ALGORITHM ::= TYPE-IDENTIFIER +-- +-- The following PKIX definition replaces the X.509 definition +-- +-- +--AlgorithmIdentifier ::= SEQUENCE { +-- algorithm ALGORITHM-ID.&id({SupportedAlgorithms}), +-- parameters ALGORITHM-ID.&Type({SupportedAlgorithms} +-- { @algorithm}) OPTIONAL } +-- +-- Definition of ALGORITHM-ID +-- +-- ALGORITHM-ID ::= CLASS { +-- &id OBJECT IDENTIFIER UNIQUE, +-- &Type OPTIONAL +-- } +-- WITH SYNTAX { OID &id [PARMS &Type] } +-- +-- The definition of SupportedAlgorithms may be modified as this +-- document does not specify a mandatory algorithm set. In addition, +-- the set is specified as extensible, since additional algorithms +-- may be supported +-- +--SupportedAlgorithms ALGORITHM-ID ::= { ..., +-- rsaPublicKey | +-- rsaSHA-1 | +-- rsaMD5 | +-- rsaMD2 | +-- dssPublicKey | +-- dsaSHA-1 | +-- dhPublicKey } +-- +-- OIDs and parameter structures for ALGORITHM-IDs used +-- in this specification +-- +--rsaPublicKey ALGORITHM-ID ::= { OID rsaEncryption PARMS NULL } +-- +--rsaSHA-1 ALGORITHM-ID ::= { OID sha1WithRSAEncryption PARMS NULL } +-- +--rsaMD5 ALGORITHM-ID ::= { OID md5WithRSAEncryption PARMS NULL } +-- +--rsaMD2 ALGORITHM-ID ::= { OID md2WithRSAEncryption PARMS NULL } +-- +--dssPublicKey ALGORITHM-ID ::= { OID id-dsa PARMS Dss-Parms } +-- +--dsaSHA-1 ALGORITHM-ID ::= { OID id-dsa-with-sha1 } +-- +--dhPublicKey ALGORITHM-ID ::= {OID dhpublicnumber PARMS DomainParameters} +-- +-- algorithm identifiers and parameter structures +-- +--pkcs-1 OBJECT IDENTIFIER ::= { +-- iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } +-- +--rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } +-- +--md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } +-- +--md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } +-- +--sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } +-- +--id-dsa-with-sha1 OBJECT IDENTIFIER ::= { +-- iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } +-- +--Dss-Sig-Value ::= SEQUENCE { +-- r INTEGER, +-- s INTEGER } +-- +--dhpublicnumber OBJECT IDENTIFIER ::= { +-- iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 } +-- +--DomainParameters ::= SEQUENCE { +-- p INTEGER, +-- g INTEGER, +-- q INTEGER, +-- j INTEGER OPTIONAL, +-- validationParms ValidationParms OPTIONAL } +-- +--ValidationParms ::= SEQUENCE { +-- seed BIT STRING, +-- pgenCounter INTEGER } +-- +--id-dsa OBJECT IDENTIFIER ::= { +-- iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } +-- +--Dss-Parms ::= SEQUENCE { +-- p INTEGER, +-- q INTEGER, +-- g INTEGER } +-- +-- The ASN.1 in this section supports the Name type +-- and the directoryAttribute extension +-- +-- attribute data types +-- +--Attribute ::= SEQUENCE { +-- type ATTRIBUTE.&id ({SupportedAttributes}), +-- values SET SIZE (1 .. MAX) OF ATTRIBUTE.&Type +-- ({SupportedAttributes}{@type})} +-- +--AttributeTypeAndValue ::= SEQUENCE { +-- type ATTRIBUTE.&id ({SupportedAttributes}), +-- value ATTRIBUTE.&Type ({SupportedAttributes}{@type})} +-- +-- naming data types -- +-- + + + -- This one is implemented in the template as just a call to the + -- corresponding function in x509 +--Name ::= CHOICE { +-- rdnSequence RDNSequence +--} + + +-- +--RDNSequence ::= SEQUENCE OF RelativeDistinguishedName +-- +--RelativeDistinguishedName ::= +-- SET SIZE (1 .. MAX) OF AttributeTypeAndValue +-- +--ID ::= OBJECT IDENTIFIER +-- +-- ATTRIBUTE information object class specification +-- Note: This has been greatly simplified for PKIX !! +-- +--ATTRIBUTE ::= CLASS { +-- &Type, +-- &id OBJECT IDENTIFIER UNIQUE } +--WITH SYNTAX { +-- WITH SYNTAX &Type ID &id } +-- +-- suggested naming attributes +-- Definition of the following information object set may be +-- augmented to meet local requirements. Note that deleting +-- members of the set may prevent interoperability with +-- conforming implementations. +-- +--SupportedAttributes ATTRIBUTE ::= { +-- name | commonName | surname | givenName | initials | +-- generationQualifier | dnQualifier | countryName | +-- localityName | stateOrProvinceName | organizationName | +-- organizationalUnitName | title | pkcs9email } +-- +--name ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString { ub-name } +-- ID id-at-name } +-- +--commonName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-common-name} +-- ID id-at-commonName } +-- +--surname ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-name} +-- ID id-at-surname } +-- +--givenName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-name} +-- ID id-at-givenName } +-- +--initials ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-name} +-- ID id-at-initials } +-- +--generationQualifier ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-name} +-- ID id-at-generationQualifier} +-- +--dnQualifier ATTRIBUTE ::= { +-- WITH SYNTAX PrintableString +-- ID id-at-dnQualifier } +-- +-- +--countryName ATTRIBUTE ::= { +-- WITH SYNTAX PrintableString (SIZE (2)) +-- ID id-at-countryName } +-- +--localityName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-locality-name} +-- ID id-at-localityName } +-- +--stateOrProvinceName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-state-name} +-- ID id-at-stateOrProvinceName } +-- +--organizationName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-organization-name} +-- ID id-at-organizationName } +-- +--organizationalUnitName ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-organizational-unit-name} +-- ID id-at-organizationalUnitName } +-- +--title ATTRIBUTE ::= { +-- WITH SYNTAX DirectoryString {ub-title} +-- ID id-at-title } +-- +-- Legacy attributes +-- +--pkcs9email ATTRIBUTE ::= { +-- WITH SYNTAX PHGString, +-- ID emailAddress } +-- +--PHGString ::= IA5String (SIZE(1..ub-emailaddress-length)) +-- +--pkcs-9 OBJECT IDENTIFIER ::= +-- { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } +-- +--emailAddress OBJECT IDENTIFIER ::= { pkcs-9 1 } +-- +-- object identifiers for Name type and directory attribute support +-- +-- Object identifier assignments +-- +--id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} +-- +-- Attributes +-- +--id-at-commonName OBJECT IDENTIFIER ::= {id-at 3} +--id-at-surname OBJECT IDENTIFIER ::= {id-at 4} +--id-at-countryName OBJECT IDENTIFIER ::= {id-at 6} +--id-at-localityName OBJECT IDENTIFIER ::= {id-at 7} +--id-at-stateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8} +--id-at-organizationName OBJECT IDENTIFIER ::= {id-at 10} +--id-at-organizationalUnitName OBJECT IDENTIFIER ::= {id-at 11} +--id-at-title OBJECT IDENTIFIER ::= {id-at 12} +--id-at-name OBJECT IDENTIFIER ::= {id-at 41} +--id-at-givenName OBJECT IDENTIFIER ::= {id-at 42} +--id-at-initials OBJECT IDENTIFIER ::= {id-at 43} +--id-at-generationQualifier OBJECT IDENTIFIER ::= {id-at 44} +--id-at-dnQualifier OBJECT IDENTIFIER ::= {id-at 46} +-- +-- Directory string type, used extensively in Name types +-- +--DirectoryString { INTEGER:maxSize } ::= CHOICE { +-- teletexString TeletexString (SIZE (1..maxSize)), +-- printableString PrintableString (SIZE (1..maxSize)), +-- universalString UniversalString (SIZE (1..maxSize)), +-- bmpString BMPString (SIZE(1..maxSize)), +-- utf8String UTF8String (SIZE(1..maxSize)) +-- } +-- +-- End of ASN.1 for Name type and directory attribute support +-- +-- The ASN.1 in this section supports X.400 style names +-- for implementations that use the x400Address component +-- of GeneralName. +-- +--ORAddress ::= SEQUENCE { +-- built-in-standard-attributes BuiltInStandardAttributes, +-- built-in-domain-defined-attributes +-- BuiltInDomainDefinedAttributes OPTIONAL, +-- see also teletex-domain-defined-attributes +-- extension-attributes ExtensionAttributes OPTIONAL } +-- +-- The OR-address is semantically absent from the OR-name if the +-- built-in-standard-attribute sequence is empty and the +-- built-in-domain-defined-attributes and extension-attributes are +-- both omitted. +-- +-- Built-in Standard Attributes +-- +--BuiltInStandardAttributes ::= SEQUENCE { +-- country-name CountryName OPTIONAL, +-- administration-domain-name AdministrationDomainName OPTIONAL, +-- network-address [0] NetworkAddress OPTIONAL, +-- see also extended-network-address +-- terminal-identifier [1] TerminalIdentifier OPTIONAL, +-- private-domain-name [2] PrivateDomainName OPTIONAL, +-- organization-name [3] OrganizationName OPTIONAL, +-- see also teletex-organization-name +-- numeric-user-identifier [4] NumericUserIdentifier OPTIONAL, +-- personal-name [5] PersonalName OPTIONAL, +-- see also teletex-personal-name +-- organizational-unit-names [6] OrganizationalUnitNames OPTIONAL +-- see also teletex-organizational-unit-names +-- } +-- +--CountryName ::= [APPLICATION 1] CHOICE { +-- x121-dcc-code NumericString, +-- iso-3166-alpha2-code PrintableString +--} +-- +--AdministrationDomainName ::= [APPLICATION 2] CHOICE { +-- numeric NumericString (SIZE (0..ub-domain-name-length)), +-- printable PrintableString (SIZE (0..ub-domain-name-length)) } +-- +--NetworkAddress ::= X121Address +-- see also extended-network-address +-- +--X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) +-- +--TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) +-- +--PrivateDomainName ::= CHOICE { +-- numeric NumericString (SIZE (1..ub-domain-name-length)), +-- printable PrintableString (SIZE (1..ub-domain-name-length)) } +-- +--OrganizationName ::= PrintableString +-- (SIZE (1..ub-organization-name-length)) +-- see also teletex-organization-name +-- +--NumericUserIdentifier ::= NumericString +-- (SIZE (1..ub-numeric-user-id-length)) +-- +--PersonalName ::= SET { +-- surname [0] PrintableString (SIZE (1..ub-surname-length)), +-- given-name [1] PrintableString +-- (SIZE (1..ub-given-name-length)) OPTIONAL, +-- initials [2] PrintableString +-- (SIZE (1..ub-initials-length)) OPTIONAL, +-- generation-qualifier [3] PrintableString +-- (SIZE (1..ub-generation-qualifier-length)) OPTIONAL} +-- see also teletex-personal-name +-- +--OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) +-- OF OrganizationalUnitName +-- see also teletex-organizational-unit-names +-- +--OrganizationalUnitName ::= PrintableString (SIZE +-- (1..ub-organizational-unit-name-length)) +-- +-- Built-in Domain-defined Attributes +--BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE +-- (1..ub-domain-defined-attributes) OF +-- BuiltInDomainDefinedAttribute +-- +--BuiltInDomainDefinedAttribute ::= SEQUENCE { +-- type PrintableString (SIZE +-- (1..ub-domain-defined-attribute-type-length)), +-- value PrintableString (SIZE +-- (1..ub-domain-defined-attribute-value-length)) } +-- +-- Extension Attributes +-- +--ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) +-- OF ExtensionAttribute +--ExtensionAttribute ::= SEQUENCE { +-- +-- extension-attribute-type [0] EXTENSION-ATTRIBUTE.&id +-- ({ExtensionAttributeTable}), +-- extension-attribute-value [1] EXTENSION-ATTRIBUTE.&Type +-- ({ExtensionAttributeTable} {@extension-attribute-type}) } +-- +--EXTENSION-ATTRIBUTE ::= CLASS { +-- &id INTEGER (0..ub-extension-attributes) UNIQUE, +-- &Type } +--WITH SYNTAX {&Type IDENTIFIED BY &id} +-- +--ExtensionAttributeTable EXTENSION-ATTRIBUTE ::= { +-- common-name | +-- teletex-common-name | +-- teletex-organization-name | +-- teletex-personal-name | +-- teletex-organizational-unit-names | +-- teletex-domain-defined-attributes | +-- pds-name | +-- physical-delivery-country-name | +-- postal-code | +-- physical-delivery-office-name | +-- physical-delivery-office-number | +-- extension-OR-address-components | +-- physical-delivery-personal-name | +-- physical-delivery-organization-name | +-- extension-physical-delivery-address-components | +-- unformatted-postal-address | +-- street-address | +-- post-office-box-address | +-- poste-restante-address | +-- unique-postal-name | +-- local-postal-attributes | +-- extended-network-address | +-- terminal-type } +-- +-- Extension Standard Attributes +-- +--common-name EXTENSION-ATTRIBUTE ::= {CommonName IDENTIFIED BY 1} +-- +--CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) +-- +--teletex-common-name EXTENSION-ATTRIBUTE ::= +-- {TeletexCommonName IDENTIFIED BY 2} +-- +--TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) +-- +--teletex-organization-name EXTENSION-ATTRIBUTE ::= +-- {TeletexOrganizationName IDENTIFIED BY 3} +-- +--TeletexOrganizationName ::= +-- TeletexString (SIZE (1..ub-organization-name-length)) +-- +--teletex-personal-name EXTENSION-ATTRIBUTE ::= +-- {TeletexPersonalName IDENTIFIED BY 4} +-- +--TeletexPersonalName ::= SET { +-- surname [0] TeletexString (SIZE (1..ub-surname-length)), +-- given-name [1] TeletexString +-- (SIZE (1..ub-given-name-length)) OPTIONAL, +-- initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, +-- generation-qualifier [3] TeletexString (SIZE +-- (1..ub-generation-qualifier-length)) OPTIONAL } +-- +--teletex-organizational-unit-names EXTENSION-ATTRIBUTE ::= +-- {TeletexOrganizationalUnitNames IDENTIFIED BY 5} +-- +--TeletexOrganizationalUnitNames ::= SEQUENCE SIZE +-- (1..ub-organizational-units) OF TeletexOrganizationalUnitName +-- +--TeletexOrganizationalUnitName ::= TeletexString +-- (SIZE (1..ub-organizational-unit-name-length)) +-- +--pds-name EXTENSION-ATTRIBUTE ::= {PDSName IDENTIFIED BY 7} +-- +--PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) +-- +--physical-delivery-country-name EXTENSION-ATTRIBUTE ::= +-- {PhysicalDeliveryCountryName IDENTIFIED BY 8} +-- +--PhysicalDeliveryCountryName ::= CHOICE { +-- x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), +-- iso-3166-alpha2-code PrintableString +-- (SIZE (ub-country-name-alpha-length)) } +-- +--postal-code EXTENSION-ATTRIBUTE ::= {PostalCode IDENTIFIED BY 9} +-- +--PostalCode ::= CHOICE { +-- numeric-code NumericString (SIZE (1..ub-postal-code-length)), +-- printable-code PrintableString (SIZE (1..ub-postal-code-length)) } +-- +--physical-delivery-office-name EXTENSION-ATTRIBUTE ::= +-- {PhysicalDeliveryOfficeName IDENTIFIED BY 10} +-- +--PhysicalDeliveryOfficeName ::= PDSParameter +-- +--physical-delivery-office-number EXTENSION-ATTRIBUTE ::= +-- {PhysicalDeliveryOfficeNumber IDENTIFIED BY 11} +-- +--PhysicalDeliveryOfficeNumber ::= PDSParameter +-- +--extension-OR-address-components EXTENSION-ATTRIBUTE ::= +-- {ExtensionORAddressComponents IDENTIFIED BY 12} +-- +--ExtensionORAddressComponents ::= PDSParameter +-- +--physical-delivery-personal-name EXTENSION-ATTRIBUTE ::= +-- {PhysicalDeliveryPersonalName IDENTIFIED BY 13} +-- +--PhysicalDeliveryPersonalName ::= PDSParameter +-- +--physical-delivery-organization-name EXTENSION-ATTRIBUTE ::= +-- {PhysicalDeliveryOrganizationName IDENTIFIED BY 14} +-- +--PhysicalDeliveryOrganizationName ::= PDSParameter +-- +--extension-physical-delivery-address-components EXTENSION-ATTRIBUTE ::= +-- {ExtensionPhysicalDeliveryAddressComponents IDENTIFIED BY 15} +-- +--ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter +-- +--unformatted-postal-address EXTENSION-ATTRIBUTE ::= +-- {UnformattedPostalAddress IDENTIFIED BY 16} +-- +--UnformattedPostalAddress ::= SET { +-- printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF +-- PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, +-- teletex-string TeletexString (SIZE +-- (1..ub-unformatted-address-length)) OPTIONAL } +-- +--street-address EXTENSION-ATTRIBUTE ::= +-- {StreetAddress IDENTIFIED BY 17} +-- +--StreetAddress ::= PDSParameter +-- +--post-office-box-address EXTENSION-ATTRIBUTE ::= +-- {PostOfficeBoxAddress IDENTIFIED BY 18} +-- +--PostOfficeBoxAddress ::= PDSParameter +-- +--poste-restante-address EXTENSION-ATTRIBUTE ::= +-- {PosteRestanteAddress IDENTIFIED BY 19} +-- +--PosteRestanteAddress ::= PDSParameter +-- +--unique-postal-name EXTENSION-ATTRIBUTE ::= +-- {UniquePostalName IDENTIFIED BY 20} +-- +--UniquePostalName ::= PDSParameter +-- +--local-postal-attributes EXTENSION-ATTRIBUTE ::= +-- {LocalPostalAttributes IDENTIFIED BY 21} +-- +--LocalPostalAttributes ::= PDSParameter +-- +--PDSParameter ::= SET { +-- printable-string PrintableString +-- (SIZE(1..ub-pds-parameter-length)) OPTIONAL, +-- teletex-string TeletexString +-- (SIZE(1..ub-pds-parameter-length)) OPTIONAL } +-- +--extended-network-address EXTENSION-ATTRIBUTE ::= +-- {ExtendedNetworkAddress IDENTIFIED BY 22} +-- +--ExtendedNetworkAddress ::= CHOICE { +-- e163-4-address SEQUENCE { +-- number [0] NumericString +-- (SIZE (1..ub-e163-4-number-length)), +-- sub-address [1] NumericString +-- (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL}, +-- psap-address [0] PresentationAddress } +-- +--PresentationAddress ::= SEQUENCE { +-- pSelector [0] EXPLICIT OCTET STRING OPTIONAL, +-- sSelector [1] EXPLICIT OCTET STRING OPTIONAL, +-- tSelector [2] EXPLICIT OCTET STRING OPTIONAL, +-- nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING} +-- +-- +--terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23} + +TerminalType ::= INTEGER { + telex (3), + teletex (4), + g3-facsimile (5), + g4-facsimile (6), + ia5-terminal (7), + videotex (8) } + +-- Extension Domain-defined Attributes +-- +--teletex-domain-defined-attributes EXTENSION-ATTRIBUTE ::= +-- {TeletexDomainDefinedAttributes IDENTIFIED BY 6} +-- +--TeletexDomainDefinedAttributes ::= SEQUENCE SIZE +-- (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute + +TeletexDomainDefinedAttribute ::= SEQUENCE { + type TeletexString, + value TeletexString +} + +-- specifications of Upper Bounds +-- shall be regarded as mandatory +-- from Annex B of ITU-T X.411 +-- Reference Definition of MTS Parameter Upper Bounds +-- +-- Upper Bounds +--ub-name INTEGER ::= 32768 +--ub-common-name INTEGER ::= 64 +--ub-locality-name INTEGER ::= 128 +--ub-state-name INTEGER ::= 128 +--ub-organization-name INTEGER ::= 64 +--ub-organizational-unit-name INTEGER ::= 64 +--ub-title INTEGER ::= 64 +--ub-match INTEGER ::= 128 +-- +--ub-emailaddress-length INTEGER ::= 128 +-- +--ub-common-name-length INTEGER ::= 64 +--ub-country-name-alpha-length INTEGER ::= 2 +--ub-country-name-numeric-length INTEGER ::= 3 +--ub-domain-defined-attributes INTEGER ::= 4 +--ub-domain-defined-attribute-type-length INTEGER ::= 8 +--ub-domain-defined-attribute-value-length INTEGER ::= 128 +--ub-domain-name-length INTEGER ::= 16 +--ub-extension-attributes INTEGER ::= 256 +--ub-e163-4-number-length INTEGER ::= 15 +--ub-e163-4-sub-address-length INTEGER ::= 40 +--ub-generation-qualifier-length INTEGER ::= 3 +--ub-given-name-length INTEGER ::= 16 +--ub-initials-length INTEGER ::= 5 +--ub-integer-options INTEGER ::= 256 +--ub-numeric-user-id-length INTEGER ::= 32 +--ub-organization-name-length INTEGER ::= 64 +--ub-organizational-unit-name-length INTEGER ::= 32 +--ub-organizational-units INTEGER ::= 4 +--ub-pds-name-length INTEGER ::= 16 +--ub-pds-parameter-length INTEGER ::= 30 +--ub-pds-physical-address-lines INTEGER ::= 6 +--ub-postal-code-length INTEGER ::= 16 +--ub-surname-length INTEGER ::= 40 +--ub-terminal-id-length INTEGER ::= 24 +--ub-unformatted-address-length INTEGER ::= 180 +-- +--ub-x121-address-length INTEGER ::= 16 +-- +-- Note - upper bounds on TeletexString are measured in characters. +-- A significantly greater number of octets will be required to hold +-- such a value. As a minimum, 16 octets, or twice the specified upper +-- bound, whichever is the larger, should be allowed. + +END diff --git a/asn1/pkix1explicit/packet-pkix1explicit-template.c b/asn1/pkix1explicit/packet-pkix1explicit-template.c new file mode 100644 index 0000000000..e64e72ab45 --- /dev/null +++ b/asn1/pkix1explicit/packet-pkix1explicit-template.c @@ -0,0 +1,113 @@ +#define BER_UNI_TAG_TeletexString 20 /* workaround bug in asn2eth */ + +/* packet-pkix1explicit.c + * Routines for PKIX1Explitic packet dissection + * + * $Id: packet-pkix1explicit-template.c,v 1.2 2004/05/25 21:07:43 guy Exp $ + * + * 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-pkix1explicit.h" +#include "packet-x509af.h" +#include "packet-x509if.h" + +#define PNAME "PKIX1Explitit" +#define PSNAME "PKIX1EXPLICIT" +#define PFNAME "pkix1explicit" + +/* Initialize the protocol and registered fields */ +static int proto_pkix1explicit = -1; +#include "packet-pkix1explicit-hf.c" + +/* Initialize the subtree pointers */ +#include "packet-pkix1explicit-ett.c" + + +int +dissect_pkix1explicit_CertificateSerialNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_x509af_CertificateSerialNumber(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + +int +dissect_pkix1explicit_Name(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + offset = dissect_x509if_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + +static int +dissect_pkix1explicit_AlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + +int +dissect_pkix1explicit_SubjectPublicKeyInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + offset = dissect_x509af_SubjectPublicKeyInfo(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + +#include "packet-pkix1explicit-fn.c" + + +/*--- proto_register_pkix1explicit ----------------------------------------------*/ +void proto_register_pkix1explicit(void) { + + /* List of fields */ + static hf_register_info hf[] = { +#include "packet-pkix1explicit-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { +#include "packet-pkix1explicit-ettarr.c" + }; + + /* Register protocol */ + proto_pkix1explicit = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_pkix1explicit, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + +} + + +/*--- proto_reg_handoff_pkix1explicit -------------------------------------------*/ +void proto_reg_handoff_pkix1explicit(void) { +} + diff --git a/asn1/pkix1explicit/packet-pkix1explicit-template.h b/asn1/pkix1explicit/packet-pkix1explicit-template.h new file mode 100644 index 0000000000..975f44343d --- /dev/null +++ b/asn1/pkix1explicit/packet-pkix1explicit-template.h @@ -0,0 +1,37 @@ +/* packet-pkix1explicit.h + * Routines for PKIX1Explicit packet dissection + * + * $Id: packet-pkix1explicit-template.h,v 1.1 2004/05/24 08:42:29 sahlberg Exp $ + * + * 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_PKIX1EXPLICIT_H +#define PACKET_PKIX1EXPLICIT_H + +int dissect_pkix1explicit_CertificateSerialNumber(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_pkix1explicit_Name(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_pkix1explicit_AlgorithmIdentifier(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index); +int dissect_pkix1explicit_SubjectPublicKeyInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); + + +/*#include "packet-pkix1explicit-exp.h"*/ + +#endif /* PACKET_PKIX1EXPLICIT_H */ + diff --git a/asn1/pkix1explicit/pkix1explicit.cnf b/asn1/pkix1explicit/pkix1explicit.cnf new file mode 100644 index 0000000000..612b8d0947 --- /dev/null +++ b/asn1/pkix1explicit/pkix1explicit.cnf @@ -0,0 +1,21 @@ +# pkix1explicit.cnf
+# pkix1explicit conformation file
+
+# $Id: pkix1explicit.cnf,v 1.2 2004/06/03 08:35:44 guy Exp $
+
+#.MODULE_IMPORT
+
+#.EXPORTS
+
+#.PDU
+
+#.NO_EMIT
+
+CertificateSerialNumber
+
+#.TYPE_RENAME
+
+#.FIELD_RENAME
+
+#.END
+
diff --git a/asn1/pkix1explicit/pkix1explicit_exp.cnf b/asn1/pkix1explicit/pkix1explicit_exp.cnf new file mode 100644 index 0000000000..ec75539dde --- /dev/null +++ b/asn1/pkix1explicit/pkix1explicit_exp.cnf @@ -0,0 +1,15 @@ +
+#.IMPORT_TAG
+AlgorithmIdentifier BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+CertificateSerialNumber BER_CLASS_UNI BER_UNI_TAG_INTEGER
+Name BER_CLASS_ANY -1
+SubjectPublicKeyInfo BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+#.END
+
+#.TYPE_ATTR
+CertificateSerialNumber TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+Name TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+SubjectPublicKeyInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+#.END
+
+
|