1IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111) 2standards-association-numbered-series-standards(2) wave-stds(1609) 3dot2(2) base(1) base-types(2) major-version-2(2)} 4 5-- Minor version: 1 6 7-- 8--******************************************************************** 9-- IEEE P1609.2 Base Data Types 10-- 11--******************************************************************** 12 13DEFINITIONS AUTOMATIC TAGS ::= BEGIN 14 15EXPORTS ALL; 16 17 18-- ------------------------------------------------------------------ 19-- 20-- Integers 21-- 22-- ------------------------------------------------------------------ 23 24 25Uint3 ::= INTEGER (0..7) -- (hex) 07 26Uint8 ::= INTEGER (0..255) -- (hex) ff 27Uint16 ::= INTEGER (0..65535) -- (hex) ff ff 28Uint32 ::= INTEGER (0..4294967295)--<LONGLONG>-- -- (hex) ff ff ff ff 29Uint64 ::= INTEGER (0..18446744073709551615) -- (hex) ff ff ff ff ff ff ff ff 30 31SequenceOfUint8 ::= SEQUENCE OF Uint8 32SequenceOfUint16 ::= SEQUENCE OF Uint16 33 34-- ------------------------------------------------------------------ 35-- 36-- OCTET STRING types 37-- 38-- ------------------------------------------------------------------ 39 40 41Opaque ::= OCTET STRING 42 43 44HashedId10 ::= OCTET STRING (SIZE(10)) 45HashedId8 ::= OCTET STRING (SIZE(8)) 46HashedId3 ::= OCTET STRING (SIZE(3)) 47SequenceOfHashedId3 ::= SEQUENCE OF HashedId3 48 49 50-- ------------------------------------------------------------------ 51-- 52-- Time 53-- 54-- ------------------------------------------------------------------ 55 56Time32 ::= Uint32 57Time64 ::= Uint64 58 59ValidityPeriod ::= SEQUENCE { 60 start Time32, 61 duration Duration 62} 63 64Duration ::= CHOICE { 65 microseconds Uint16, 66 milliseconds Uint16, 67 seconds Uint16, 68 minutes Uint16, 69 hours Uint16, 70 sixtyHours Uint16, 71 years Uint16 72} 73 74-- ------------------------------------------------------------------ 75-- 76-- Location 77-- 78-- ------------------------------------------------------------------ 79 80 81GeographicRegion ::= CHOICE { 82 circularRegion CircularRegion, 83 rectangularRegion SequenceOfRectangularRegion, 84 polygonalRegion PolygonalRegion, 85 identifiedRegion SequenceOfIdentifiedRegion, 86 ... 87} 88 89CircularRegion ::= SEQUENCE { 90 center TwoDLocation, 91 radius Uint16 92} 93 94RectangularRegion ::= SEQUENCE { 95 northWest TwoDLocation, 96 southEast TwoDLocation 97} 98 99SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion 100 101PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation 102 103TwoDLocation ::= SEQUENCE { 104 latitude Latitude, 105 longitude Longitude 106} 107 108IdentifiedRegion ::= CHOICE { 109 countryOnly CountryOnly, 110 countryAndRegions CountryAndRegions, 111 countryAndSubregions CountryAndSubregions, 112 ... 113} 114 115SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion 116 117CountryOnly ::= Uint16 118 119CountryAndRegions ::= SEQUENCE { 120 countryOnly CountryOnly, 121 regions SequenceOfUint8 122} 123 124CountryAndSubregions ::= SEQUENCE { 125 country CountryOnly, 126 regionAndSubregions SequenceOfRegionAndSubregions 127} 128 129RegionAndSubregions ::= SEQUENCE { 130 region Uint8, 131 subregions SequenceOfUint16 132} 133 134SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions 135 136ThreeDLocation ::= SEQUENCE { 137 latitude Latitude, 138 longitude Longitude, 139 elevation Elevation 140} 141 142Latitude ::= NinetyDegreeInt 143Longitude ::= OneEightyDegreeInt 144Elevation ::= ElevInt 145 146NinetyDegreeInt ::= INTEGER { 147 min (-900000000), 148 max (900000000), 149 unknown (900000001) 150} (-900000000..900000001) 151 152KnownLatitude ::= NinetyDegreeInt (min..max) -- Minus 90deg to +90deg in microdegree intervals 153UnknownLatitude ::= NinetyDegreeInt (unknown) 154 155OneEightyDegreeInt ::= INTEGER { 156 min (-1799999999), 157 max (1800000000), 158 unknown (1800000001) 159} (-1799999999..1800000001) 160 161KnownLongitude ::= OneEightyDegreeInt (min..max) 162UnknownLongitude ::= OneEightyDegreeInt (unknown) 163 164ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter 165 166-- ------------------------------------------------------------------ 167-- 168-- Crypto 169-- 170-- ------------------------------------------------------------------ 171 172Signature ::= CHOICE { 173 ecdsaNistP256Signature EcdsaP256Signature, 174 ecdsaBrainpoolP256r1Signature EcdsaP256Signature, 175 ..., 176 ecdsaBrainpoolP384r1Signature EcdsaP384Signature 177} 178 179EcdsaP256Signature ::= SEQUENCE { 180 rSig EccP256CurvePoint, 181 sSig OCTET STRING (SIZE (32)) 182} 183 184EcdsaP384Signature ::= SEQUENCE { 185 rSig EccP384CurvePoint, 186 sSig OCTET STRING (SIZE (48)) 187} 188 189EccP256CurvePoint ::= CHOICE { 190 x-only OCTET STRING (SIZE (32)), 191 fill NULL, -- consistency with 1363 / X9.62 192 compressed-y-0 OCTET STRING (SIZE (32)), 193 compressed-y-1 OCTET STRING (SIZE (32)), 194 uncompressedP256 SEQUENCE { 195 x OCTET STRING (SIZE (32)), 196 y OCTET STRING (SIZE (32)) 197 } 198} 199 200EccP384CurvePoint::= CHOICE { 201 x-only OCTET STRING (SIZE (48)), 202 fill NULL, -- consistency w 1363 / X9.62 203 compressed-y-0 OCTET STRING (SIZE (48)), 204 compressed-y-1 OCTET STRING (SIZE (48)), 205 uncompressedP384 SEQUENCE { 206 x OCTET STRING (SIZE (48)), 207 y OCTET STRING (SIZE (48)) 208 } 209} 210 211 212SymmAlgorithm ::= ENUMERATED { 213 aes128Ccm, 214 ... 215} 216 217HashAlgorithm ::= ENUMERATED { 218 sha256, 219 ..., 220 sha384 221} 222 223EciesP256EncryptedKey ::= SEQUENCE { 224 v EccP256CurvePoint, 225 c OCTET STRING (SIZE (16)), 226 t OCTET STRING (SIZE (16)) 227} 228 229EncryptionKey ::= CHOICE { 230 public PublicEncryptionKey, 231 symmetric SymmetricEncryptionKey 232} 233 234PublicEncryptionKey ::= SEQUENCE { 235 supportedSymmAlg SymmAlgorithm, 236 publicKey BasePublicEncryptionKey 237} 238 239BasePublicEncryptionKey ::= CHOICE { 240 eciesNistP256 EccP256CurvePoint, 241 eciesBrainpoolP256r1 EccP256CurvePoint, 242 ... 243} 244 245PublicVerificationKey ::= CHOICE { 246 ecdsaNistP256 EccP256CurvePoint, 247 ecdsaBrainpoolP256r1 EccP256CurvePoint, 248 ..., 249 ecdsaBrainpoolP384r1 EccP384CurvePoint 250} 251 252SymmetricEncryptionKey ::= CHOICE { 253 aes128Ccm OCTET STRING(SIZE(16)), 254 ... 255} 256 257-- ------------------------------------------------------------------ 258-- 259-- PSID / ITS-AID 260-- 261-- ------------------------------------------------------------------ 262 263 264PsidSsp ::= SEQUENCE { 265 psid Psid, 266 ssp ServiceSpecificPermissions OPTIONAL 267} 268 269SequenceOfPsidSsp ::= SEQUENCE OF PsidSsp 270 271Psid ::= INTEGER (0..MAX) 272 273SequenceOfPsid ::= SEQUENCE OF Psid 274 275ServiceSpecificPermissions ::= CHOICE { 276 opaque OCTET STRING (SIZE(0..MAX)), 277 ..., 278 bitmapSsp BitmapSsp 279} 280 281BitmapSsp ::= OCTET STRING (SIZE(0..31)) 282 283PsidSspRange ::= SEQUENCE { 284 psid Psid, 285 sspRange SspRange OPTIONAL 286} 287 288SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange 289 290SspRange ::= CHOICE { 291 opaque SequenceOfOctetString, 292 all NULL, 293 ... , 294 bitmapSspRange BitmapSspRange 295} 296 297BitmapSspRange ::= SEQUENCE { 298 sspValue OCTET STRING (SIZE(1..32)), 299 sspBitmask OCTET STRING (SIZE(1..32)) 300} 301 302SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF 303 OCTET STRING (SIZE(0..MAX)) 304 305 306-- ------------------------------------------------------------------ 307-- 308-- Goes in certs 309-- 310-- ------------------------------------------------------------------ 311 312SubjectAssurance ::= OCTET STRING (SIZE(1)) 313 314CrlSeries ::= Uint16 315 316 317-- ------------------------------------------------------------------ 318-- 319-- Pseudonym Linkage 320-- 321-- ------------------------------------------------------------------ 322 323IValue ::= Uint16 324Hostname ::= UTF8String (SIZE(0..255)) 325LinkageValue ::= OCTET STRING (SIZE(9)) 326GroupLinkageValue ::= SEQUENCE { 327 jValue OCTET STRING (SIZE(4)), 328 value OCTET STRING (SIZE(9)) 329} 330 331LaId ::= OCTET STRING (SIZE(2)) 332LinkageSeed ::= OCTET STRING (SIZE(16)) 333 334END 335 336