⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 certdetailsviewpanel.java

📁 JAVA开源LDAP浏览器jxplorer的源码!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			data.add(versionRow);

			Vector serialNumberRow = new Vector();
			serialNumberRow.add(new JLabel("Serial Number", CertViewer.attributeIcon, SwingConstants.LEFT));
			serialNumberRow.add(CBParse.bytes2Hex(cert.getSerialNumber().toByteArray()));
			data.add(serialNumberRow);

			Vector sigAlgRow = new Vector();
			sigAlgRow.add(new JLabel("Signature Algorithm", CertViewer.attributeIcon, SwingConstants.LEFT));
			sigAlgRow.add(cert.getSigAlgName());
			data.add(sigAlgRow);

			Vector issuerRow = new Vector();
			issuerRow.add(new JLabel("Issuer", CertViewer.attributeIcon, SwingConstants.LEFT));
			issuerRow.add(cert.getIssuerX500Principal().getName());
			data.add(issuerRow);

			Vector fromRow = new Vector();
			fromRow.add(new JLabel("Valid From", CertViewer.attributeIcon, SwingConstants.LEFT));
			fromRow.add(cert.getNotBefore());
			data.add(fromRow);

			Vector toRow = new Vector();
			toRow.add(new JLabel("Valid To", CertViewer.attributeIcon, SwingConstants.LEFT));
			toRow.add(cert.getNotAfter());
			data.add(toRow);

			Vector subjectRow = new Vector();
			subjectRow.add(new JLabel("Subject", CertViewer.attributeIcon, SwingConstants.LEFT));


            // debugPrint();

            subjectRow.add(cert.getSubjectX500Principal().getName());
			data.add(subjectRow);

			Vector publicKeyRow = new Vector();
			publicKeyRow.add(new JLabel("Public Key", CertViewer.attributeIcon, SwingConstants.LEFT));
			PublicKey pubKey = cert.getPublicKey();
			String publicKeyString = pubKey.getAlgorithm();
			if (pubKey instanceof RSAPublicKey)
				publicKeyString = publicKeyString + " (" + ((RSAPublicKey) pubKey).getModulus().bitLength() + " Bits)";
			else if (pubKey instanceof DSAPublicKey)
				publicKeyString = publicKeyString + " (" + ((DSAPublicKey) pubKey).getY().bitLength() + " Bits)";
			publicKeyRow.add(publicKeyString);

			/*
			if (pubKey instanceof RSAPublicKey)
				briefDetails.put(publicKeyString, CBUtility.bytes2HexSplit(((RSAPublicKey)pubKey).getModulus().toByteArray(), 4, 36));
			else
				briefDetails.put(publicKeyString, StaticUtil.bytes2Hex(pubKey.getEncoded(), 4, 36));
			*/

			data.add(publicKeyRow);
		}

		if (viewMode == 0 || viewMode == 2)
		{
			Set nonCritSet = cert.getNonCriticalExtensionOIDs();
			if (nonCritSet != null && !nonCritSet.isEmpty())
			{
				for (Iterator i = nonCritSet.iterator(); i.hasNext();)
				{
					String oid = (String)i.next();
					Vector nonCritRow = new Vector();
					String extname = getNameFromOID(oid);
					nonCritRow.add(new JLabel(extname, CertViewer.extensionIcon, SwingConstants.LEFT));
					addExtDetails(nonCritRow,
							printext(extname, cert.getExtensionValue(oid)).toString());
					data.add(nonCritRow);
				}
			}
		}

		if (viewMode == 0 || viewMode == 2 || viewMode == 3)
		{
			Set critSet = cert.getCriticalExtensionOIDs();
			if (critSet != null && !critSet.isEmpty())
			{
				for (Iterator i = critSet.iterator(); i.hasNext();)
				{
					String oid = (String)i.next();
					Vector critRow = new Vector();
					String extname = getNameFromOID(oid);
					critRow.add(new JLabel(extname, CertViewer.criticalExtensionIcon, SwingConstants.LEFT));
					addExtDetails(critRow,
							printext(extname, cert.getExtensionValue(oid)).toString());
					data.add(critRow);
				}
			}
		}

		if (viewMode == 0 || viewMode == 4)
		{
			Vector thumbprintAlgorithmRow = new Vector();
			thumbprintAlgorithmRow.add(new JLabel("Thumbprint Algorithm", CertViewer.thumbprintIcon, SwingConstants.LEFT));
			thumbprintAlgorithmRow.add("sha1");
			data.add(thumbprintAlgorithmRow);

			try
			{
				Vector thumbprintRow = new Vector();
				thumbprintRow.add(new JLabel("Thumbprint", CertViewer.thumbprintIcon, SwingConstants.LEFT));
				MessageDigest md = MessageDigest.getInstance("SHA");
				byte[] hash = md.digest(cert.getEncoded());
				thumbprintRow.add(CBParse.bytes2HexSplit(hash, 4));
				data.add(thumbprintRow);
			}
			catch (Exception ex)
			{
				ex.printStackTrace();
			}
		}

		fireTableStructureChanged();
	}

    private void debugPrint()
    {
        System.out.println("get dn: " + cert.getSubjectDN());
        System.out.println("get dn name: " + cert.getSubjectDN().getName());
        System.out.println("getName: " + cert.getSubjectX500Principal().getName());
        System.out.println("rfc2253: " + cert.getSubjectX500Principal().getName("RFC2253"));
        System.out.println("canonical: " +cert.getSubjectX500Principal().getName("CANONICAL"));
        System.out.println("toString: " + cert.getSubjectX500Principal().toString());
        System.out.print("der: ");
        byte[] bytes = cert.getSubjectX500Principal().getEncoded();
        for (int i=0; i<bytes.length; i++)
            System.out.print(" " + bytes[i]);
        String name = cert.getSubjectX500Principal().getName();
        System.out.println();
        System.out.println("default: ");

        bytes = name.getBytes();
        System.out.println("straight name: " + CBParse.bytes2Hex(bytes));
        try
        {
            System.out.println("unicode: " + CBParse.bytes2Hex(name.getBytes("UTF-16")));
            System.out.println("utf-8: " + CBParse.bytes2Hex(name.getBytes("UTF-8")));
        }
        catch (UnsupportedEncodingException e2)
        {
            e2.printStackTrace();
        }

        System.out.println();
    }

    private void addExtDetails(Vector row, String extDetails)
	{
		StringTokenizer tok = new StringTokenizer(extDetails, "\n");
		if (tok.countTokens() > 1)
		{
			String brief = tok.nextToken();
			row.addElement(brief);
			briefDetails.put(brief, extDetails);
		}
		else
		{
			row.addElement(extDetails);
		}
	}

	private String getNameFromOID(String oid)
	{
		return ASN1OID.getName(oid);
	}

	private Object printext(String extname, byte[] extvalue)
	{
		try
		{
			DERCoder derCoder = new DERCoder();
			ASN1Object ext = derCoder.decode(extvalue);
			ASN1Object rext = null;

			if (ext.isASN1Type(ASN1Type.OCTET_STRING))
				rext = derCoder.decode((byte[])ext.getValue());

			V3Extension v3e = null;
			boolean done = false;

			if (extname.equals("Authority Information Access"))
			{
				v3e = new AuthorityInfoAccess();
				done = true;
			}
			else if (extname.equals("Subject Key Identifier"))
			{
				v3e = new SubjectKeyIdentifier();
				done = true;
			}
			else if (extname.equals("Key Usage"))
			{
				v3e = new KeyUsage();
				done = true;
			}
			else if (extname.equals("Subject Alternative Name"))
			{
				v3e = new SubjectAltName();
				done = true;
			}
			else if (extname.equals("Issuer Alternative Name"))
			{
				v3e = new IssuerAltName();
				done = true;
			}
			else if (extname.equals("Basic Constraints"))
			{
				v3e = new BasicConstraints();
				done = true;
			}
			else if (extname.equals("Name Constraints"))
			{
				v3e = new NameConstraints();
			}
			else if (extname.equals("Certificate Policies"))
			{
				v3e = new CertificatePolicies();
				done = true;
			}
			else if (extname.equals("Policy Mappings"))
			{
				v3e = new PolicyMappings();
			}
			else if (extname.equals("Authority Key Identifier"))
			{
				v3e = new AuthorityKeyIdentifier();
				done = true;
			}
			else if (extname.equals("Policy Constraints"))
			{
				v3e = new PolicyConstraints();
			}
			else if (extname.equals("Extended Key Usage"))
			{
				v3e = new ExtendedKeyUsage();
				done = true;
			}
			else if (extname.equals("CRL Distribution Points"))
			{
				v3e = new CRLDistributionPoints();
				done = true;
			}
			else if (extname.equals("Private Key Usage Period"))
			{
				v3e = new PrivateKeyUsagePeriod();
				done = true;
			}
			else if (extname.equals("Netscape Cert Type"))
			{
				v3e = new NetscapeCertType();
				done = true;
			}
			else
			{
				// v3e = new UnknownExtension(new ObjectID(oid, extname));
			}

			if (!done)
			{
				System.out.println("extname: " + extname);
				System.out.println("exttype: " + rext);
				System.out.println("extvalu: " + rext.getValue());
				System.out.println("extbyte: " + CBParse.bytes2HexSplit((byte[])ext.getValue(), 4, 36));
			}

			if (v3e != null)
			{
				v3e.init(rext);
				if (v3e.toString() == null)
					throw new Exception("Could not read extension: " + extname);
				return v3e;
			}
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}

		return CBParse.bytes2HexSplit(extvalue, 4, 36);
	}

	public int getRowCount()
	{
		return data.size();
	}

	public int getColumnCount()
	{
		return 2;
	}

	public String getColumnName(int col)
	{
		return headers[col];
	}

	public Object getValueAt(int row, int col)
	{
		return ((Vector)data.elementAt(row)).elementAt(col);
	}

	public Class getColumnClass(int col)
	{
		return getValueAt(0, col).getClass();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -