]> Cypherpunks.ru repositories - pyderasn.git/commitdiff
Move pretty-printing example to the main code
authorSergey Matveev <stargrave@stargrave.org>
Sat, 5 Jan 2019 20:36:43 +0000 (23:36 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 5 Jan 2019 20:36:43 +0000 (23:36 +0300)
doc/examples.rst
pyderasn.py

index ce205043a7e7189f8b3cec2064be8fd42df35b10..667f0ab90a6caf3791173e12ea8a2277a63ed01e 100644 (file)
@@ -184,104 +184,9 @@ it's DER encoded representation is already in ``raw`` variable)::
         serialNumber: CertificateSerialNumber INTEGER 61595;
         signature: AlgorithmIdentifier SEQUENCE[OBJECT IDENTIFIER 1.2.840.113549.1.1.5...
 
-Pretty printing
----------------
-
-There is huge output. Let's pretty print it::
-
-    >>> print(pprint(crt))
-        0   [1,3,1604] Certificate SEQUENCE
-        4   [1,3,1453]  . tbsCertificate: TBSCertificate SEQUENCE
-       10-2 [1,1,   1]  . . version: [0] EXPLICIT Version INTEGER v3 OPTIONAL
-       13   [1,1,   3]  . . serialNumber: CertificateSerialNumber INTEGER 61595
-       18   [1,1,  13]  . . signature: AlgorithmIdentifier SEQUENCE
-       20   [1,1,   9]  . . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
-       31   [0,0,   2]  . . . parameters: [UNIV 5] ANY OPTIONAL
-                        . . . . 05:00
-       33   [0,0, 278]  . . issuer: Name CHOICE rdnSequence
-       33   [1,3, 274]  . . . rdnSequence: RDNSequence SEQUENCE OF
-       37   [1,1,  11]  . . . . 0: RelativeDistinguishedName SET OF
-       39   [1,1,   9]  . . . . . 0: AttributeTypeAndValue SEQUENCE
-       41   [1,1,   3]  . . . . . . type: AttributeType OBJECT IDENTIFIER 2.5.4.6
-       46   [0,0,   4]  . . . . . . value: [UNIV 19] AttributeValue ANY
-                        . . . . . . . 13:02:45:53
-    [...]
-     1461   [1,1,  13]  . signatureAlgorithm: AlgorithmIdentifier SEQUENCE
-     1463   [1,1,   9]  . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
-     1474   [0,0,   2]  . . parameters: [UNIV 5] ANY OPTIONAL
-                        . . . 05:00
-     1476   [1,2, 129]  . signatureValue: BIT STRING 1024 bits
-                        . . 68:EE:79:97:97:DD:3B:EF:16:6A:06:F2:14:9A:6E:CD
-                        . . 9E:12:F7:AA:83:10:BD:D1:7C:98:FA:C7:AE:D4:0E:2C
-     [...]
-
-    Trailing data: 0a
-
-Let's parse that output, human::
-
-       10-2 [1,1,   1]    . . version: [0] EXPLICIT Version INTEGER v3 OPTIONAL
-       ^  ^  ^ ^    ^     ^   ^        ^            ^       ^       ^  ^
-       0  1  2 3    4     5   6        7            8       9       10 11
-
-::
-
-       20   [1,1,   9]    . . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
-       ^     ^ ^    ^     ^     ^          ^                 ^
-       0     2 3    4     5     6          9                 10
-
-::
-
-       33   [0,0, 278]    . . issuer: Name CHOICE rdnSequence
-       ^     ^ ^    ^     ^   ^       ^    ^      ^
-       0     2 3    4     5   6       8    9      10
-
-::
+:ref:`Look here <pprint_example>` for better pretty printing.
 
-       52-2∞ B [1,1,1054]∞  . . . . eContent: [0] EXPLICIT BER OCTET STRING 1046 bytes
-             ^           ^                                 ^   ^            ^
-            12          13                                14   9            10
-
-:0:
- Offset of the object, where its DER/BER encoding begins.
- Pay attention that it does **not** include explicit tag.
-:1:
- If explicit tag exists, then this is its length (tag + encoded length).
-:2:
- Length of object's tag. For example CHOICE does not have its own tag,
- so it is zero.
-:3:
- Length of encoded length.
-:4:
- Length of encoded value.
-:5:
- Visual indentation to show the depth of object in the hierarchy.
-:6:
- Object's name inside SEQUENCE/CHOICE.
-:7:
- If either IMPLICIT or EXPLICIT tag is set, then it will be shown
- here. "IMPLICIT" is omitted.
-:8:
- Object's class name, if set. Omitted if it is just an ordinary simple
- value (like with ``algorithm`` in example above).
-:9:
- Object's ASN.1 type.
-:10:
- Object's value, if set. Can consist of multiple words (like OCTET/BIT
- STRINGs above). We see ``v3`` value in Version, because it is named.
- ``rdnSequence`` is the choice of CHOICE type.
-:11:
- Possible other flags like OPTIONAL and DEFAULT, if value equals to the
- default one, specified in the schema.
-:12:
- Shows does object contains any kind of BER encoded data (possibly
- Sequence holding BER-encoded underlying value).
-:13:
- Only applicable to BER encoded data. Indefinite length encoding mark.
-:14:
- Only applicable to BER encoded data. If object has BER-specific
- encoding, then ``BER`` will be shown. It does not depend on indefinite
- length encoding. ``EOC``, ``BOOLEAN``, ``BIT STRING``, ``OCTET STRING``
- (and its derivatives), ``SET``, ``SET OF`` could be BERed.
+.. _cmdline:
 
 As command line utility
 -----------------------
index 172c1f6474705de88d59918be509c1658a79e0aa..1c5b53f1f617810c1e8c3cb906710a282cf23126 100755 (executable)
@@ -239,6 +239,105 @@ all object ``repr``. But it is easy to write custom formatters.
     >>> print(pprint(obj))
         0   [1,1,   2] INTEGER -12345
 
+.. _pprint_example:
+
+Example certificate::
+
+    >>> print(pprint(crt))
+        0   [1,3,1604] Certificate SEQUENCE
+        4   [1,3,1453]  . tbsCertificate: TBSCertificate SEQUENCE
+       10-2 [1,1,   1]  . . version: [0] EXPLICIT Version INTEGER v3 OPTIONAL
+       13   [1,1,   3]  . . serialNumber: CertificateSerialNumber INTEGER 61595
+       18   [1,1,  13]  . . signature: AlgorithmIdentifier SEQUENCE
+       20   [1,1,   9]  . . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
+       31   [0,0,   2]  . . . parameters: [UNIV 5] ANY OPTIONAL
+                        . . . . 05:00
+       33   [0,0, 278]  . . issuer: Name CHOICE rdnSequence
+       33   [1,3, 274]  . . . rdnSequence: RDNSequence SEQUENCE OF
+       37   [1,1,  11]  . . . . 0: RelativeDistinguishedName SET OF
+       39   [1,1,   9]  . . . . . 0: AttributeTypeAndValue SEQUENCE
+       41   [1,1,   3]  . . . . . . type: AttributeType OBJECT IDENTIFIER 2.5.4.6
+       46   [0,0,   4]  . . . . . . value: [UNIV 19] AttributeValue ANY
+                        . . . . . . . 13:02:45:53
+    [...]
+     1461   [1,1,  13]  . signatureAlgorithm: AlgorithmIdentifier SEQUENCE
+     1463   [1,1,   9]  . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
+     1474   [0,0,   2]  . . parameters: [UNIV 5] ANY OPTIONAL
+                        . . . 05:00
+     1476   [1,2, 129]  . signatureValue: BIT STRING 1024 bits
+                        . . 68:EE:79:97:97:DD:3B:EF:16:6A:06:F2:14:9A:6E:CD
+                        . . 9E:12:F7:AA:83:10:BD:D1:7C:98:FA:C7:AE:D4:0E:2C
+     [...]
+
+    Trailing data: 0a
+
+Let's parse that output, human::
+
+       10-2 [1,1,   1]    . . version: [0] EXPLICIT Version INTEGER v3 OPTIONAL
+       ^  ^  ^ ^    ^     ^   ^        ^            ^       ^       ^  ^
+       0  1  2 3    4     5   6        7            8       9       10 11
+
+::
+
+       20   [1,1,   9]    . . . algorithm: OBJECT IDENTIFIER 1.2.840.113549.1.1.5
+       ^     ^ ^    ^     ^     ^          ^                 ^
+       0     2 3    4     5     6          9                 10
+
+::
+
+       33   [0,0, 278]    . . issuer: Name CHOICE rdnSequence
+       ^     ^ ^    ^     ^   ^       ^    ^      ^
+       0     2 3    4     5   6       8    9      10
+
+::
+
+       52-2∞ B [1,1,1054]∞  . . . . eContent: [0] EXPLICIT BER OCTET STRING 1046 bytes
+             ^           ^                                 ^   ^            ^
+            12          13                                14   9            10
+
+:0:
+ Offset of the object, where its DER/BER encoding begins.
+ Pay attention that it does **not** include explicit tag.
+:1:
+ If explicit tag exists, then this is its length (tag + encoded length).
+:2:
+ Length of object's tag. For example CHOICE does not have its own tag,
+ so it is zero.
+:3:
+ Length of encoded length.
+:4:
+ Length of encoded value.
+:5:
+ Visual indentation to show the depth of object in the hierarchy.
+:6:
+ Object's name inside SEQUENCE/CHOICE.
+:7:
+ If either IMPLICIT or EXPLICIT tag is set, then it will be shown
+ here. "IMPLICIT" is omitted.
+:8:
+ Object's class name, if set. Omitted if it is just an ordinary simple
+ value (like with ``algorithm`` in example above).
+:9:
+ Object's ASN.1 type.
+:10:
+ Object's value, if set. Can consist of multiple words (like OCTET/BIT
+ STRINGs above). We see ``v3`` value in Version, because it is named.
+ ``rdnSequence`` is the choice of CHOICE type.
+:11:
+ Possible other flags like OPTIONAL and DEFAULT, if value equals to the
+ default one, specified in the schema.
+:12:
+ Shows does object contains any kind of BER encoded data (possibly
+ Sequence holding BER-encoded underlying value).
+:13:
+ Only applicable to BER encoded data. Indefinite length encoding mark.
+:14:
+ Only applicable to BER encoded data. If object has BER-specific
+ encoding, then ``BER`` will be shown. It does not depend on indefinite
+ length encoding. ``EOC``, ``BOOLEAN``, ``BIT STRING``, ``OCTET STRING``
+ (and its derivatives), ``SET``, ``SET OF`` could be BERed.
+
+
 .. _definedby:
 
 DEFINED BY