cmpdump.py 932 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python
  2. #
  3. # This file is part of pyasn1-modules software.
  4. #
  5. # Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
  6. # License: http://snmplabs.com/pyasn1/license.html
  7. #
  8. # Read ASN.1/PEM CMP message on stdin, parse into
  9. # plain text, then build substrate from it
  10. #
  11. import sys
  12. from pyasn1 import debug
  13. from pyasn1.codec.der import decoder
  14. from pyasn1.codec.der import encoder
  15. from pyasn1_modules import pem
  16. from pyasn1_modules import rfc4210
  17. if len(sys.argv) == 2 and sys.argv[1] == '-d':
  18. debug.setLogger(debug.Debug('all'))
  19. elif len(sys.argv) != 1:
  20. print("""Usage:
  21. $ cat cmp.pem | %s [-d]""" % sys.argv[0])
  22. sys.exit(-1)
  23. pkiMessage = rfc4210.PKIMessage()
  24. substrate = pem.readBase64FromFile(sys.stdin)
  25. if not substrate:
  26. sys.exit(0)
  27. pkiMsg, rest = decoder.decode(substrate, asn1Spec=pkiMessage)
  28. print(pkiMsg.prettyPrint())
  29. assert encoder.encode(pkiMsg) == substrate, 'CMP message recode fails'