jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/CK_DATE.java
changeset 43248 5e15de85a1a0
parent 42693 6645de32a866
equal deleted inserted replaced
43247:8d242299a219 43248:5e15de85a1a0
       
     1 /*
       
     2  * reserved comment block
       
     3  * DO NOT REMOVE OR ALTER!
       
     4  */
       
     5 /* Copyright  (c) 2002 Graz University of Technology. All rights reserved.
       
     6  *
       
     7  * Redistribution and use in  source and binary forms, with or without
       
     8  * modification, are permitted  provided that the following conditions are met:
       
     9  *
       
    10  * 1. Redistributions of  source code must retain the above copyright notice,
       
    11  *    this list of conditions and the following disclaimer.
       
    12  *
       
    13  * 2. Redistributions in  binary form must reproduce the above copyright notice,
       
    14  *    this list of conditions and the following disclaimer in the documentation
       
    15  *    and/or other materials provided with the distribution.
       
    16  *
       
    17  * 3. The end-user documentation included with the redistribution, if any, must
       
    18  *    include the following acknowledgment:
       
    19  *
       
    20  *    "This product includes software developed by IAIK of Graz University of
       
    21  *     Technology."
       
    22  *
       
    23  *    Alternately, this acknowledgment may appear in the software itself, if
       
    24  *    and wherever such third-party acknowledgments normally appear.
       
    25  *
       
    26  * 4. The names "Graz University of Technology" and "IAIK of Graz University of
       
    27  *    Technology" must not be used to endorse or promote products derived from
       
    28  *    this software without prior written permission.
       
    29  *
       
    30  * 5. Products derived from this software may not be called
       
    31  *    "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior
       
    32  *    written permission of Graz University of Technology.
       
    33  *
       
    34  *  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
       
    35  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       
    36  *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    37  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE
       
    38  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
       
    39  *  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    40  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
       
    41  *  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
       
    42  *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       
    43  *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
       
    44  *  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       
    45  *  POSSIBILITY  OF SUCH DAMAGE.
       
    46  */
       
    47 
       
    48 package sun.security.pkcs11.wrapper;
       
    49 
       
    50 
       
    51 
       
    52 /**
       
    53  * class .<p>
       
    54  * <B>PKCS#11 structure:</B>
       
    55  * <PRE>
       
    56  * typedef struct CK_DATE {&nbsp;&nbsp;
       
    57  *   CK_CHAR year[4];&nbsp;&nbsp;
       
    58  *   CK_CHAR month[2];&nbsp;&nbsp;
       
    59  *   CK_CHAR day[2];&nbsp;&nbsp;
       
    60  * } CK_DATE;
       
    61  * </PRE>
       
    62  *
       
    63  * @author Karl Scheibelhofer <Karl.Scheibelhofer@iaik.at>
       
    64  * @author Martin Schlaeffer <schlaeff@sbox.tugraz.at>
       
    65  */
       
    66 public class CK_DATE implements Cloneable {
       
    67 
       
    68     /**
       
    69      * <B>PKCS#11:</B>
       
    70      * <PRE>
       
    71      *   CK_CHAR year[4];   - the year ("1900" - "9999")
       
    72      * </PRE>
       
    73      */
       
    74     public char[] year;    /* the year ("1900" - "9999") */
       
    75 
       
    76     /**
       
    77      * <B>PKCS#11:</B>
       
    78      * <PRE>
       
    79      *   CK_CHAR month[2];  - the month ("01" - "12")
       
    80      * </PRE>
       
    81      */
       
    82     public char[] month;   /* the month ("01" - "12") */
       
    83 
       
    84     /**
       
    85      * <B>PKCS#11:</B>
       
    86      * <PRE>
       
    87      *   CK_CHAR day[2];    - the day ("01" - "31")
       
    88      * </PRE>
       
    89      */
       
    90     public char[] day;     /* the day ("01" - "31") */
       
    91 
       
    92     public CK_DATE(char[] year, char[] month, char[] day) {
       
    93         this.year = year;
       
    94         this.month = month;
       
    95         this.day = day;
       
    96     }
       
    97 
       
    98     /**
       
    99      * Create a (deep) clone of this object.
       
   100      *
       
   101      * @return A clone of this object.
       
   102      */
       
   103     public Object clone() {
       
   104         CK_DATE copy = null;
       
   105         try {
       
   106             copy = (CK_DATE) super.clone();
       
   107         } catch (CloneNotSupportedException cnse) {
       
   108             // re-throw as RuntimeException
       
   109             throw (RuntimeException)
       
   110                 (new RuntimeException("Clone error").initCause(cnse));
       
   111         }
       
   112         copy.year = this.year.clone();
       
   113         copy.month = this.month.clone();
       
   114         copy.day =  this.day.clone();
       
   115 
       
   116         return copy;
       
   117     }
       
   118 
       
   119     /**
       
   120      * Returns the string representation of CK_DATE.
       
   121      *
       
   122      * @return the string representation of CK_DATE
       
   123      */
       
   124     public String toString() {
       
   125         StringBuilder sb = new StringBuilder();
       
   126 
       
   127         sb.append(new String(day));
       
   128         sb.append('.');
       
   129         sb.append(new String(month));
       
   130         sb.append('.');
       
   131         sb.append(new String(year));
       
   132         sb.append(" (DD.MM.YYYY)");
       
   133 
       
   134         return sb.toString();
       
   135     }
       
   136 
       
   137 }