aboutsummaryrefslogtreecommitdiff
path: root/tools/pkcs8dump.py
diff options
context:
space:
mode:
authorelie <elie>2012-04-09 16:46:29 +0000
committerelie <elie>2012-04-09 16:46:29 +0000
commit4fe8c7ae42a90ce19425a335770e5198b5bcca56 (patch)
tree1941d52deccd4928213364df24a2a313bafec3db /tools/pkcs8dump.py
parent200a4a10fe23efa2e198644b1d93d5eae71ad6a0 (diff)
downloadpyasn1-modules-4fe8c7ae42a90ce19425a335770e5198b5bcca56.tar.gz
readPemFromFile() improved to select one of possible many PEM headers
Diffstat (limited to 'tools/pkcs8dump.py')
-rw-r--r--tools/pkcs8dump.py26
1 files changed, 11 insertions, 15 deletions
diff --git a/tools/pkcs8dump.py b/tools/pkcs8dump.py
index c3e4dc6..ed13875 100644
--- a/tools/pkcs8dump.py
+++ b/tools/pkcs8dump.py
@@ -1,7 +1,6 @@
# Read bunch of ASN.1/PEM plain/encrypted private keys in PKCS#8
# format on stdin, parse each into plain text, then build substrate from it
from pyasn1.codec.der import decoder, encoder
-from pyasn1 import error
from pyasn1_modules import rfc5208, pem
import sys
@@ -10,26 +9,23 @@ if len(sys.argv) != 1:
$ cat pkcs8key.pem | %s""" % (sys.argv[0], sys.argv[0]))
sys.exit(-1)
-keyTypePlain = rfc5208.PrivateKeyInfo()
-keyTypeEncrypted = rfc5208.EncryptedPrivateKeyInfo()
-
cnt = 0
while 1:
- substrate = pem.readPemFromFile(
- sys.stdin,
- ('-----BEGIN PRIVATE KEY-----',
- '-----BEGIN ENCRYPTED PRIVATE KEY-----'),
- ('-----END PRIVATE KEY-----',
- '-----END ENCRYPTED PRIVATE KEY-----')
- )
+ idx, substrate = pem.readPemFromFile(sys.stdin, ('-----BEGIN PRIVATE KEY-----', '-----END PRIVATE KEY-----'), ('-----BEGIN ENCRYPTED PRIVATE KEY-----', '-----END ENCRYPTED PRIVATE KEY-----') )
if not substrate:
break
- try:
- key, rest = decoder.decode(substrate, asn1Spec=keyTypeEncrypted)
- except error.PyAsn1Error:
- key, rest = decoder.decode(substrate, asn1Spec=keyTypePlain)
+ if idx == 0:
+ key, rest = decoder.decode(
+ substrate, asn1Spec=rfc5208.PrivateKeyInfo()
+ )
+ elif idx == 1:
+ key, rest = decoder.decode(
+ substrate, asn1Spec=rfc5208.EncryptedPrivateKeyInfo()
+ )
+ else:
+ break
if rest: substrate = substrate[:-len(rest)]