code: def load_key(key_str, key_pass):
          
  
          try:
              # First try to parse as a p12 file
              key, cert, _ = asymmetric.load_pkcs12(key_str, key_pass)
          except ValueError as e:
              # If it fails due to invalid password raise error here
              if e.args[0] == 'Password provided is invalid':
                  raise AS2Exception('Password not valid for Private Key.')
  
              # if not try to parse as a pem file
              key, cert = None, None
              for kc in split_pem(key_str):
                  try:
                      cert = asymmetric.load_certificate(kc)
                  except (ValueError, TypeError):
                      try:
                          key = asymmetric.load_private_key(kc, key_pass)
                      except OSError:
                          raise AS2Exception(
                              'Invalid Private Key or password is not correct.')
  
          if not key or not cert:
              raise AS2Exception(
                  'Invalid Private key file or Public key not included.')
  
          return key, cert
docs: Function to load password protected key file in p12 or pem format