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

📄 dergeneralizedtime.java

📁 bouncycastle 是一个JAVA安全提供者
💻 JAVA
字号:
package org.bouncycastle.asn1;import java.io.IOException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.SimpleTimeZone;/** * Generalized time object. */public class DERGeneralizedTime    extends DERObject{    String      time;    /**     * return a generalized time from the passed in object     *     * @exception IllegalArgumentException if the object cannot be converted.     */    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());        }        throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());    }    /**     * return a Generalized Time object from a tagged object.     *     * @param obj the tagged object holding the object we want     * @param explicit true if the object is meant to be explicitly     *              tagged false otherwise.     * @exception IllegalArgumentException if the tagged object cannot     *               be converted.     */    public static DERGeneralizedTime getInstance(        ASN1TaggedObject obj,        boolean          explicit)    {        return getInstance(obj.getObject());    }        /**     * The correct format for this is YYYYMMDDHHMMSSZ, or without the Z     * for local time, or Z+-HHMM on the end, for difference between local     * time and UTC time.     * <p>     *     * @param time the time string.     */    public DERGeneralizedTime(        String  time)    {        this.time = time;    }    /**     * base constructer from a java.util.date object     */    public DERGeneralizedTime(        Date time)    {        SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'");        dateF.setTimeZone(new SimpleTimeZone(0,"Z"));        this.time = dateF.format(time);    }    DERGeneralizedTime(        byte[]  bytes)    {        //        // explicitly convert to characters        //        char[]  dateC = new char[bytes.length];        for (int i = 0; i != dateC.length; i++)        {            dateC[i] = (char)(bytes[i] & 0xff);        }        this.time = new String(dateC);    }    /**     * return the time - always in the form of      *  YYYYMMDDhhmmssGMT(+hh:mm|-hh:mm).     * <p>     * Normally in a certificate we would expect "Z" rather than "GMT",     * however adding the "GMT" means we can just use:     * <pre>     *     dateF = new SimpleDateFormat("yyyyMMddHHmmssz");     * </pre>     * To read in the time and get a date which is compatible with our local     * time zone.     */    public String getTime()    {        //        // standardise the format.        //                     if (time.charAt(time.length() - 1) == 'Z')        {            return time.substring(0, time.length() - 1) + "GMT+00:00";        }        else        {            int signPos = time.length() - 5;            char sign = time.charAt(signPos);            if (sign == '-' || sign == '+')            {                return time.substring(0, signPos)                    + "GMT"                    + time.substring(signPos, signPos + 3)                    + ":"                    + time.substring(signPos + 3);            }            else            {                signPos = time.length() - 3;                sign = time.charAt(signPos);                if (sign == '-' || sign == '+')                {                    return time.substring(0, signPos)                        + "GMT"                        + time.substring(signPos)                        + ":00";                }            }        }                    return time;    }    public Date getDate()         throws ParseException    {        SimpleDateFormat dateF;        if (time.indexOf('.') == 14)        {            dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS'Z'");        }        else        {            dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'");        }                dateF.setTimeZone(new SimpleTimeZone(0, "Z"));                return dateF.parse(time);    }        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(GENERALIZED_TIME, this.getOctets());    }        public boolean equals(        Object  o)    {        if ((o == null) || !(o instanceof DERGeneralizedTime))        {            return false;        }        return time.equals(((DERGeneralizedTime)o).time);    }        public int hashCode()    {        return time.hashCode();    }}

⌨️ 快捷键说明

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