Commit 6f0bcf66 authored by ASN.1 Documenter's avatar ASN.1 Documenter
Browse files

IEEE 1609.2.1 adapted for ETSI version of IEEE 1609.2

parents
Loading
Loading
Loading
Loading

.gitmodules

0 → 100644
+3 −0
Original line number Original line Diff line number Diff line
[submodule "ieee1609dot2"]
	path = ieee1609dot2
	url = https://forge.etsi.org/rep/ITS/asn1/ieee1609.2.git

Ieee1609Dot2Crl.asn

0 → 100755
+57 −0
Original line number Original line Diff line number Diff line
Ieee1609Dot2Crl {iso(1) identified-organization(3) ieee(111) 
standards-association-numbered-series-standards(2) wave-stds(1609)  
dot2(2) crl(3) protocol(1) major-version-2(2) minor-version-2(2)}

DEFINITIONS AUTOMATIC TAGS ::= BEGIN 

EXPORTS ALL;
 
IMPORTS 

  Ieee1609Dot2Data
FROM Ieee1609Dot2 {iso(1) identified-organization(3) ieee(111) 
    standards-association-numbered-series-standards(2) wave-stds(1609)  
    dot2(2) base (1) schema (1) major-version-2 (2) minor-version-3(3)}

  Opaque,
  Psid
FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111) 
    standards-association-numbered-series-standards(2) wave-stds(1609)  
    dot2(2) base(1) base-types(2) major-version-2 (2) minor-version-2(2)}

  CrlContents
FROM Ieee1609Dot2CrlBaseTypes {iso(1) identified-organization(3) ieee(111) 
    standards-association-numbered-series-standards(2) wave-stds(1609)  
    dot2(2) crl(3) base-types(2) major-version-2 (2) minor-version-2(2)}

;

CrlPsid ::= Psid(256) -- PSID = 0x100, 0p8080

SecuredCrl ::= Ieee1609Dot2Data (WITH COMPONENTS {..., 
  content (WITH COMPONENTS {
    signedData  (WITH COMPONENTS {..., 
      tbsData (WITH COMPONENTS {
        payload (WITH COMPONENTS {..., 
          data (WITH COMPONENTS {...,
             content (WITH COMPONENTS {
                unsecuredData (CONTAINING CrlContents)
            })
          })
        }),
        headerInfo (WITH COMPONENTS {..., 
          psid (CrlPsid),
          generationTime ABSENT,
          expiryTime ABSENT,
          generationLocation ABSENT,
          p2pcdLearningRequest ABSENT,
          missingCrlIdentifier ABSENT,
          encryptionKey ABSENT
        })
      })
    })
  })
})


END
+130 −0
Original line number Original line Diff line number Diff line
Ieee1609Dot2CrlBaseTypes {iso(1) identified-organization(3) ieee(111) 
standards-association-numbered-series-standards(2) wave-stds(1609)  
dot2(2) crl(3) base-types(2) major-version-2(2) minor-version-2(2)}

DEFINITIONS AUTOMATIC TAGS ::= BEGIN 

EXPORTS ALL;
 
IMPORTS 
  CrlSeries,
  GeographicRegion,
  HashedId8,
  HashedId10,
  IValue,
  LaId,
  LinkageSeed,
  Opaque,
  Psid,
  Signature,
  Time32,
  Uint3,
  Uint8,
  Uint16, 
  Uint32,
  ValidityPeriod
FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111) 
    standards-association-numbered-series-standards(2) wave-stds(1609)  
    dot2(2) base(1) base-types(2) major-version-2 (2) minor-version-2(2)}
;

--
--
--  CRL contents
--
--

CrlContents ::= SEQUENCE {
    version            Uint8 (1),
    crlSeries          CrlSeries,
    cracaId            HashedId8,
    issueDate          Time32,   
    nextCrl            Time32,  
    priorityInfo       CrlPriorityInfo,
    typeSpecific       CHOICE {
        fullHashCrl          ToBeSignedHashIdCrl,            
        deltaHashCrl         ToBeSignedHashIdCrl,            
        fullLinkedCrl        ToBeSignedLinkageValueCrl,
        deltaLinkedCrl       ToBeSignedLinkageValueCrl,
        ...
    }
}    

CrlPriorityInfo ::= SEQUENCE {  
    priority          Uint8 OPTIONAL,
    ...
}


ToBeSignedHashIdCrl ::= SEQUENCE {  
    crlSerial         Uint32,
    entries           SequenceOfHashBasedRevocationInfo,
    ...
}

HashBasedRevocationInfo ::= SEQUENCE {
    id         HashedId10,
    expiry     Time32
}

SequenceOfHashBasedRevocationInfo ::= 
    SEQUENCE OF HashBasedRevocationInfo


ToBeSignedLinkageValueCrl ::= SEQUENCE {  
    iRev               IValue,
    indexWithinI       Uint8,
    individual         SequenceOfJMaxGroup OPTIONAL,
    groups             SequenceOfGroupCrlEntry OPTIONAL,
    ...
} 
(WITH COMPONENTS {..., individual PRESENT} |
 WITH COMPONENTS {..., groups PRESENT})


JMaxGroup ::= SEQUENCE {
    jmax              Uint8,
    contents          SequenceOfLAGroup,
    ...
}


SequenceOfJMaxGroup ::= SEQUENCE OF JMaxGroup

LAGroup ::= SEQUENCE {
    la1Id            LaId,
    la2Id            LaId,
    contents         SequenceOfIMaxGroup,
    ...
}

SequenceOfLAGroup ::= SEQUENCE OF LAGroup

IMaxGroup ::= SEQUENCE {
    iMax              Uint16,
    contents          SequenceOfIndividualRevocation,
    ...
}

SequenceOfIMaxGroup ::= SEQUENCE OF IMaxGroup

IndividualRevocation ::= SEQUENCE { 
    linkage-seed1    LinkageSeed,
    linkage-seed2    LinkageSeed,
    ...
}

SequenceOfIndividualRevocation ::= SEQUENCE OF IndividualRevocation

GroupCrlEntry ::= SEQUENCE {
    iMax             Uint16,
    la1Id            LaId,
    linkageSeed1     LinkageSeed,
    la2Id            LaId,
    linkageSeed2     LinkageSeed,
    ...
}

SequenceOfGroupCrlEntry ::= SEQUENCE OF GroupCrlEntry

END

aca-ee.asn

0 → 100755
+101 −0
Original line number Original line Diff line number Diff line
--***************************************************************************--
--                  IEEE Std 1609.2.1: ACA - EE Interface                    --
--***************************************************************************--

/** 
 * @brief NOTE: Section references in this file are to clauses in IEEE Std
 * 1609.2.1 unless indicated otherwise. Full forms of acronyms and
 * abbreviations used in this file are specified in 3.2.
 */

Ieee1609Dot2Dot1AcaEeInterface {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
  extension-standards(255) dot1(1) interfaces(1) aca-ee(1) major-version-2(2)
  minor-version-2(2)
}

DEFINITIONS AUTOMATIC TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  Time32,
  Uint8
FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2) 
  base(1) base-types(2) major-version-2(2) minor-version-2(2)}

  Certificate
FROM Ieee1609Dot2 {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
  base(1) schema(1) major-version-2(2) minor-version-3(3)}
;

/** 
 * @class AcaEeInterfacePdu
 *
 * @brief This is the parent structure for all structures exchanged between
 * the ACA and the EE. The ACA – EE interface is a logical interface rather
 * than a direct communications interface in that there is no direct message
 * flow between the ACA and the EE: Messages from the ACA are stored
 * by the RA and subsequently forwarded to the EE. The PDUs are identified as
 * ACA-EE PDUs even though the RA acts as a forwarder for them because those
 * PDUs are created by the ACA and encrypted for the EE, and not modified and
 * frequently not read by the RA. An overview of this structure is as follows:
 *
 * @param acaEeCertResponse contains the ACA's response to
 * RaAcaCertRequestSPDU, which is meant for the EE and sent via the RA.
 */
  AcaEeInterfacePdu ::= CHOICE {
    acaEeCertResponse  AcaEeCertResponse,
    ...
  }

/**
 * @class AcaEeCertResponse
 *
 * @brief This structure contains a certificate and associated data as 
 * generated by the ACA for the EE that will be the holder of that 
 * certificate. An overview of this structure is as follows:
 * 
 * <br><br>NOTE: In the case where the butterfly expansion function is used
 * to set certEncKey in RaAcaCertRequest, the value j is not communicated to
 * the ACA. However, the EE that receives the certificate response can only
 * decrypt the response if it knows j. The RA is therefore anticipated to
 * store j so that it can be associated with the appropriate certificate
 * response. The RA encodes j in the filename.
 *
 * @param version contains the current version of the structure.
 * 
 * @param generationTime contains the generation time of AcaEeCertResponse.
 * 
 * @param certificate contains an authorization certificate generated by the 
 * ACA. It is of the type indicated by the type field in the corresponding 
 * request (if the requester requested an incorrect type, the response would
 * be an error not an instance of this structure).
 * 
 * @param privateKeyInfo is an optional field that is as follows:
 * <ol>
 * <li> Present and contains the private key randomization value, if the
 * field certificate.type is explicit and the butterfly key mechanism was used
 * to generate the certificate. This is used by the EE in deriving the
 * butterfly private key for explicit certificates as specified in 9.3.</li>
 *
 * <li> Present and contains the private key reconstruction value, if the
 * field certificate.type is implicit. This is used by the EE as specified in
 * 5.3.2 of IEEE Std 1609.2a-2017 (also 9.3 if the butterfly key mechanism is
 * used).</li>
 *
 * <li> Absent otherwise.</li>
 * </ol>
 */ 
  AcaEeCertResponse ::= SEQUENCE {
    version         Uint8 (2),
    generationTime  Time32,
    certificate     Certificate,
    privateKeyInfo  OCTET STRING (SIZE (32)) OPTIONAL,
    ...
  }

END
 No newline at end of file

aca-la.asn

0 → 100755
+28 −0
Original line number Original line Diff line number Diff line
--***************************************************************************--
--                  IEEE Std 1609.2.1: ACA - LA Interface                    --
--***************************************************************************--

/** 
 * @brief NOTE: Section references in this file are to clauses in IEEE Std
 * 1609.2.1 unless indicated otherwise. Full forms of acronyms and
 * abbreviations used in this file are specified in 3.2.
 */

Ieee1609Dot2Dot1AcaLaInterface {iso(1) identified-organization(3) ieee(111)
  standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
  extension-standards(255) dot1(1) interfaces(1) aca-la(2) major-version-2(2)}

DEFINITIONS AUTOMATIC TAGS ::= BEGIN

EXPORTS ALL;

/** 
 * @class AcaLaInterfacePdu
 *
 * @brief This structure is not used by EEs, so it is defined as NULL for
 * purposes of this document.
 */
  AcaLaInterfacePdu ::= NULL

END
 No newline at end of file