diff --git a/33128/r16/TS33128Payloads.asn b/33128/r16/TS33128Payloads.asn index 5efb899f427c3c2cdfe96e6d1e01d62a78e9eaef..357171a38e52da6368d32bbf005a9de93937cf7e 100644 --- a/33128/r16/TS33128Payloads.asn +++ b/33128/r16/TS33128Payloads.asn @@ -1,5 +1,5 @@ TS33128Payloads -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r16(16) version15(15)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r16(16) version16(16)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= @@ -9,7 +9,7 @@ BEGIN -- Relative OIDs -- ============= -tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r16(16) version15(15)} +tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r16(16) version16(16)} xIRIPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xIRI(1)} xCCPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xCC(2)} @@ -58,7 +58,7 @@ XIRIEvent ::= CHOICE -- tag 16 is reserved because there is no equivalent mDFCellSiteReport in XIRIEvent - -- MMS-related events, see clause 7.4.2 + -- MMS-related events, see clause 7.4.2 see also MMSConverted events ([65-66] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -118,7 +118,11 @@ XIRIEvent ::= CHOICE mMEIdentifierAssocation [63] MMEIdentifierAssocation, -- PDU to MA PDU session-related events, see clause 6.2.3.2.8 - sMFPDUtoMAPDUSessionModification [64] SMFPDUtoMAPDUSessionModification + sMFPDUtoMAPDUSessionModification [64] SMFPDUtoMAPDUSessionModification, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [65] MMSConvertedFromEmail, + mMSConvertedToEmail [66] MMSConvertedToEmail } -- ============== @@ -171,7 +175,7 @@ IRIEvent ::= CHOICE -- MDF-related events, see clause 7.3.2 mDFCellSiteReport [16] MDFCellSiteReport, - -- MMS-related events, see clause 7.4.2 + -- MMS-related events, see clause 7.4.2 see also MMSConverted events ([65-66] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -231,7 +235,11 @@ IRIEvent ::= CHOICE mMEIdentifierAssocation [63] MMEIdentifierAssocation, -- PDU to MA PDU session-related events, see clause 6.2.3.2.8 - sMFPDUtoMAPDUSessionModification [64] SMFPDUtoMAPDUSessionModification + sMFPDUtoMAPDUSessionModification [64] SMFPDUtoMAPDUSessionModification, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [65] MMSConvertedFromEmail, + mMSConvertedToEmail [66] MMSConvertedToEmail } IRITargetIdentifier ::= SEQUENCE @@ -1258,6 +1266,45 @@ MMBoxDescription ::= SEQUENCE contentType [19] UTF8String OPTIONAL } +MMSConvertedFromEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + deliveryReport [9] BOOLEAN OPTIONAL, + priority [10] MMSPriority OPTIONAL, + readReport [11] BOOLEAN OPTIONAL, + subject [12] MMSSubject OPTIONAL, + messageID [13] UTF8String OPTIONAL +} + +MMSConvertedToEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + desiredDeliveryTime [9] Timestamp OPTIONAL, + deliveryReport [10] BOOLEAN OPTIONAL, + priority [11] MMSPriority OPTIONAL, + senderVisibility [12] BOOLEAN OPTIONAL, + store [13] BOOLEAN OPTIONAL, + state [14] MMState OPTIONAL, + flags [15] MMFlags OPTIONAL, + readReport [16] BOOLEAN OPTIONAL, + subject [17] MMSSubject OPTIONAL, + messageID [18] UTF8String OPTIONAL +} + -- ========= -- MMS CCPDU -- ========= diff --git a/33128/r17/TS33128Payloads.asn b/33128/r17/TS33128Payloads.asn index 743002f983ff7904fcb1bb804c142b6f25870193..d6a8abb51ecc7736cde14978d2c7c4ec46eaed33 100644 --- a/33128/r17/TS33128Payloads.asn +++ b/33128/r17/TS33128Payloads.asn @@ -1,5 +1,5 @@ TS33128Payloads -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r17(17) version11(11)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r17(17) version12(12)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= @@ -9,7 +9,7 @@ BEGIN -- Relative OIDs -- ============= -tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r17(17) version11(11)} +tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r17(17) version12(12)} xIRIPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xIRI(1)} xCCPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xCC(2)} @@ -58,7 +58,7 @@ XIRIEvent ::= CHOICE -- tag 16 is reserved because there is no equivalent mDFCellSiteReport in XIRIEvent - -- MMS-related events, see clause 7.4.2 + -- MMS-related events, see clause 7.4.2 see also MMSConverted events ([133-134] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -195,7 +195,11 @@ XIRIEvent ::= CHOICE -- Tags 113 to 131 are not used in this version of the specification -- AMF events, see 6.2.2.2.9, continued from tag 111 - aMFUEConfigurationUpdate [132] AMFUEConfigurationUpdate + aMFUEConfigurationUpdate [132] AMFUEConfigurationUpdate, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [133] MMSConvertedFromEmail, + mMSConvertedToEmail [134] MMSConvertedToEmail } -- ============== @@ -248,7 +252,7 @@ IRIEvent ::= CHOICE -- MDF-related events, see clause 7.3.2 mDFCellSiteReport [16] MDFCellSiteReport, - -- MMS-related events, see clause 7.4.2 + -- MMS-related events, see clause 7.4.2 see also MMSConverted events ([133-134] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -384,7 +388,11 @@ IRIEvent ::= CHOICE -- Tags 113 to 131 are not used in this version of the specification -- AMF events, see 6.2.2.3, continued from tag 111 - aMFUEConfigurationUpdate [132] AMFUEConfigurationUpdate + aMFUEConfigurationUpdate [132] AMFUEConfigurationUpdate, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [133] MMSConvertedFromEmail, + mMSConvertedToEmail [134] MMSConvertedToEmail } IRITargetIdentifier ::= SEQUENCE @@ -2905,6 +2913,45 @@ MMBoxDescription ::= SEQUENCE contentType [19] UTF8String OPTIONAL } +MMSConvertedFromEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + deliveryReport [9] BOOLEAN OPTIONAL, + priority [10] MMSPriority OPTIONAL, + readReport [11] BOOLEAN OPTIONAL, + subject [12] MMSSubject OPTIONAL, + messageID [13] UTF8String OPTIONAL +} + +MMSConvertedToEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + desiredDeliveryTime [9] Timestamp OPTIONAL, + deliveryReport [10] BOOLEAN OPTIONAL, + priority [11] MMSPriority OPTIONAL, + senderVisibility [12] BOOLEAN OPTIONAL, + store [13] BOOLEAN OPTIONAL, + state [14] MMState OPTIONAL, + flags [15] MMFlags OPTIONAL, + readReport [16] BOOLEAN OPTIONAL, + subject [17] MMSSubject OPTIONAL, + messageID [18] UTF8String OPTIONAL +} + -- ========= -- MMS CCPDU -- ========= diff --git a/33128/r18/TS33128Payloads.asn b/33128/r18/TS33128Payloads.asn index a0658e7d770dd9a5769c570a6d7a949156b39f5f..9a987b2b0d5dd02bd2cb3a3825e1bd56bd13020a 100644 --- a/33128/r18/TS33128Payloads.asn +++ b/33128/r18/TS33128Payloads.asn @@ -1,5 +1,5 @@ TS33128Payloads -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r18(18) version9(9)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r18(18) version10(10)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= @@ -10,7 +10,7 @@ IMPORTS -- from ETSI TS 102 232-3 [6] IPIRIPacketReport FROM IPAccessPDU - {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) li-ps(5) iPAccess(3) version17(17)}; + {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) li-ps(5) iPAccess(3) version18(18)}; -- end of IMPORTS @@ -18,7 +18,7 @@ IMPORTS -- Relative OIDs -- ============= -tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r18(18) version9(9)} +tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r18(18) version10(10)} xIRIPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xIRI(1)} xCCPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xCC(2)} @@ -67,7 +67,7 @@ XIRIEvent ::= CHOICE -- Tag 16 is reserved because there is no equivalent mDFCellSiteReport in XIRIEvent. - -- MMS events, see clause 7.4.3 + -- MMS events, see clause 7.4.3 see also MMSConverted events ([162-163] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -278,7 +278,16 @@ XIRIEvent ::= CHOICE uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication, -- IP Packet Report, see clause 6.2.3.9.5 - iPIRIPacketReport [161] IPAccessPDU.IPIRIPacketReport + iPIRIPacketReport [161] IPAccessPDU.IPIRIPacketReport, + + -- IMS events, see clause 7.12.4.2, continued from tag 107 + iMSDataChannelSetup [162] IMSDataChannelSetup, + iMSDataChannelModification [163] IMSDataChannelModification, + iMSDataChannelTermination [164] IMSDataChannelTermination, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [165] MMSConvertedFromEmail, + mMSConvertedToEmail [166] MMSConvertedToEmail } -- ============== @@ -331,7 +340,7 @@ IRIEvent ::= CHOICE -- MDF events, see clause 7.3.2.2 mDFCellSiteReport [16] MDFCellSiteReport, - -- MMS events, see clause 7.4.4.1 + -- MMS events, see clause 7.4.4.1 see also MMSConverted events ([162-163] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -538,9 +547,18 @@ IRIEvent ::= CHOICE -- UDM events, see clause 7.2.2.3, continued from tag 124 uDMProSeTargetIdentifierDeconcealment [159] UDMProSeTargetIdentifierDeconcealment, - uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication + uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication, -- Tag 161 is reserved because there is no equivalent IP Packet Report in IRIEvent. + + -- IMS events, see clause 7.12.4.2, continued from tag 107 + iMSDataChannelSetup [162] IMSDataChannelSetup, + iMSDataChannelModification [163] IMSDataChannelModification, + iMSDataChannelTermination [164] IMSDataChannelTermination, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [165] MMSConvertedFromEmail, + mMSConvertedToEmail [166] MMSConvertedToEmail } IRITargetIdentifier ::= SEQUENCE @@ -1245,7 +1263,8 @@ AKMAAFID ::= SEQUENCE UAStarParams ::= CHOICE { tls12 [1] TLS12UAStarParams, - generic [2] GenericUAStarParams + generic [2] GenericUAStarParams, + tls13 [3] TLS13UAStarParams } GenericUAStarParams ::= SEQUENCE @@ -1301,6 +1320,263 @@ TLS12UAStarParams ::= SEQUENCE tLSClientExtensions [19] OCTET STRING (SIZE(0..65535)) OPTIONAL } +-- ================================================== +-- Specific UaStarParams for TLS 1.3 (RFC8446) +-- Inline references below are to clauses of RFC8446. +-- ================================================== + +-- RFC8846, clause 4.2: Available handshake extension types. + +TLS13ExtensionType ::= ENUMERATED +{ + serverName(1), + maxFragmentLength(2), + statusRequest(3), + supportedGroups(4), + signatureAlgorithms(5), + useSRTP(6), + heartbeat(7), + applicationLayerProtocolNegotiation(8), + signedCertificateTimestamp(9), + clientCertificateType(10), + serverCertificateType(11), + padding(12), + presharedKey(13), + earlyData(14), + supportedVersions(15), + cookie(16), + pSKKeyExchangeModes(17), + certificateAuthorities(18), + oIDFilters(19), + postHandshakeAuth(20), + signatureAlgorithmsCert(21), + keyShare(22) +} + +-- RFC8846, clause 4.2: Extensions. +-- Carried as extension to the client's and server's +-- Hello, or, in the server's EncryptedExtensions message. +TLS13Extension ::= SEQUENCE +{ + extensionType [1] TLS13ExtensionType, + extensionData [2] OCTET STRING (SIZE(0..65535)) +} + + +-- RFC8446, clauses 4.1, 4.2, 7.1, and B.4: Cryptographic transforms + +-- RFC8446, clauses 4.1.1 and 4.1.2: Ciphersuite +TLS13CipherSuite ::= CHOICE +{ + rfc8446 [1] TLSCipherSuite + -- Extensible for possible future purposes +} + +-- RFC8446, clause 7.1 and B.4: Key derivation function. +TLS13KDFAlgorithm ::= ENUMERATED +{ + rfc5869(1) -- HKDF +} + +-- RFC8846, clause 4.2.11 and B.4: Hash algorithm. +TLS13PSKHashAlgorithm ::= ENUMERATED +{ + sha256(1), + sha384(2), + sha512(3) +} + + +-- RFC8446, clause 4.4.2: Certificates. + +TLS13CertificateType ::= ENUMERATED +{ + x509(1), + rawPublicKey(2) +} + +TLS13CerificateEntry ::= SEQUENCE +{ + tLSCertificateType [1] TLS13CertificateType, + tLSCertificateData [2] OCTET STRING (SIZE(1..16777215)), + extensions [3] SEQUENCE OF TLS13Extension OPTIONAL +} + +-- This will typically correspond to a certificate chain. +TLS13Certificate ::= SEQUENCE +{ + tLSCertificateRequestContext [1] OCTET STRING (SIZE(0..255)), + tLSCertificateList [2] SEQUENCE OF TLS13CerificateEntry +} + + +-- RFC 8446, clause 4.2.9: Preshared key exchange mode. +TLS13PSKKeyExchangeMode ::= ENUMERATED +{ + pSKKE(1), + pSKDHEKE(2) +} + +-- RFC8446, clause 4.2.11: Preshared keys (PSKs). +-- PSKs obtained from AKMA use a specific prefix as part +-- of the identity: 3GPP-AKMA, see TS 33.535 and 33.222. +TLS13PSKIdentity ::= SEQUENCE +{ + identity [1] OCTET STRING (SIZE(1..65535)), + obfuscatedTicketAge [2] INTEGER (0..4294967295) +} + +TLS13OfferedPSK ::= SEQUENCE +{ + identity [1] TLS13PSKIdentity, + binder [2] OCTET STRING (SIZE(32..255)) +} + +-- Actual TLS PSK, either explicitly provisioned or derived from +-- an earlier issued TLS ticket and a resumptionMasterSecret. +-- For AKMA, the PSK is the AKMA key K_AF. +TLS13PSKInfo ::= SEQUENCE +{ + pSKIdentity [1] TLS13PSKIdentity, + pSKValue [2] OCTET STRING, + pSKKeyExchangeMode [3] TLS13PSKKeyExchangeMode, + hashAlgorithm [4] TLS13PSKHashAlgorithm +} + + + +-- RFC 8446, clause 4.6.1: Tickets/resumption info. + +TLS13NewSessionTicket ::= SEQUENCE +{ + ticketLifeTime [1] INTEGER (0..4294967295), + ticketAgeAdd [2] INTEGER (0..4294967295), + ticketNonce [3] OCTET STRING (SIZE(0..255)), + ticket [4] OCTET STRING (SIZE(1..65535)), + extensions [5] SEQUENCE OF TLS13Extension OPTIONAL +} + + + +-- RFC8446, clause 7.1 and 4.2.8: TLS-internal keys +-- These keys/secrets are never directly used to encrypt +-- data, and are therefore optional to provide as part of +-- TLS13UAStarParams. + +-- RFC8446, clause 4.2.8 +-- Shared Diffie-Hellman secret: derived from client's +-- and server's key shares (as included in extensions). +-- Can later be extended by adding PQC-based secrets, +-- see e.g. draft-ietf-tls-hybrid-design-10. +TLS13EstablishedSecrets ::= SEQUENCE +{ + dHE [1] OCTET STRING (SIZE(1..65535)) OPTIONAL +} + + +-- RFC8446, clause 7.1 +-- The actual encryption keys are derived from the respective secret +-- values below and the provided hashed handshake-message-transcript. +TLS13EarlySecretInfo ::= SEQUENCE +{ + earlySecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHash [2] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello) +} + +TLS13HandshakeSecretInfo ::= SEQUENCE +{ + handshakeSecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHash [2] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello..ServerHello) +} + +TLS13MasterSecretInfo ::= SEQUENCE +{ + masterSecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHashS [2] OCTET STRING (SIZE(1..65535)), + -- Hash(ClientHello..server Finished) + transcriptHashC [3] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello..client Finished) +} + + +-- Complete TLS 1.3 cryptographic context. + +TLS13UAStarParams ::= SEQUENCE +{ + -- Basic cryptographic information. + -- + -- The offeredPSKs, offeredPSKModes and selectedPSK + -- parameters are also provided as part of client and + -- server extensions below. + -- + -- PSKs and key exchange modes offered by the client, see + -- clause 4.2.9, 4.2.11. When AKMA (or other CSP-provided) + -- keys are used, at least one offered PSK and key exchange mode + -- will always be present in the client extensions + offeredPSKs [1] SEQUENCE OF TLS13OfferedPSK, + offeredPSKKeyExchangeModes [2] SEQUENCE OF TLS13PSKKeyExchangeMode, + -- The server-selected PSK, clause 4.2.11 + -- selectedPSKIdentity = j means the server selects j:th offered PSK. + selectedPSKIdentity [3] INTEGER (0..65535), + -- The actual TLS PSK. When AKMA is used, this key will typically also + -- be provided as an associated AFKeyInfo IRI, see below. + selectedPSK [4] TLS13PSKInfo, + -- Cryptographic state: transforms and sequence numbers. + kDFAlgorithm [5] TLS13KDFAlgorithm, -- clause 7.1. + clientSupportedCipherSuites [6] SEQUENCE OF TLS13CipherSuite OPTIONAL, + selectedCipherSuite [7] TLS13CipherSuite, -- clause 4.2 and B.4. + clientSequenceNumber [8] INTEGER, -- clause 5.3 + serverSequenceNumber [9] INTEGER, -- clause 5.3 + -- Handshake parameters, clause 4.1.2 and 4.1.3. + clientRandom [10] OCTET STRING (SIZE(32)), + serverRandom [11] OCTET STRING (SIZE(32)), + legacySessionID [12] OCTET STRING (SIZE(0..32)), + -- Complete contents of handshake extensions, clause 4.2. + tLSClientHelloExtensions [13] SEQUENCE OF TLS13Extension, + tLSServerHelloExtensions [14] SEQUENCE OF TLS13Extension, + -- Encrypted server extensions, clause 4.3.1 (here provided in plaintext). + tLSPlaintextEncryptedExtensions [15] SEQUENCE OF TLS13Extension OPTIONAL, + -- Authentication related parameters, clause 4.4 + -- Certificates are encrypted between client and server, + -- these are the unencrypted certificate(s). + tLSPlaintextClientCertificate [16] TLS13Certificate OPTIONAL, + tLSPlaintextServerCertificate [17] TLS13Certificate OPTIONAL, + -- Session key information fields, clause 7.1 + earlySecret [18] TLS13EarlySecretInfo OPTIONAL, + binderKey [19] OCTET STRING (SIZE(1..65535)) OPTIONAL, + -- The key used by the cipher suite to encrypt early data is + -- derived from clientEarlyTrafficSecret as described in clause 7.3. + clientEarlyTrafficSecret [20] OCTET STRING (SIZE(1..65535)), + earlyExporterMasterSecret [21] OCTET STRING (SIZE(1..65535)), + -- Established shared key (from Diffie-Hellman or similar). + sharedKey [22] TLS13EstablishedSecrets OPTIONAL, + handshakeSecret [23] TLS13HandshakeSecretInfo OPTIONAL, + -- The keys used by the cipher suite to encrypt the handshake are + -- derived from client- and serverHandshakeTrafficSecret as + -- described in clause 7.3. + clientHandshakeTrafficSecret [24] OCTET STRING (SIZE(1..65535)), + serverHandshakeTrafficSecret [25] OCTET STRING (SIZE(1..65535)), + masterSecret [26] TLS13MasterSecretInfo OPTIONAL, + -- The client and server application traffic secrets + -- can change value during an ongoing session due to + -- KeyUdpateRequest messages. The values to be provided below + -- refer to the currently valid ones when the IRI message is + -- generated. + -- The keys used by the cipher suite to encrypt the application + -- traffic are derived from client- and serverApplicationTrafficSecret + -- as described in clause 7.3. + clientApplicationTrafficSecret [27] OCTET STRING (SIZE(1..65535)), + serverApplicationTrafficSecret [28] OCTET STRING (SIZE(1..65535)), + -- Other session-specific keys. + exporterMasterSecret [29] OCTET STRING (SIZE(1..65535)), + resumptionMasterSecret [30] OCTET STRING (SIZE(1..65535)), + -- Tickets for resumption (issued during current session), clause 4.6.2. + tLSResumptionTickets [31] SEQUENCE OF TLS13NewSessionTicket OPTIONAL +} + + KAF ::= OCTET STRING KAKMA ::= OCTET STRING @@ -3574,6 +3850,45 @@ MMBoxDescription ::= SEQUENCE contentType [19] UTF8String OPTIONAL } +MMSConvertedFromEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + deliveryReport [9] BOOLEAN OPTIONAL, + priority [10] MMSPriority OPTIONAL, + readReport [11] BOOLEAN OPTIONAL, + subject [12] MMSSubject OPTIONAL, + messageID [13] UTF8String OPTIONAL +} + +MMSConvertedToEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + desiredDeliveryTime [9] Timestamp OPTIONAL, + deliveryReport [10] BOOLEAN OPTIONAL, + priority [11] MMSPriority OPTIONAL, + senderVisibility [12] BOOLEAN OPTIONAL, + store [13] BOOLEAN OPTIONAL, + state [14] MMState OPTIONAL, + flags [15] MMFlags OPTIONAL, + readReport [16] BOOLEAN OPTIONAL, + subject [17] MMSSubject OPTIONAL, + messageID [18] UTF8String OPTIONAL +} + -- ========= -- MMS CCPDU -- ========= @@ -4272,6 +4587,36 @@ IMSCCUnavailable ::= SEQUENCE sDPState [2] OCTET STRING OPTIONAL } +-- See clause 7.12.4.2.4 for details of this structure +IMSDataChannelSetup ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructionData [5] SBIType OPTIONAL +} + +-- See clause 7.12.4.2.5 for details of this structure +IMSDataChannelModification ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructions [5] SBIType OPTIONAL +} + +-- See Clause 7.12.4.2.6 for details of this structure +IMSDataChannelTermination ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructionData [5] SBIType OPTIONAL +} + -- ========= -- IMS CCPDU -- ========= diff --git a/33128/r19/TS33128Payloads.asn b/33128/r19/TS33128Payloads.asn index 647a36dadbdfb601f85cf673d697c65f2e15d6c4..8b2f1c090ebe1439c8265d6460af2e6545edaa0a 100644 --- a/33128/r19/TS33128Payloads.asn +++ b/33128/r19/TS33128Payloads.asn @@ -1,5 +1,5 @@ TS33128Payloads -{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r19(19) version0(0)} +{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) threeGPP(4) ts33128(19) r19(19) version1(1)} DEFINITIONS IMPLICIT TAGS EXTENSIBILITY IMPLIED ::= @@ -10,7 +10,7 @@ IMPORTS -- from ETSI TS 102 232-3 [6] IPIRIPacketReport FROM IPAccessPDU - {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) li-ps(5) iPAccess(3) version17(17)}; + {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) li-ps(5) iPAccess(3) version18(18)}; -- end of IMPORTS @@ -18,7 +18,7 @@ IMPORTS -- Relative OIDs -- ============= -tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r19(19) version0(0)} +tS33128PayloadsOID RELATIVE-OID ::= {threeGPP(4) ts33128(19) r19(19) version1(1)} xIRIPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xIRI(1)} xCCPayloadOID RELATIVE-OID ::= {tS33128PayloadsOID xCC(2)} @@ -67,7 +67,7 @@ XIRIEvent ::= CHOICE -- Tag 16 is reserved because there is no equivalent mDFCellSiteReport in XIRIEvent. - -- MMS events, see clause 7.4.3 + -- MMS events, see clause 7.4.3 see also MMSConverted events ([162-163] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -278,7 +278,33 @@ XIRIEvent ::= CHOICE uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication, -- IP Packet Report, see clause 6.2.3.9.5 - iPIRIPacketReport [161] IPAccessPDU.IPIRIPacketReport + iPIRIPacketReport [161] IPAccessPDU.IPIRIPacketReport, + + -- IMS events, see clause 7.12.4.2, continued from tag 107 + iMSDataChannelSetup [162] IMSDataChannelSetup, + iMSDataChannelModification [163] IMSDataChannelModification, + iMSDataChannelTermination [164] IMSDataChannelTermination, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [165] MMSConvertedFromEmail, + mMSConvertedToEmail [166] MMSConvertedToEmail, + + -- NEF events, see clause 7.7.7.1 + nEF5GVNGroupCreation [167] NEF5GVNGroupCreation, + nEF5GVNGroupUpdate [168] NEF5GVNGroupUpdate, + nEF5GVNGroupDeletion [169] NEF5GVNGroupDeletion, + nEF5GVNGroupQuery [170] NEF5GVNGroupQuery, + + -- HSS events, see clause 7.2.3.3 + hSSSubscriberRecordChange [171] HSSSubscriberRecordChange, + + -- IMS HSS events, see clause 7.2.4.3 + iMSHSSServingSystemMessage [172] IMSHSSServingSystemMessage, + iMSHSSStartOfInterceptionWithRegisteredTarget [173] IMSHSSStartOfInterceptionWithRegisteredTarget, + iMSHSSSubscriberRecordChange [174] IMSHSSSubscriberRecordChange, + + -- AMF events, see clause 6.2.2.2.14, continued from tag 147 + aMFUEContextUpdate [175] AMFUEContextUpdate } -- ============== @@ -331,7 +357,7 @@ IRIEvent ::= CHOICE -- MDF events, see clause 7.3.2.2 mDFCellSiteReport [16] MDFCellSiteReport, - -- MMS events, see clause 7.4.4.1 + -- MMS events, see clause 7.4.4.1 see also MMSConverted events ([162-163] below) mMSSend [17] MMSSend, mMSSendByNonLocalTarget [18] MMSSendByNonLocalTarget, mMSNotification [19] MMSNotification, @@ -538,9 +564,35 @@ IRIEvent ::= CHOICE -- UDM events, see clause 7.2.2.3, continued from tag 124 uDMProSeTargetIdentifierDeconcealment [159] UDMProSeTargetIdentifierDeconcealment, - uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication + uDMProSeTargetAuthentication [160] UDMProSeTargetAuthentication, -- Tag 161 is reserved because there is no equivalent IP Packet Report in IRIEvent. + + -- IMS events, see clause 7.12.7, continued from tag 107 + iMSDataChannelSetup [162] IMSDataChannelSetup, + iMSDataChannelModification [163] IMSDataChannelModification, + iMSDataChannelTermination [164] IMSDataChannelTermination, + + -- MMS-related events continued from choice 35 + mMSConvertedFromEmail [165] MMSConvertedFromEmail, + mMSConvertedToEmail [166] MMSConvertedToEmail, + + -- NEF events, see clause 7.7.7.2 + nEF5GVNGroupCreation [167] NEF5GVNGroupCreation, + nEF5GVNGroupUpdate [168] NEF5GVNGroupUpdate, + nEF5GVNGroupDeletion [169] NEF5GVNGroupDeletion, + nEF5GVNGroupQuery [170] NEF5GVNGroupQuery, + + -- HSS events, see clause 7.2.3.3 + hSSSubscriberRecordChange [171] HSSSubscriberRecordChange, + + -- IMS HSS events, see clause 7.2.4.3 + iMSHSSServingSystemMessage [172] IMSHSSServingSystemMessage, + iMSHSSStartOfInterceptionWithRegisteredTarget [173] IMSHSSStartOfInterceptionWithRegisteredTarget, + iMSHSSSubscriberRecordChange [174] IMSHSSSubscriberRecordChange, + + -- AMF events, see clause 6.2.2.3, continued from tag 147 + aMFUEContextUpdate [175] AMFUEContextUpdate } IRITargetIdentifier ::= SEQUENCE @@ -818,6 +870,39 @@ NEFAFSessionWithQoSNotification ::= SEQUENCE aForASSessionWithQoSResponseCode [4] AForASSessionWithQoSResponseCode } +-- See clause 7.7.7.1.2 for details of this structure +NEF5GVNGroupCreation ::= SEQUENCE +{ + aFID [1] AFID, + gPSI [2] GPSI, + fiveGLanParametersProvision [3] SBIType +} + +-- See clause 7.7.7.1.3 for details of this structure +NEF5GVNGroupUpdate ::= SEQUENCE +{ + aFID [1] AFID, + gPSI [2] GPSI, + fiveGLanParametersProvision [3] SBIType OPTIONAL, + fiveGLanParametersProvisionPatch [4] SBIType OPTIONAL +} + +-- See clause 7.7.7.1.4 for details of this structure +NEF5GVNGroupDeletion ::= SEQUENCE +{ + aFID [1] AFID, + gPSI [2] GPSI, + externalGroupID [3] OCTET STRING +} + +-- See clause 7.7.7.1.5 for details of this structure +NEF5GVNGroupQuery ::= SEQUENCE +{ + aFID [1] AFID, + gPSI [2] GPSI, + fiveGLanParametersProvision [3] SBIType +} + -- ========================== -- Common SCEF/NEF parameters -- ========================== @@ -1185,12 +1270,6 @@ SCSASID ::= UTF8String SCEFID ::= UTF8String -PeriodicCommunicationIndicator ::= ENUMERATED -{ - periodic(1), - nonPeriodic(2) -} - EPSBearerID ::= INTEGER (0..255) APN ::= UTF8String @@ -1245,7 +1324,8 @@ AKMAAFID ::= SEQUENCE UAStarParams ::= CHOICE { tls12 [1] TLS12UAStarParams, - generic [2] GenericUAStarParams + generic [2] GenericUAStarParams, + tls13 [3] TLS13UAStarParams } GenericUAStarParams ::= SEQUENCE @@ -1301,6 +1381,264 @@ TLS12UAStarParams ::= SEQUENCE tLSClientExtensions [19] OCTET STRING (SIZE(0..65535)) OPTIONAL } +-- ================================================== +-- Specific UaStarParams for TLS 1.3 (RFC8446) +-- Inline references below are to clauses of RFC8446. +-- ================================================== + +-- RFC8846, clause 4.2: Available handshake extension types. + +TLS13ExtensionType ::= ENUMERATED +{ + serverName(1), + maxFragmentLength(2), + statusRequest(3), + supportedGroups(4), + signatureAlgorithms(5), + useSRTP(6), + heartbeat(7), + applicationLayerProtocolNegotiation(8), + signedCertificateTimestamp(9), + clientCertificateType(10), + serverCertificateType(11), + padding(12), + presharedKey(13), + earlyData(14), + supportedVersions(15), + cookie(16), + pSKKeyExchangeModes(17), + certificateAuthorities(18), + oIDFilters(19), + postHandshakeAuth(20), + signatureAlgorithmsCert(21), + keyShare(22) +} + +-- RFC8846, clause 4.2: Extensions. +-- Carried as extension to the client's and server's +-- Hello, or, in the server's EncryptedExtensions message. +TLS13Extension ::= SEQUENCE +{ + extensionType [1] TLS13ExtensionType, + extensionData [2] OCTET STRING (SIZE(0..65535)) +} + + +-- RFC8446, clauses 4.1, 4.2, 7.1, and B.4: Cryptographic transforms + +-- RFC8446, clauses 4.1.1 and 4.1.2: Ciphersuite +TLS13CipherSuite ::= CHOICE +{ + rfc8446 [1] TLSCipherSuite + -- Extensible for possible future purposes +} + +-- RFC8446, clause 7.1 and B.4: Key derivation function. +TLS13KDFAlgorithm ::= ENUMERATED +{ + rfc5869(1) -- HKDF +} + +-- RFC8846, clause 4.2.11 and B.4: Hash algorithm. +TLS13PSKHashAlgorithm ::= ENUMERATED +{ + sha256(1), + sha384(2), + sha512(3) +} + + +-- RFC8446, clause 4.4.2: Certificates. + +TLS13CertificateType ::= ENUMERATED +{ + x509(1), + rawPublicKey(2) +} + +TLS13CerificateEntry ::= SEQUENCE +{ + tLSCertificateType [1] TLS13CertificateType, + tLSCertificateData [2] OCTET STRING (SIZE(1..16777215)), + extensions [3] SEQUENCE OF TLS13Extension OPTIONAL +} + +-- This will typically correspond to a certificate chain. +TLS13Certificate ::= SEQUENCE +{ + tLSCertificateRequestContext [1] OCTET STRING (SIZE(0..255)), + tLSCertificateList [2] SEQUENCE OF TLS13CerificateEntry +} + + +-- RFC 8446, clause 4.2.9: Preshared key exchange mode. +TLS13PSKKeyExchangeMode ::= ENUMERATED +{ + pSKKE(1), + pSKDHEKE(2) +} + +-- RFC8446, clause 4.2.11: Preshared keys (PSKs). +-- PSKs obtained from AKMA use a specific prefix as part +-- of the identity: 3GPP-AKMA, see TS 33.535 and 33.222. +TLS13PSKIdentity ::= SEQUENCE +{ + identity [1] OCTET STRING (SIZE(1..65535)), + obfuscatedTicketAge [2] INTEGER (0..4294967295) +} + +TLS13OfferedPSK ::= SEQUENCE +{ + identity [1] TLS13PSKIdentity, + binder [2] OCTET STRING (SIZE(32..255)) +} + +-- Actual TLS PSK, either explicitly provisioned or derived from +-- an earlier issued TLS ticket and a resumptionMasterSecret. +-- For AKMA, the PSK is the AKMA key K_AF. +TLS13PSKInfo ::= SEQUENCE +{ + pSKIdentity [1] TLS13PSKIdentity, + pSKValue [2] OCTET STRING, + pSKKeyExchangeMode [3] TLS13PSKKeyExchangeMode, + hashAlgorithm [4] TLS13PSKHashAlgorithm +} + + + +-- RFC 8446, clause 4.6.1: Tickets/resumption info. + +TLS13NewSessionTicket ::= SEQUENCE +{ + ticketLifeTime [1] INTEGER (0..4294967295), + ticketAgeAdd [2] INTEGER (0..4294967295), + ticketNonce [3] OCTET STRING (SIZE(0..255)), + ticket [4] OCTET STRING (SIZE(1..65535)), + extensions [5] SEQUENCE OF TLS13Extension OPTIONAL +} + + + +-- RFC8446, clause 7.1 and 4.2.8: TLS-internal keys +-- These keys/secrets are never directly used to encrypt +-- data, and are therefore optional to provide as part of +-- TLS13UAStarParams. + +-- RFC8446, clause 4.2.8 +-- Shared Diffie-Hellman secret: derived from client's +-- and server's key shares (as included in extensions). +-- Can later be extended by adding PQC-based secrets, +-- see e.g. draft-ietf-tls-hybrid-design-10. +TLS13EstablishedSecrets ::= SEQUENCE +{ + dHE [1] OCTET STRING (SIZE(1..65535)) OPTIONAL +} + + +-- RFC8446, clause 7.1 +-- The actual encryption keys are derived from the respective secret +-- values below and the provided hashed handshake-message-transcript. +TLS13EarlySecretInfo ::= SEQUENCE +{ + earlySecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHash [2] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello) +} + +TLS13HandshakeSecretInfo ::= SEQUENCE +{ + handshakeSecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHash [2] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello..ServerHello) +} + +TLS13MasterSecretInfo ::= SEQUENCE +{ + masterSecretValue [1] OCTET STRING (SIZE(1..65535)), + transcriptHashS [2] OCTET STRING (SIZE(1..65535)), + -- Hash(ClientHello..server Finished) + transcriptHashC [3] OCTET STRING (SIZE(1..65535)) + -- Hash(ClientHello..client Finished) +} + + +-- Complete TLS 1.3 cryptographic context. + +TLS13UAStarParams ::= SEQUENCE +{ + -- Basic cryptographic information. + -- + -- The offeredPSKs, offeredPSKModes and selectedPSK + -- parameters are also provided as part of client and + -- server extensions below. + -- + -- PSKs and key exchange modes offered by the client, see + -- clause 4.2.9, 4.2.11. When AKMA (or other CSP-provided) + -- keys are used, at least one offered PSK and key exchange mode + -- will always be present in the client extensions + offeredPSKs [1] SEQUENCE OF TLS13OfferedPSK, + offeredPSKKeyExchangeModes [2] SEQUENCE OF TLS13PSKKeyExchangeMode, + -- The server-selected PSK, clause 4.2.11 + -- selectedPSKIdentity = j means the server selects j:th offered PSK. + selectedPSKIdentity [3] INTEGER (0..65535), + -- The actual TLS PSK. When AKMA is used, this key will typically also + -- be provided as an associated AFKeyInfo IRI, see below. + selectedPSK [4] TLS13PSKInfo, + -- Cryptographic state: transforms and sequence numbers. + kDFAlgorithm [5] TLS13KDFAlgorithm, -- clause 7.1. + clientSupportedCipherSuites [6] SEQUENCE OF TLS13CipherSuite OPTIONAL, + selectedCipherSuite [7] TLS13CipherSuite, -- clause 4.2 and B.4. + clientSequenceNumber [8] INTEGER, -- clause 5.3 + serverSequenceNumber [9] INTEGER, -- clause 5.3 + -- Handshake parameters, clause 4.1.2 and 4.1.3. + clientRandom [10] OCTET STRING (SIZE(32)), + serverRandom [11] OCTET STRING (SIZE(32)), + legacySessionID [12] OCTET STRING (SIZE(0..32)), + -- Complete contents of handshake extensions, clause 4.2. + tLSClientHelloExtensions [13] SEQUENCE OF TLS13Extension, + tLSServerHelloExtensions [14] SEQUENCE OF TLS13Extension, + -- Encrypted server extensions, clause 4.3.1 (here provided in plaintext). + tLSPlaintextEncryptedExtensions [15] SEQUENCE OF TLS13Extension OPTIONAL, + -- Authentication related parameters, clause 4.4 + -- Certificates are encrypted between client and server, + -- these are the unencrypted certificate(s). + tLSPlaintextClientCertificate [16] TLS13Certificate OPTIONAL, + tLSPlaintextServerCertificate [17] TLS13Certificate OPTIONAL, + -- Session key information fields, clause 7.1 + earlySecret [18] TLS13EarlySecretInfo OPTIONAL, + binderKey [19] OCTET STRING (SIZE(1..65535)) OPTIONAL, + -- The key used by the cipher suite to encrypt early data is + -- derived from clientEarlyTrafficSecret as described in clause 7.3. + clientEarlyTrafficSecret [20] OCTET STRING (SIZE(1..65535)), + earlyExporterMasterSecret [21] OCTET STRING (SIZE(1..65535)), + -- Established shared key (from Diffie-Hellman or similar). + sharedKey [22] TLS13EstablishedSecrets OPTIONAL, + handshakeSecret [23] TLS13HandshakeSecretInfo OPTIONAL, + -- The keys used by the cipher suite to encrypt the handshake are + -- derived from client- and serverHandshakeTrafficSecret as + -- described in clause 7.3. + clientHandshakeTrafficSecret [24] OCTET STRING (SIZE(1..65535)), + serverHandshakeTrafficSecret [25] OCTET STRING (SIZE(1..65535)), + masterSecret [26] TLS13MasterSecretInfo OPTIONAL, + -- The client and server application traffic secrets + -- can change value during an ongoing session due to + -- KeyUdpateRequest messages. The values to be provided below + -- refer to the currently valid ones when the IRI message is + -- generated. + -- The keys used by the cipher suite to encrypt the application + -- traffic are derived from client- and serverApplicationTrafficSecret + -- as described in clause 7.3. + clientApplicationTrafficSecret [27] OCTET STRING (SIZE(1..65535)), + serverApplicationTrafficSecret [28] OCTET STRING (SIZE(1..65535)), + -- Other session-specific keys. + exporterMasterSecret [29] OCTET STRING (SIZE(1..65535)), + resumptionMasterSecret [30] OCTET STRING (SIZE(1..65535)), + -- Tickets for resumption (issued during current session), clause 4.6.2. + tLSResumptionTickets [31] SEQUENCE OF TLS13NewSessionTicket OPTIONAL +} + + + KAF ::= OCTET STRING KAKMA ::= OCTET STRING @@ -1408,7 +1746,7 @@ AMFRegistration ::= SEQUENCE pagingRestrictionIndicator [17] PagingRestrictionIndicator OPTIONAL, rATType [18] RATType OPTIONAL, rRCEstablishmentCause [19] RRCEstablishmentCause OPTIONAL, - nGInformation [20] NGInformation OPTIONAL, + deprecatedNGInformation [20] NGInformation OPTIONAL, nASTransportInitialInformation [21] NASTransportInitialInformation OPTIONAL, sORTransparentContainer [22] SORTransparentContainer OPTIONAL, equivalentPLMNList [23] PLMNList OPTIONAL, @@ -1572,7 +1910,7 @@ AMFUEPolicyTransfer ::= SEQUENCE uEPolicy [6] UEPolicy } --- See clause 6.2.2.2.12 for details of this structure +-- See clause 6.2.2.2.13 for details of this structure AMFUEServiceAccept ::= SEQUENCE { userIdentifiers [1] UserIdentifiers, @@ -1588,6 +1926,14 @@ AMFUEServiceAccept ::= SEQUENCE uERequestType [10] MUSIMUERequestType OPTIONAL } +-- See clause 6.2.2.2.14 for details of this structure +AMFUEContextUpdate ::= SEQUENCE +{ + userIdentifiers [1] UserIdentifiers, + rANUEContextModification [2] RANUEContextModification OPTIONAL, + rANDownlinkNASTransport [3] RANDownlinkNASTransport OPTIONAL +} + -- ================= -- 5G AMF parameters -- ================= @@ -1753,7 +2099,8 @@ NASTransportInitialInformation ::= SEQUENCE eDTSession [3] BOOLEAN OPTIONAL, authenticatedIndication [4] BOOLEAN OPTIONAL, nPNAccessInformation [5] CellCAGList OPTIONAL, - rEDCAPIndication [6] REDCAPIndication OPTIONAL + rEDCAPIndication [6] REDCAPIndication OPTIONAL, + mobileIABNodeIndication [7] BOOLEAN OPTIONAL } NGInformation ::= SEQUENCE @@ -1833,7 +2180,9 @@ InitialRANUEContextSetup ::= SEQUENCE rGLevelWirelineAccessCharacteristics [13] OCTET STRING OPTIONAL, uERadioCapabilityID [14] OCTET STRING OPTIONAL, targetNSSAIInfo [15] TargetNSSAIInfo OPTIONAL, - fiveGProSeAuthorizationIndication [16] FiveGProSeAuthorizationIndication OPTIONAL + fiveGProSeAuthorizationIndication [16] FiveGProSeAuthorizationIndication OPTIONAL, + uEDifferentiationInfo [17] UEDifferentiationInfo OPTIONAL, + mobileIABAuthorizedIndicator [18] MobileIABAuthorizedIndicator OPTIONAL } PDUSessionSetupRequestItem ::= SEQUENCE @@ -1917,6 +2266,53 @@ FiveGSUpdateType ::= OCTET STRING (SIZE(1)) UnavailabilityPeriodDuration ::= OCTET STRING (SIZE(1)) +RANUEContextModification ::= SEQUENCE +{ + aMFUENGAPID [1] AMFUENGAPID, + rANUENGAPID [2] RANUENGAPID, + rATFrequencySelectionPriority [3] RATFrequencySelectionPriority OPTIONAL, + newAMFUENGAPID [4] AMFUENGAPID OPTIONAL, + newGUAMI [5] GUAMI OPTIONAL, + iABAuthorizedIndicator [6] IABAuthorizedIndicator OPTIONAL, + nRV2XServicesAuthorization [7] NRV2XServicesAuthorization OPTIONAL, + lTEV2XServiceAuthorization [8] LTEV2XServiceAuthorization OPTIONAL, + rGLevelWirelineAccessCharacteristics [9] OCTET STRING OPTIONAL, + uERadioCapabilityID [10] OCTET STRING OPTIONAL, + fiveGProSeAuthorizationIndication [11] FiveGProSeAuthorizationIndication OPTIONAL, + mobileIABAuthorizedIndicator [12] MobileIABAuthorizedIndicator OPTIONAL +} + +RANDownlinkNASTransport ::= SEQUENCE +{ + aMFUENGAPID [1] AMFUENGAPID, + rANUENGAPID [2] RANUENGAPID, + oldAMF [3] GUAMI OPTIONAL, + allowedNSSAI [4] AllowedNSSAI OPTIONAL, + mobilityRestrictionList [5] MobilityRestrictionList OPTIONAL, + rATFrequencySelectionPriority [6] RATFrequencySelectionPriority OPTIONAL, + uEDifferentiationInfo [7] UEDifferentiationInfo OPTIONAL, + uERadioCapability [8] UERadioCapability OPTIONAL, + uERadioCapabilityID [9] OCTET STRING OPTIONAL, + targetNSSAIInfo [10] TargetNSSAIInfo OPTIONAL, + mobileIABAuthorizedIndicator [11] MobileIABAuthorizedIndicator OPTIONAL +} + +UEDifferentiationInfo ::= SEQUENCE +{ + periodicCommunicationIndicator [1] PeriodicCommunicationIndicator OPTIONAL, + periodicTime [2] INTEGER OPTIONAL, + scheduledCommunicationTime [3] SBIType OPTIONAL, + stationaryIndication [4] SBIType OPTIONAL, + trafficProfile [5] SBIType OPTIONAL, + batteryIndication [6] SBIType OPTIONAL +} + +MobileIABAuthorizedIndicator ::= ENUMERATED +{ + authorized(1), + notAuthorized(2) +} + -- ================== -- 5G SMF definitions -- ================== @@ -3574,6 +3970,45 @@ MMBoxDescription ::= SEQUENCE contentType [19] UTF8String OPTIONAL } +MMSConvertedFromEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + deliveryReport [9] BOOLEAN OPTIONAL, + priority [10] MMSPriority OPTIONAL, + readReport [11] BOOLEAN OPTIONAL, + subject [12] MMSSubject OPTIONAL, + messageID [13] UTF8String OPTIONAL +} + +MMSConvertedToEmail ::= SEQUENCE +{ + version [1] MMSVersion, + transactionID [2] UTF8String, + terminatingMMSParty [3] SEQUENCE OF MMSParty, + contentType [4] MMSContentType, + originatingMMSParty [5] MMSParty, + messageClass [6] MMSMessageClass OPTIONAL, + dateTime [7] Timestamp, + expiry [8] MMSExpiry OPTIONAL, + desiredDeliveryTime [9] Timestamp OPTIONAL, + deliveryReport [10] BOOLEAN OPTIONAL, + priority [11] MMSPriority OPTIONAL, + senderVisibility [12] BOOLEAN OPTIONAL, + store [13] BOOLEAN OPTIONAL, + state [14] MMState OPTIONAL, + flags [15] MMFlags OPTIONAL, + readReport [16] BOOLEAN OPTIONAL, + subject [17] MMSSubject OPTIONAL, + messageID [18] UTF8String OPTIONAL +} + -- ========= -- MMS CCPDU -- ========= @@ -4273,6 +4708,36 @@ IMSCCUnavailable ::= SEQUENCE sDPState [2] OCTET STRING OPTIONAL } +-- See clause 7.12.4.2.4 for details of this structure +IMSDataChannelSetup ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructionData [5] SBIType OPTIONAL +} + +-- See clause 7.12.4.2.5 for details of this structure +IMSDataChannelModification ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructions [5] SBIType OPTIONAL +} + +-- See Clause 7.12.4.2.6 for details of this structure +IMSDataChannelTermination ::= SEQUENCE +{ + targetIdentity [1] IMPU, + callingIdentity [2] IMPU OPTIONAL, + calledIdentity [3] SEQUENCE (SIZE (1..MAX)) OF IMPU OPTIONAL, + sessionEventNotification [4] SBIType OPTIONAL, + mediaInstructionData [5] SBIType OPTIONAL +} + -- ========= -- IMS CCPDU -- ========= @@ -5418,7 +5883,7 @@ MMEAttach ::= SEQUENCE pagingRestrictionIndicator [12] PagingRestrictionIndicator OPTIONAL, rATType [13] RATType OPTIONAL, rRCEstablishmentCause [14] RRCEstablishmentCause OPTIONAL, - s1Information [15] S1Information OPTIONAL, + deprecatedS1Information [15] S1Information OPTIONAL, nASTransportInitialInformation [16] EPSNASTransportInitialInformation OPTIONAL, equivalentPLMNList [17] PLMNList OPTIONAL, ePSUENetworkCapability [18] EPSUENetworkCapability OPTIONAL, @@ -5481,7 +5946,7 @@ MMEStartOfInterceptionWithEPSAttachedUE ::= SEQUENCE pagingRestrictionIndicator [13] PagingRestrictionIndicator OPTIONAL, rATType [14] RATType OPTIONAL, rRCEstablishmentCause [15] RRCEstablishmentCause OPTIONAL, - s1Information [16] S1Information OPTIONAL, + deprecatedS1Information [16] S1Information OPTIONAL, nASTransportInitialInformation [17] EPSNASTransportInitialInformation OPTIONAL, equivalentPLMNList [18] PLMNList OPTIONAL, ePSUENetworkCapability [19] EPSUENetworkCapability OPTIONAL, @@ -5827,6 +6292,12 @@ HSSStartOfInterceptionWithRegisteredTarget ::= SEQUENCE pSUserState [3] SBIType } +HSSSubscriberRecordChange ::= SEQUENCE +{ + hSSIdentities [1] SEQUENCE OF HSSIdentities, + subscriberRecordChangePayload [2] SubscriberRecordChangePayload OPTIONAL +} + HSSIdentities ::= SEQUENCE { ePSSubscriberIDs [1] EPSSubscriberIDs OPTIONAL, @@ -5838,6 +6309,85 @@ SubscriptionDataSets ::= CHOICE iMSSubscriptionData [1] SBIType } +-- ======================= +-- IMS HSS definitions +-- ======================= + +IMSHSSServingSystemMessage ::= SEQUENCE +{ + iMSI [1] IMSI, + oldPLMNID [2] PLMNID, + authorizationRequest [3] AuthorizationRequest, + roamingIndicator [4] RoamingIndicator, + deregistrationData [5] SBIType OPTIONAL +} + +IMSHSSStartOfInterceptionWithRegisteredTarget ::= SEQUENCE +{ + hSSIdentities [1] SEQUENCE OF HSSIdentities, + iMSProfileData [2] SBIType OPTIONAL, + iMSRegistrationStatus [3] IMSRegistrationStatus +} + +IMSHSSSubscriberRecordChange ::= SEQUENCE +{ + hSSIdentities [1] SEQUENCE OF HSSIdentities, + iMSProfileData [2] SBIType OPTIONAL, + mSISDNs [3] SEQUENCE (SIZE(1..MAX)) OF MSISDN OPTIONAL, + iMEI [4] IMEI OPTIONAL, + previousIMEI [5] IMEI OPTIONAL +} + +IMSRegistrationStatus ::= ENUMERATED +{ + initialRegistration(1), + reregistration(2), + timeoutDeregistration(3), + userDeregistration(4), + administrativeDeregistration(5), + authenticationFailure(6), + authenticationTimeout(7), + unregisteredUser(8) +} + +AuthorizationRequest ::= SEQUENCE +{ + authorizationType [1] AuthorizationType, + iMPI [2] IMPI, + visitedNetworkIdentifier [3] UTF8String +} + +AuthorizationType ::= ENUMERATED +{ + registration(1), + deregistration(2) +} + +SubscriberRecordChangePayload ::= CHOICE +{ + iMEIUpdateInfo [1] IMEIUpdateInfo, + iMEIUpdateResponse [2] IMEIUpdateResponse, + roamingStatusUpdateInfo [3] RoamingStatusUpdateInfo +} + +IMEIUpdateInfo ::= SEQUENCE +{ + iMSI [1] IMSI OPTIONAL, + iMEI [2] IMEI OPTIONAL, + iMEISV [3] IMEISV OPTIONAL +} + +IMEIUpdateResponse ::= SEQUENCE +{ + previousIMEI [1] IMEI OPTIONAL, + previousIMEISV [2] IMEISV OPTIONAL +} + +RoamingStatusUpdateInfo ::= SEQUENCE +{ + iMSI [1] IMSI OPTIONAL, + pLMNID [2] PLMNID OPTIONAL +} -- ================= -- Common Parameters -- ================= @@ -6243,6 +6793,12 @@ NSSAI ::= SEQUENCE OF SNSSAI PagingRestrictionIndicator ::= OCTET STRING (SIZE(1..33)) +PeriodicCommunicationIndicator ::= ENUMERATED +{ + periodic(1), + nonPeriodic(2) +} + PLMNID ::= SEQUENCE { mCC [1] MCC, @@ -6574,7 +7130,8 @@ EUTRALocation ::= SEQUENCE cellSiteInformation [8] CellSiteInformation OPTIONAL, globalENbID [9] GlobalRANNodeID OPTIONAL, ignoreTAI [10] BOOLEAN OPTIONAL, - ignoreECGI [11] BOOLEAN OPTIONAL + ignoreECGI [11] BOOLEAN OPTIONAL, + cellRadioRelatedInformation [12] SEQUENCE OF CellRadioRelatedInformation OPTIONAL } -- TS 29.571 [17], clause 5.4.4.9 @@ -6590,7 +7147,8 @@ NRLocation ::= SEQUENCE cellSiteInformation [8] CellSiteInformation OPTIONAL, ignoreNCGI [9] BOOLEAN OPTIONAL, nRNTNTAIInfo [10] NRNTNTAIInfo OPTIONAL, - iABMTUserLocation [11] IABMTUserLocation OPTIONAL + iABMTUserLocation [11] IABMTUserLocation OPTIONAL, + cellRadioRelatedInformation [12] SEQUENCE OF CellRadioRelatedInformation OPTIONAL } -- TS 29.571 [17], clause 5.4.4.10 @@ -6758,7 +7316,8 @@ CellInformation ::= SEQUENCE CellRadioRelatedInformation ::= CHOICE { nGInformation [1] NGInformation, - f1Information [2] F1Information + f1Information [2] F1Information, + s1Information [3] S1Information } RFBand ::= UTF8String diff --git a/testing/asn_compile_targets.json b/testing/asn_compile_targets.json index 4de6e01f1be6816d2578e906fb6bfc160d955b63..6ffd3fdd1c7c0ee1a1bed0d3b63ab057f26eb85e 100644 --- a/testing/asn_compile_targets.json +++ b/testing/asn_compile_targets.json @@ -9,5 +9,11 @@ "./testing/dependencies/asn/IPAccessPDU.asn", "./testing/dependencies/asn/stubs/LI-PS-PDU.asn" ], - ["./33128/r18/TS33128IdentityAssociation.asn"] + ["./33128/r18/TS33128IdentityAssociation.asn"], + [ + "./33128/r19/TS33128Payloads.asn", + "./testing/dependencies/asn/IPAccessPDU.asn", + "./testing/dependencies/asn/stubs/LI-PS-PDU.asn" + ], + ["./33128/r19/TS33128IdentityAssociation.asn"] ] diff --git a/testing/asn_lint_exceptions.json b/testing/asn_lint_exceptions.json index 6960d857d7c2bf54e7bf12f3d7276898115a775b..300225caf915b332e222ebceb954b88e7457bcaa 100644 --- a/testing/asn_lint_exceptions.json +++ b/testing/asn_lint_exceptions.json @@ -64,7 +64,8 @@ "Tag 6 missing in LALSReport", "Tag 8 missing in MMEStartOfInterceptionWithEPSAttachedUE", "Tag 11 missing in MMEStartOfInterceptionWithEPSAttachedUE", - "Tag 161 XIRIEvent field 'iPIRIPacketReport' is not present in IRIEvent" + "Tag 161 XIRIEvent field 'iPIRIPacketReport' is not present in IRIEvent", + "Tag 161 missing in IRIEvent" ], "33128/r19/TS33128Payloads.asn" : [ "Tag 100 XIRIEvent field 'n9HRPDUSessionInfo' is not present in IRIEvent", @@ -85,6 +86,7 @@ "Tag 6 missing in LALSReport", "Tag 8 missing in MMEStartOfInterceptionWithEPSAttachedUE", "Tag 11 missing in MMEStartOfInterceptionWithEPSAttachedUE", - "Tag 161 XIRIEvent field 'iPIRIPacketReport' is not present in IRIEvent" + "Tag 161 XIRIEvent field 'iPIRIPacketReport' is not present in IRIEvent", + "Tag 161 missing in IRIEvent" ] } diff --git a/testing/asn_process.py b/testing/asn_process.py index 2116eb3c5ead25738fb85647cd36087994fcb128..6a56e21b472ffc370ef1c0fd16509bd6e9581ece 100755 --- a/testing/asn_process.py +++ b/testing/asn_process.py @@ -1,7 +1,4 @@ -#!/usr/bin/env python3 - import logging -import os import json from pathlib import Path from subprocess import run @@ -20,6 +17,7 @@ filesWithBigInts = [ 'testing/dependencies/asn/IPAccessPDU.asn' ] +asn1c_path = "" change_path_to_unix = False def fix_path(path): @@ -28,7 +26,7 @@ def fix_path(path): else: return path -def syntaxCheckASN(fileList): +def syntaxCheckASN (fileList): """ Performs ASN syntax checking on a list of filenames (or pathlib Paths) @@ -43,10 +41,10 @@ def syntaxCheckASN(fileList): try: if file.as_posix() in filesWithBigInts: newFile = reconstrainInteger(str(file)) - p = run(["asn1c", '-E', fix_path(newFile)], capture_output=True) + p = run([asn1c_path, '-E', fix_path(newFile)], capture_output=True) Path(newFile).unlink() else: - p = run(["asn1c", '-E', fix_path(str(file))], capture_output=True) + p = run([asn1c_path, '-E', fix_path(str(file))], capture_output=True) if (p.returncode != 0): errorMessage = p.stderr.decode().splitlines()[0] if errorMessage.startswith(' Value "18446744073709551615" at line'): @@ -70,7 +68,7 @@ def syntaxCheckASN(fileList): } return results -def compileAllTargets(compileTargets): +def compileAllTargets (compileTargets): """ Attempts to compile a set of compile targets using the pycrate ASN1 tools @@ -81,10 +79,10 @@ def compileAllTargets(compileTargets): to be the "primary" file. This doesn't have any relavance to the compilation, but will be used as the identifier when reporting any compile errors. The compilation is performed by the pycrate ASN compile functions; errors - are caught as exceptions and rendered into a list. - + are caught as exceptions and rendered into a list. + Unfortunately, the pycrate compiler doesn't report line numbers. - The asn1c compiler does, but doesn't properly handle identifiers with the + The asn1c compiler does, but doesn't properly handle identifiers with the same name in different modules; as this occurs multiple times in TS 33.108, we can't use it. """ @@ -97,95 +95,105 @@ def compileAllTargets(compileTargets): fileNames = [] GLOBAL.clear() for filename in target: - with open(filename) as f: - fileTexts.append(f.read()) - fileNames.append(str(filename)) - logging.debug(f" Loading {filename}") - compile_text(fileTexts, filenames=fileNames) + pFile = Path(filename) + fileTexts.append(pFile.read_text()) + fileNames.append(filename) + logging.debug (f" Loading {filename}") + compile_text(fileTexts, filenames = fileNames) results[str(firstTarget)] = { - "ok": True, + 'ok' : True, } except Exception as ex: results[str(firstTarget)] = { - "ok": False, - "code": -1, - "message": f"{ex!r}", + 'ok' : False, + 'code' : -1, + 'message' : f"{ex!r}" } continue return results -def processResults(results, stageName): + +def processResults (results, stageName): """ Counts the number of errors and writes out the output per filename :param results: List of filenames (str or Pathlib Path) :param stageName: Name to decorate the output with :returns: The number of files which had errors - """ + """ print("") - errorCount = sum([1 for r in results.values() if not r["ok"]]) + errorCount = sum([1 for r in results.values() if not r['ok']]) logging.info(f"{errorCount} {stageName} errors encountered") - + print(f"{'-':-<60}") print(f"{stageName} results:") print(f"{'-':-<60}") for filename, result in results.items(): print(f" {filename:.<55}{'..OK' if result['ok'] else 'FAIL'}") - if not result["ok"]: - if isinstance(result["message"], list): - for thing in result["message"]: + if not result['ok']: + if isinstance(result['message'], list): + for thing in result['message']: print(f" {thing['message']}") else: print(f" {result['message']}") - + print(f"{'-':-<60}") print(f"{stageName} errors: {errorCount}") print(f"{'-':-<60}") - + return errorCount -def main(): +if __name__ == "__main__": loglevel = os.environ.get("LOGLEVEL", "WARNING").upper() logging.basicConfig(level=loglevel) + logging.info ('Searching for ASN1C') + asn1c_path = which("asn1c") + if asn1c_path is None: + raise Exception ("No asn1c executable found. Please install asn1c") + logging.info (f"asn1c found at {asn1c_path}") + if asn1c_path.lower().endswith("bat"): + logging.info (f"asn1c is a batch file, so assume path separators need to be changed") + change_path_to_unix = True + logging.info("Searching for ASN.1 files") fileList = list(Path(".").rglob("*.asn1")) + list(Path(".").rglob("*.asn")) - logging.info(f"{len(fileList)} ASN.1 files found") + logging.info(f'{len(fileList)} ASN.1 files found') for file in fileList: - logging.debug(f" {file}") - - ignoreList = Path("testing/asn_ignore.txt").read_text().splitlines() + logging.debug(f' {file}') + + ignoreList = Path('testing/asn_ignore.txt').read_text().splitlines() ignoredFiles = [] for ignore in ignoreList: - logging.debug(f"Ignoring pattern {ignore}") + logging.debug(f'Ignoring pattern {ignore}') for file in fileList: if ignore in str(file): ignoredFiles.append(file) logging.debug(f" Ignoring {str(file)} as contains {ignore}") ignoredFiles = list(set(ignoredFiles)) - logging.info(f"{len(ignoredFiles)} files ignored") + logging.info(f'{len(ignoredFiles)} files ignored') for file in ignoredFiles: - logging.debug(f" {file}") - + logging.debug(f' {file}') + fileList = [file for file in fileList if file not in ignoredFiles] - logging.info(f"{len(fileList)} files to process") + logging.info(f'{len(fileList)} files to process') for file in fileList: - logging.debug(f" {file}") + logging.debug(f' {file}') if len(fileList) == 0: - logging.warning("No files specified") + logging.warning ("No files specified") exit(0) - + logging.info("Parsing ASN1 files") parseResults = syntaxCheckASN(fileList) if processResults(parseResults, "Parsing") > 0: - exit(1) + exit(-1) - logging.info("Getting compile targets") - compileTargets = json.loads(Path("testing/asn_compile_targets.json").read_text()) - logging.info(f"{len(compileTargets)} compile targets found") + logging.info ("Getting compile targets") + compileTargets = json.loads(Path('testing/asn_compile_targets.json').read_text()) + logging.info (f"{len(compileTargets)} compile targets found") compileResults = compileAllTargets(compileTargets) if processResults(compileResults, "Compiling") > 0: @@ -211,7 +219,3 @@ def main(): exit(1) exit(0) - - -if __name__ == "__main__": - main()