pkcs10dump.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 X.509 certificate requests (PKCS#10 format) on stdin,
  9. # parse each into plain text, then build substrate from it
  10. #
  11. import sys
  12. from pyasn1.codec.der import decoder
  13. from pyasn1.codec.der import encoder
  14. from pyasn1_modules import pem
  15. from pyasn1_modules import rfc2314
  16. if len(sys.argv) != 1:
  17. print("""Usage:
  18. $ cat certificateRequest.pem | %s""" % sys.argv[0])
  19. sys.exit(-1)
  20. certType = rfc2314.CertificationRequest()
  21. certCnt = 0
  22. while True:
  23. idx, substrate = pem.readPemBlocksFromFile(
  24. sys.stdin, ('-----BEGIN CERTIFICATE REQUEST-----',
  25. '-----END CERTIFICATE REQUEST-----')
  26. )
  27. if not substrate:
  28. break
  29. cert, rest = decoder.decode(substrate, asn1Spec=certType)
  30. if rest:
  31. substrate = substrate[:-len(rest)]
  32. print(cert.prettyPrint())
  33. assert encoder.encode(cert) == substrate, 'cert recode fails'
  34. certCnt += 1
  35. print('*** %s PEM certificate request(s) de/serialized' % certCnt)