1 /* 2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. 3 */ 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 CK_SSL3_RANDOM_DATA provides information about the random data of a 54 * client and a server in an SSL context. This class is used by both the 55 * CKM_SSL3_MASTER_KEY_DERIVE and the CKM_SSL3_KEY_AND_MAC_DERIVE mechanisms. 56 * <p> 57 * <B>PKCS#11 structure:</B> 58 * <PRE> 59 * typedef struct CK_SSL3_RANDOM_DATA { 60 * CK_BYTE_PTR pClientRandom; 61 * CK_ULONG ulClientRandomLen; 62 * CK_BYTE_PTR pServerRandom; 63 * CK_ULONG ulServerRandomLen; 64 * } CK_SSL3_RANDOM_DATA; 65 * </PRE> 66 * 67 * @author Karl Scheibelhofer <Karl.Scheibelhofer@iaik.at> 68 * @author Martin Schlaeffer <schlaeff@sbox.tugraz.at> 69 */ 70 public class CK_SSL3_RANDOM_DATA { 71 72 /** 73 * <B>PKCS#11:</B> 74 * <PRE> 75 * CK_BYTE_PTR pClientRandom; 76 * CK_ULONG ulClientRandomLen; 77 * </PRE> 78 */ 79 public byte[] pClientRandom; 80 81 /** 82 * <B>PKCS#11:</B> 83 * <PRE> 84 * CK_BYTE_PTR pServerRandom; 85 * CK_ULONG ulServerRandomLen; 86 * </PRE> 87 */ 88 public byte[] pServerRandom; 89 90 public CK_SSL3_RANDOM_DATA(byte[] clientRandom, byte[] serverRandom) { 91 pClientRandom = clientRandom; 92 pServerRandom = serverRandom; 93 } 94 95 /** 96 * Returns the string representation of CK_SSL3_RANDOM_DATA. 97 * 98 * @return the string representation of CK_SSL3_RANDOM_DATA 99 */ 100 public String toString() { 101 StringBuilder buffer = new StringBuilder(); 102 103 buffer.append(Constants.INDENT); 104 buffer.append("pClientRandom: "); 105 buffer.append(Functions.toHexString(pClientRandom)); 106 buffer.append(Constants.NEWLINE); 107 108 buffer.append(Constants.INDENT); 109 buffer.append("ulClientRandomLen: "); 110 buffer.append(pClientRandom.length); 111 buffer.append(Constants.NEWLINE); 112 113 buffer.append(Constants.INDENT); 114 buffer.append("pServerRandom: "); 115 buffer.append(Functions.toHexString(pServerRandom)); 116 buffer.append(Constants.NEWLINE); 117 118 buffer.append(Constants.INDENT); 119 buffer.append("ulServerRandomLen: "); 120 buffer.append(pServerRandom.length); 121 //buffer.append(Constants.NEWLINE); 122 123 return buffer.toString(); 124 } 125 126 }