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 { 57 * CK_CHAR year[4]; 58 * CK_CHAR month[2]; 59 * CK_CHAR day[2]; 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 }