Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1208)

Unified Diff: tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/tagging.html

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/tagging.html
diff --git a/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/tagging.html b/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/tagging.html
deleted file mode 100644
index 187f1180d29d51e57f15e2d5925b000405c0bcfd..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/tagging.html
+++ /dev/null
@@ -1,233 +0,0 @@
-<html>
-<title>
-Tagging in PyASN1
-</title>
-<head>
-</head>
-<body>
-<center>
-<table width=60%>
-<tr>
-<td>
-<a name="1.2"></a>
-<h4>
-1.2 Tagging in PyASN1
-</h4>
-
-<p>
-In order to continue with the Constructed ASN.1 types, we will first have
-to introduce the concept of tagging (and its pyasn1 implementation), as
-some of the Constructed types rely upon the tagging feature.
-</p>
-
-<p>
-When a value is coming into an ASN.1-based system (received from a network
-or read from some storage), the receiving entity has to determine the
-type of the value to interpret and verify it accordingly.
-</p>
-
-<p>
-Historically, the first data serialization protocol introduced in
-ASN.1 was BER (Basic Encoding Rules). According to BER, any serialized
-value is packed into a triplet of (Type, Length, Value) where Type is a
-code that identifies the value (which is called <i>tag</i> in ASN.1),
-length is the number of bytes occupied by the value in its serialized form
-and value is ASN.1 value in a form suitable for serial transmission or storage.
-</p>
-
-<p>
-For that reason almost every ASN.1 type has a tag (which is actually a
-BER type) associated with it by default.
-</p>
-
-<p>
-An ASN.1 tag could be viewed as a tuple of three numbers:
-(Class, Format, Number). While Number identifies a tag, Class component
-is used to create scopes for Numbers. Four scopes are currently defined:
-UNIVERSAL, context-specific, APPLICATION and PRIVATE. The Format component
-is actually a one-bit flag - zero for tags associated with scalar types,
-and one for constructed types (will be discussed later on).
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
-MyIntegerType ::= [12] INTEGER
-MyOctetString ::= [APPLICATION 0] OCTET STRING
-</pre>
-</td></tr></table>
-
-<p>
-In pyasn1, tags are implemented as immutable, tuple-like objects:
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
->>> from pyasn1.type import tag
->>> myTag = tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10)
->>> myTag
-Tag(tagClass=128, tagFormat=0, tagId=10)
->>> tuple(myTag)
-(128, 0, 10)
->>> myTag[2]
-10
->>> myTag == tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 10)
-False
->>>
-</pre>
-</td></tr></table>
-
-<p>
-Default tag, associated with any ASN.1 type, could be extended or replaced
-to make new type distinguishable from its ancestor. The standard provides
-two modes of tag mangling - IMPLICIT and EXPLICIT.
-</p>
-
-<p>
-EXPLICIT mode works by appending new tag to the existing ones thus creating
-an ordered set of tags. This set will be considered as a whole for type
-identification and encoding purposes. Important property of EXPLICIT tagging
-mode is that it preserves base type information in encoding what makes it
-possible to completely recover type information from encoding.
-</p>
-
-<p>
-When tagging in IMPLICIT mode, the outermost existing tag is dropped and
-replaced with a new one.
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
-MyIntegerType ::= [12] IMPLICIT INTEGER
-MyOctetString ::= [APPLICATION 0] EXPLICIT OCTET STRING
-</pre>
-</td></tr></table>
-
-<p>
-To model both modes of tagging, a specialized container TagSet object (holding
-zero, one or more Tag objects) is used in pyasn1.
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
->>> from pyasn1.type import tag
->>> tagSet = tag.TagSet(
-... # base tag
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10),
-... # effective tag
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10)
-... )
->>> tagSet
-TagSet(Tag(tagClass=128, tagFormat=0, tagId=10))
->>> tagSet.getBaseTag()
-Tag(tagClass=128, tagFormat=0, tagId=10)
->>> tagSet = tagSet.tagExplicitly(
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 20)
-... )
->>> tagSet
-TagSet(Tag(tagClass=128, tagFormat=0, tagId=10),
- Tag(tagClass=128, tagFormat=32, tagId=20))
->>> tagSet = tagSet.tagExplicitly(
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 30)
-... )
->>> tagSet
-TagSet(Tag(tagClass=128, tagFormat=0, tagId=10),
- Tag(tagClass=128, tagFormat=32, tagId=20),
- Tag(tagClass=128, tagFormat=32, tagId=30))
->>> tagSet = tagSet.tagImplicitly(
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 40)
-... )
->>> tagSet
-TagSet(Tag(tagClass=128, tagFormat=0, tagId=10),
- Tag(tagClass=128, tagFormat=32, tagId=20),
- Tag(tagClass=128, tagFormat=32, tagId=40))
->>>
-</pre>
-</td></tr></table>
-
-<p>
-As a side note: the "base tag" concept (accessible through the getBaseTag()
-method) is specific to pyasn1 -- the base tag is used to identify the original
-ASN.1 type of an object in question. Base tag is never occurs in encoding
-and is mostly used internally by pyasn1 for choosing type-specific data
-processing algorithms. The "effective tag" is the one that always appears in
-encoding and is used on tagSets comparation.
-</p>
-
-<p>
-Any two TagSet objects could be compared to see if one is a derivative
-of the other. Figuring this out is also useful in cases when a type-specific
-data processing algorithms are to be chosen.
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
->>> from pyasn1.type import tag
->>> tagSet1 = tag.TagSet(
-... # base tag
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10)
-... # effective tag
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10)
-... )
->>> tagSet2 = tagSet1.tagExplicitly(
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 20)
-... )
->>> tagSet1.isSuperTagSetOf(tagSet2)
-True
->>> tagSet2.isSuperTagSetOf(tagSet1)
-False
->>>
-</pre>
-</td></tr></table>
-
-<p>
-We will complete this discussion on tagging with a real-world example. The
-following ASN.1 tagged type:
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
-MyIntegerType ::= [12] EXPLICIT INTEGER
-</pre>
-</td></tr></table>
-
-<p>
-could be expressed in pyasn1 like this:
-</p>
-
-<table bgcolor="lightgray" border=0 width=100%><TR><TD>
-<pre>
->>> from pyasn1.type import univ, tag
->>> class MyIntegerType(univ.Integer):
-... tagSet = univ.Integer.tagSet.tagExplicitly(
-... tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 12)
-... )
->>> myInteger = MyIntegerType(12345)
->>> myInteger.getTagSet()
-TagSet(Tag(tagClass=0, tagFormat=0, tagId=2),
- Tag(tagClass=128, tagFormat=32, tagId=12))
->>>
-</pre>
-</td></tr></table>
-
-<p>
-Referring to the above code, the tagSet class attribute is a property of any
-pyasn1 type object that assigns default tagSet to a pyasn1 value object. This
-default tagSet specification can be ignored and effectively replaced by some
-other tagSet value passed on object instantiation.
-</p>
-
-<p>
-It's important to understand that the tag set property of pyasn1 type/value
-object can never be modifed in place. In other words, a pyasn1 type/value
-object can never change its tags. The only way is to create a new pyasn1
-type/value object and associate different tag set with it.
-</p>
-
-<hr>
-
-</td>
-</tr>
-</table>
-</center>
-</body>
-</html>

Powered by Google App Engine
This is Rietveld 408576698