pkcs10dump.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/python
  2. #
  3. # Read ASN.1/PEM X.509 certificate requests (PKCS#10 format) on stdin,
  4. # parse each into plain text, then build substrate from it
  5. #
  6. from pyasn1.codec.der import decoder, encoder
  7. from pyasn1_modules import rfc2314, pem
  8. import sys
  9. if len(sys.argv) != 1:
  10. print("""Usage:
  11. $ cat certificateRequest.pem | %s""" % sys.argv[0])
  12. sys.exit(-1)
  13. certType = rfc2314.CertificationRequest()
  14. certCnt = 0
  15. while 1:
  16. idx, substrate = pem.readPemBlocksFromFile(
  17. sys.stdin, ('-----BEGIN CERTIFICATE REQUEST-----',
  18. '-----END CERTIFICATE REQUEST-----')
  19. )
  20. if not substrate:
  21. break
  22. cert, rest = decoder.decode(substrate, asn1Spec=certType)
  23. if rest: substrate = substrate[:-len(rest)]
  24. print(cert.prettyPrint())
  25. assert encoder.encode(cert, defMode=False) == substrate or \
  26. encoder.encode(cert, defMode=True) == substrate, \
  27. 'cert recode fails'
  28. certCnt = certCnt + 1
  29. print('*** %s PEM certificate request(s) de/serialized' % certCnt)