RFC 4913
Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions for the Generic String Encoding Rules (GSER)
Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions for the Generic String Encoding Rules (GSER) π
Okay bestie, this is RFC 4913 π¦ It's written by S. Legg from eB2Bcom and dated July 2007. It's an Experimental doc, so it's about trying things out and getting feedback π§ͺ. The title block doesn't list anything it obsoletes or updates, so there's no "this replaces that" drama here π
Status of This Memo β¨
This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.
Copyright Notice π
Copyright (C) The IETF Trust (2007).
Abstract πΈ
ASN.X is an XML representation of ASN.1 specs, and this doc is all about how the ASN.X version of GSER encoding instructions works. Iconic, honestly π
Table of Contents π
1. Introduction ....................................................2
2. Conventions .....................................................2
3. EncodingInstructionAssignmentList Translation ...................3
4. EncodingInstruction Translation .................................3
4.1. ChoiceOfStringsInstruction Translation .....................3
5. Security Considerations .........................................4
6. Normative References ............................................4
Appendix A. ASN.1 for GSER Encoding Instruction Notation ...........6
Appendix B. ASN.X for GSER Encoding Instruction Notation ...........7
1. Introduction π
Okay so, Abstract Syntax Notation X (ASN.X) [ASN.X] is an Extensible Markup Language (XML) [XML10][XML11] way of representing Abstract Syntax Notation One (ASN.1) [X.680] specs. The ASN.X version of the basic ASN.1 notation [X.680] [X.680-1] is covered somewhere else [ASN.X] β¨
The ASN.1 grammar lets you attach encoding instructions [X.680-1] using type prefixes and encoding control sections. These tweak how abstract values get encoded by whichever encoding rules you pick π
The generic notation for type prefixes and encoding control sections comes from the ASN.1 basic notation. BUT the specific encoding instructions (the EncodingInstruction and EncodingInstructionAssignmentList productions) get defined separately for each set of encoding rules that uses them. This doc handles the ASN.X representation of EncodingInstructionAssignmentList and EncodingInstruction for the Generic String Encoding Rules (GSER) [GSER][GSEREI] π§
ASN.X is defined as a set of rules for translating from an ASN.1 spec. That doesn't stop someone from writing an ASN.X module straight up with no ASN.1 module first. Still, that ASN.X module only counts as valid if, in principle, there's an ASN.1 module that would translate into it π€
Also, by design, an ASN.X module is the Robust XML Encoding Rules (RXER) [RXER] encoding of an ASN.1 value. The ASN.1 type definitions for those values, as far as they're about the ASN.1 basic notation, live elsewhere [ASN.X]. This doc gives the ASN.1 type definitions for representing GSER encoding instructions as abstract values, and those show up in Appendix A π¦
The ASN.X translation of the ASN.1 module in Appendix A is in Appendix B.
And the General Considerations from the ASN.X spec [ASN.X] apply here too π
2. Conventions π
Okay this part is important, so pay attention π The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are to be read as described in BCP 14, RFC 2119 [BCP14]. The key word "OPTIONAL" only ever means its ASN.1 meaning here π«Ά
When this doc says an ASN.1 production [X.680] (like Type or NamedType), it means the text in the ASN.1 spec that matches that production π₯
Translating GSER encoding instructions into ASN.X uses definitions from the XML Information Set (Infoset) [INFOSET]. Infoset property names go in square brackets, like [local name]. Literal Infoset property values sit in double quotes, but those quotes are NOT part of the actual value. From here on, "information item" gets shortened to "item", so "element information item" becomes "element item". Element items get called by their [local name] inside angle brackets. So "the <type> element item" just means the element item whose [local name] is "type" β¨
3. EncodingInstructionAssignmentList Translation π
Like the ASN.X spec [ASN.X] explains, translating an EncodingControlSection for GSER gives you an element item with the [local name] "GSER". Whatever the EncodingInstructionAssignmentList in that EncodingControlSection translates to decides what goes inside the <GSER> element item π
Right now the GSER EncodingInstructionAssignmentList is defined as empty [GSEREI]. So the [attributes] and [children] of the <GSER> element item are both empty. Super simple, no notes πΈ
4. EncodingInstruction Translation π
A GSER EncodingInstruction can show up in the translation of an EncodingPrefix. The translation for an EncodingPrefix is covered by the ASN.X spec π¦
The translation of a GSER EncodingInstruction is the translation of its ChoiceOfStringsInstruction. That's the only encoding instruction GSER defines right now π
4.1. ChoiceOfStringsInstruction Translation π
Translating a ChoiceOfStringsInstruction gives you an element item with the [local name] "choiceOfStrings" π§
If the ChoiceOfStringsInstruction has an AlternativesPrecedence, then an attribute item with the [local name] "precedence" SHALL be added to the [attributes] of the <choiceOfStrings> element item. The [normalized value] of that attribute item is a white space separated list of qualified names. Those names are the expanded names [XMLNS10] of the NamedType instances (see [RXEREI]) matching the identifiers nested in the PrecedenceList inside the AlternativesPrecedence π
Here's an example, because examples are everything π
[GSER:CHOICE-OF-STRINGS PRECEDENCE utf8 visible] CHOICE {
visible [RXER:NAME "ascii"] VisibleString,
utf8 UTF8String
}
<type xmlns:asnx="urn:ietf:params:xml:ns:asnx">
<prefixed>
<GSER><choiceOfStrings precedence="utf8 ascii"/></GSER>
<type>
<choice>
<element name="ascii" identifier="visible"
type="asnx:VisibleString"/>
<element name="utf8" type="asnx:UTF8String"/>
</choice>
</type>
</prefixed>
</type>
Appendix B. ASN.X for GSER Encoding Instruction Notation π§
This appendix is non-normative π which basically means it's a helpful sidequest, not the actual rules. Here's the ASN.X module:
<?xml version="1.0"?>
<asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
name="GSER-EncodingInstructionNotation"
identifier="1.3.6.1.4.1.21472.1.0.2"
schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.2"
targetNamespace="urn:ietf:params:xml:ns:asnx"
targetPrefix="asnx"
extensibilityImplied="true">
<annotation>
Copyright (C) The IETF Trust (2007). This version of
this ASN.X module is part of RFC 4913; see the RFC itself
for full legal notices.
Regarding this ASN.X module or any portion of it, the author
makes no guarantees and is not responsible for any damage
resulting from its use. The author grants irrevocable permission
to anyone to use, modify, and distribute it in any way that does
not diminish the rights of anyone else to use, modify, and
distribute it, provided that redistributed derivative works do
not contain misleading author or version information.
Derivative works need not be licensed under similar terms.
</annotation>
<import name="AbstractSyntaxNotation-X"
identifier="1.3.6.1.4.1.21472.1.0.1"
schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.1"
namespace="urn:ietf:params:xml:ns:asnx"/>
<namedType name="GSER-EncodingInstruction">
<type>
<choice insertions="singular">
<element name="choiceOfStrings"
type="asnx:GSER-ChoiceOfStringsInstruction"/>
</choice>
</type>
</namedType>
<namedType name="GSER-EncodingInstructionAssignmentList">
<type>
<sequence/>
</type>
</namedType>
<namedType name="GSER-ChoiceOfStringsInstruction">
<type>
<sequence>
<optional>
<attribute name="precedence" type="asnx:PrecedenceList"/>
</optional>
</sequence>
</type>
</namedType>
</asnx:module>
Author's Address π
The author is Dr. Steven Legg, from eB2Bcom, based in Box Hill North, Victoria, Australia π¦ Here are the contact details:
Dr. Steven Legg
eB2Bcom
Suite 3, Woodhouse Corporate Centre
935 Station Street
Box Hill North, Victoria 3129
AUSTRALIA
Phone: +61 3 9896 7830
Fax: +61 3 9896 7801
EMail: steven.legg@eb2bcom.com
Full Copyright Statement π
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Bestie, the authors keep their rights, so don't just copy stuff without checking π
The document and its info are given to you "AS IS", and the legal fine print is serious, so here's the exact wording:
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property π₯
The IETF doesn't take a side on whether any Intellectual Property Rights (or other rights) that someone claims over the tech in this document are valid or how far they reach. It also doesn't say whether a license for those rights is available, and it hasn't checked for any rights on its own. If you want the rules on rights in RFC documents, check out BCP 78 and BCP 79 π
Copies of IPR disclosures sent to the IETF Secretariat are available, and so are any assurances of licenses that have been promised. You can also see the result of an attempt to get a general license or permission for implementers or users to use the proprietary rights. All of that lives in the IETF online IPR repository at http://www.ietf.org/ipr.
The IETF also invites anyone who's interested to flag any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org π«Ά
Acknowledgement πΈ
Funding for the RFC Editor function is currently provided by the Internet Society. Thank you, Internet Society, for keeping the RFC Editor running β¨
π¦ where this page comes from
- ietf: rfc4913 2007-07
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms