code: def process_pem_rsakey(self, data, name, idx):
          
          from cryptography.hazmat.primitives.serialization import load_der_public_key
          from cryptography.hazmat.primitives.serialization import load_der_private_key
          try:
              if startswith(data, '-----BEGIN RSA PUBLIC KEY') or startswith(data, '-----BEGIN PUBLIC KEY'):
                  rsa = load_der_public_key(pem_to_der(data), self.get_backend())
                  public_numbers = rsa.public_numbers()
              elif startswith(data, '-----BEGIN RSA PRIVATE KEY') or startswith(data, '-----BEGIN PRIVATE KEY'):
                  rsa = load_der_private_key(pem_to_der(data), None, self.get_backend())
                  public_numbers = rsa.private_numbers().public_numbers
              else:
                  return None
              self.num_rsa_keys += 1
              self.num_rsa += 1
  
              js = collections.OrderedDict()
              js['type'] = 'pem-rsa-key'
              js['fname'] = name
              js['idx'] = idx
              js['pem'] = data
              js['e'] = '0x%x' % public_numbers.e
              js['n'] = '0x%x' % public_numbers.n
  
              if self.has_fingerprint(public_numbers.n):
                  logger.warning('Fingerprint found in PEM RSA key %s ' % name)
                  self.mark_and_add_effort(public_numbers.n, js)
  
                  if self.do_print:
                      print(json.dumps(js))
  
              return TestResult(js)
  
          except Exception as e:
              logger.debug('Pubkey loading error: %s : %s [%s] : %s' % (name, idx, data[:20], e))
              self.trace_logger.log(e)
docs: Processes PEM encoded RSA key
          :param data:
          :param name:
          :param idx:
          :return: