code: static PublicKey
  toPublicKey(KEYBase r) throws DNSSECException {
  	int alg = r.getAlgorithm();
  	try {
  		switch (alg) {
  		case Algorithm.RSAMD5:
  		case Algorithm.RSASHA1:
  		case Algorithm.RSA_NSEC3_SHA1:
  		case Algorithm.RSASHA256:
  		case Algorithm.RSASHA512:
  			return toRSAPublicKey(r);
  		case Algorithm.DSA:
  		case Algorithm.DSA_NSEC3_SHA1:
  			return toDSAPublicKey(r);
  		case Algorithm.ECC_GOST:
  			return toECGOSTPublicKey(r, GOST);
  		case Algorithm.ECDSAP256SHA256:
  			return toECDSAPublicKey(r, ECDSA_P256);
  		case Algorithm.ECDSAP384SHA384:
  			return toECDSAPublicKey(r, ECDSA_P384);
  		default:
  			throw new UnsupportedAlgorithmException(alg);
  		}
  	}
  	catch (IOException e) {
  		throw new MalformedKeyException(r);
  	}
  	catch (GeneralSecurityException e) {
  		throw new DNSSECException(e.toString());
  	}
  }
docs: Converts a KEY/DNSKEY record into a PublicKey