code: public void init(byte[] blob, int start, int len) throws SshException {
  
  		ByteArrayReader bar = new ByteArrayReader(blob, start, len);
  
  		try {
  			DSAPublicKeySpec dsaKey;
  
  			// Extract the key information
  			String header = bar.readString();
  
  			if (!header.equals(getAlgorithm())) {
  				throw new SshException("The encoded key is not DSA",
  						SshException.INTERNAL_ERROR);
  			}
  
  			BigInteger p = bar.readBigInteger();
  			BigInteger q = bar.readBigInteger();
  			BigInteger g = bar.readBigInteger();
  			BigInteger y = bar.readBigInteger();
  			dsaKey = new DSAPublicKeySpec(y, p, q, g);
  
  			KeyFactory kf = JCEProvider
  					.getProviderForAlgorithm(JCEAlgorithms.JCE_DSA) == null ? KeyFactory
  					.getInstance(JCEAlgorithms.JCE_DSA) : KeyFactory
  					.getInstance(JCEAlgorithms.JCE_DSA, JCEProvider
  							.getProviderForAlgorithm(JCEAlgorithms.JCE_DSA));
  			pubkey = (DSAPublicKey) kf.generatePublic(dsaKey);
  
  		} catch (Exception ex) {
  			throw new SshException(
  					"Failed to obtain DSA key instance from JCE",
  					SshException.INTERNAL_ERROR, ex);
  
  		} finally {
  			try {
  				bar.close();
  			} catch (IOException e) {
  			}
  		}
  	}
docs: Initialize the public key from a blob of binary data.
  
  @param blob
  byte[]
  @param start
  int
  @param len
  int
  @throws SshException
  @todo Implement this com.sshtools.ssh.SshPublicKey method