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

📄 dergeneralizedtime.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   DERGeneralizedTime.java

package org.bouncycastle.asn1;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

// Referenced classes of package org.bouncycastle.asn1:
//			ASN1Object, ASN1OctetString, ASN1TaggedObject, DEROutputStream, 
//			DERObject

public class DERGeneralizedTime extends ASN1Object
{

	String time;

	public static DERGeneralizedTime getInstance(Object obj)
	{
		if (obj == null || (obj instanceof DERGeneralizedTime))
			return (DERGeneralizedTime)obj;
		if (obj instanceof ASN1OctetString)
			return new DERGeneralizedTime(((ASN1OctetString)obj).getOctets());
		else
			throw new IllegalArgumentException((new StringBuilder()).append("illegal object in getInstance: ").append(obj.getClass().getName()).toString());
	}

	public static DERGeneralizedTime getInstance(ASN1TaggedObject obj, boolean explicit)
	{
		return getInstance(obj.getObject());
	}

	public DERGeneralizedTime(String time)
	{
		this.time = time;
		try
		{
			getDate();
		}
		catch (ParseException e)
		{
			throw new IllegalArgumentException((new StringBuilder()).append("invalid date string: ").append(e.getMessage()).toString());
		}
	}

	public DERGeneralizedTime(Date time)
	{
		SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'");
		dateF.setTimeZone(new SimpleTimeZone(0, "Z"));
		this.time = dateF.format(time);
	}

	DERGeneralizedTime(byte bytes[])
	{
		char dateC[] = new char[bytes.length];
		for (int i = 0; i != dateC.length; i++)
			dateC[i] = (char)(bytes[i] & 0xff);

		time = new String(dateC);
	}

	public String getTimeString()
	{
		return time;
	}

	public String getTime()
	{
		if (time.charAt(time.length() - 1) == 'Z')
			return (new StringBuilder()).append(time.substring(0, time.length() - 1)).append("GMT+00:00").toString();
		int signPos = time.length() - 5;
		char sign = time.charAt(signPos);
		if (sign == '-' || sign == '+')
			return (new StringBuilder()).append(time.substring(0, signPos)).append("GMT").append(time.substring(signPos, signPos + 3)).append(":").append(time.substring(signPos + 3)).toString();
		signPos = time.length() - 3;
		sign = time.charAt(signPos);
		if (sign == '-' || sign == '+')
			return (new StringBuilder()).append(time.substring(0, signPos)).append("GMT").append(time.substring(signPos)).append(":00").toString();
		else
			return (new StringBuilder()).append(time).append(calculateGMTOffset()).toString();
	}

	private String calculateGMTOffset()
	{
		String sign = "+";
		TimeZone timeZone = TimeZone.getDefault();
		int offset = timeZone.getRawOffset();
		if (offset < 0)
		{
			sign = "-";
			offset = -offset;
		}
		int hours = offset / 0x36ee80;
		int minutes = (offset - hours * 60 * 60 * 1000) / 60000;
		try
		{
			if (timeZone.useDaylightTime() && timeZone.inDaylightTime(getDate()))
				hours += sign.equals("+") ? 1 : -1;
		}
		catch (ParseException e) { }
		return (new StringBuilder()).append("GMT").append(sign).append(convert(hours)).append(":").append(convert(minutes)).toString();
	}

	private String convert(int time)
	{
		if (time < 10)
			return (new StringBuilder()).append("0").append(time).toString();
		else
			return Integer.toString(time);
	}

	public Date getDate()
		throws ParseException
	{
		String d = time;
		SimpleDateFormat dateF;
		if (time.endsWith("Z"))
		{
			if (hasFractionalSeconds())
				dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSS'Z'");
			else
				dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'");
			dateF.setTimeZone(new SimpleTimeZone(0, "Z"));
		} else
		if (time.indexOf('-') > 0 || time.indexOf('+') > 0)
		{
			d = getTime();
			if (hasFractionalSeconds())
				dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSSz");
			else
				dateF = new SimpleDateFormat("yyyyMMddHHmmssz");
			dateF.setTimeZone(new SimpleTimeZone(0, "Z"));
		} else
		{
			if (hasFractionalSeconds())
				dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSS");
			else
				dateF = new SimpleDateFormat("yyyyMMddHHmmss");
			dateF.setTimeZone(new SimpleTimeZone(0, TimeZone.getDefault().getID()));
		}
		return dateF.parse(d);
	}

	private boolean hasFractionalSeconds()
	{
		return time.indexOf('.') == 14;
	}

	private byte[] getOctets()
	{
		char cs[] = time.toCharArray();
		byte bs[] = new byte[cs.length];
		for (int i = 0; i != cs.length; i++)
			bs[i] = (byte)cs[i];

		return bs;
	}

	void encode(DEROutputStream out)
		throws IOException
	{
		out.writeEncoded(24, getOctets());
	}

	boolean asn1Equals(DERObject o)
	{
		if (!(o instanceof DERGeneralizedTime))
			return false;
		else
			return time.equals(((DERGeneralizedTime)o).time);
	}

	public int hashCode()
	{
		return time.hashCode();
	}
}

⌨️ 快捷键说明

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