crmfdump.py 668 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/python
  2. # Read ASN.1/PEM X.509 CRMF request on stdin, parse into
  3. # plain text, then build substrate from it
  4. from pyasn1.codec.der import decoder, encoder
  5. from pyasn1_modules import rfc2511, pem
  6. import sys
  7. if len(sys.argv) != 1:
  8. print("""Usage:
  9. $ cat crmf.pem | %s""" % sys.argv[0])
  10. sys.exit(-1)
  11. certReq = rfc2511.CertReqMessages()
  12. substrate = pem.readBase64FromFile(sys.stdin)
  13. if not substrate:
  14. sys.exit(0)
  15. cr, rest = decoder.decode(substrate, asn1Spec=certReq)
  16. print(cr.prettyPrint())
  17. assert encoder.encode(cr, defMode=False) == substrate or \
  18. encoder.encode(cr, defMode=True) == substrate, \
  19. 'crmf recode fails'