code: public String getName() {
          String algName = nameTable.get(algid);
          if (algName != null) {
              return algName;
          }
          if ((params != null) && algid.equals(specifiedWithECDSA_oid)) {
              try {
                  AlgorithmId paramsId =
                          AlgorithmId.parse(new DerValue(getEncodedParams()));
                  String paramsName = paramsId.getName();
                  if (paramsName.equals("SHA")) {
                      paramsName = "SHA1";
                  }
                  algName = paramsName + "withECDSA";
              } catch (IOException e) {
                  // ignore
              }
          }
  
          // Try to update the name <-> OID mapping table.
          synchronized (oidTable) {
              reinitializeMappingTableLocked();
              algName = nameTable.get(algid);
          }
  
          return (algName == null) ? algid.toString() : algName;
      }
docs: Returns a name for the algorithm which may be more intelligible
  to humans than the algorithm's OID, but which won't necessarily
  be comprehensible on other systems.  For example, this might
  return a name such as "MD5withRSA" for a signature algorithm on
  some systems.  It also returns names like "OID.1.2.3.4", when
  no particular name for the algorithm is known.