code: def armor(type_name, der_bytes, headers=None):
      
  
      if not isinstance(der_bytes, byte_cls):
          raise TypeError(unwrap(
              '''
              der_bytes must be a byte string, not %s
              ''' % _type_name(der_bytes)
          ))
  
      if not isinstance(type_name, str_cls):
          raise TypeError(unwrap(
              '''
              type_name must be a unicode string, not %s
              ''',
              _type_name(type_name)
          ))
  
      type_name = type_name.upper().encode('ascii')
  
      output = BytesIO()
      output.write(b'-----BEGIN ')
      output.write(type_name)
      output.write(b'-----\n')
      if headers:
          for key in headers:
              output.write(key.encode('ascii'))
              output.write(b': ')
              output.write(headers[key].encode('ascii'))
              output.write(b'\n')
          output.write(b'\n')
      b64_bytes = base64.b64encode(der_bytes)
      b64_len = len(b64_bytes)
      i = 0
      while i < b64_len:
          output.write(b64_bytes[i:i + 64])
          output.write(b'\n')
          i += 64
      output.write(b'-----END ')
      output.write(type_name)
      output.write(b'-----\n')
  
      return output.getvalue()
docs: Armors a DER-encoded byte string in PEM
  
      :param type_name:
          A unicode string that will be capitalized and placed in the header
          and footer of the block. E.g. "CERTIFICATE", "PRIVATE KEY", etc. This
          will appear as "-----BEGIN CERTIFICATE-----" and
          "-----END CERTIFICATE-----".
  
      :param der_bytes:
          A byte string to be armored
  
      :param headers:
          An OrderedDict of the header lines to write after the BEGIN line
  
      :return:
          A byte string of the PEM block