2362N/A * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * @summary DHKeyAgreement3 0N/A * This test utility executes the Diffie-Hellman key agreement protocol 0N/A * between 3 parties: Alice, Bob, and Carol. 0N/A * We use the same 1024 bit prime modulus and base generator that are used by 0N/A // Add JCE to the list of providers 0N/A // Alice creates her own DH key pair 0N/A // Bob creates his own DH key pair 0N/A // Carol creates her own DH key pair 0N/A // Alice uses Carol's public key 0N/A // Bob uses Alice's public key 0N/A // Carol uses Bob's public key 0N/A // Alice uses Carol's result from above 0N/A // Bob uses Alice's result from above 0N/A // Carol uses Bob's result from above 0N/A // Alice, Bob and Carol compute their secrets 0N/A // Compare Alice and Bob 0N/A throw new Exception(
"Alice and Bob have different lengths");
0N/A // Compare Bob and Carol 0N/A throw new Exception(
"Bob and Carol have different lengths");
0N/A * Converts a byte to hex digit and writes to the supplied buffer 0N/A char[]
hexChars = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
0N/A '9',
'A',
'B',
'C',
'D',
'E',
'F' };
0N/A * Converts a byte array to hex string 0N/A for (
int i =
0; i <
len; i++) {
0N/A * Prints the usage of this test. 0N/A // The 1024 bit Diffie-Hellman modulus values used by SKIP 0N/A (
byte)
0xF4, (
byte)
0x88, (
byte)
0xFD, (
byte)
0x58,
0N/A (
byte)
0x4E, (
byte)
0x49, (
byte)
0xDB, (
byte)
0xCD,
0N/A (
byte)
0x20, (
byte)
0xB4, (
byte)
0x9D, (
byte)
0xE4,
0N/A (
byte)
0x91, (
byte)
0x07, (
byte)
0x36, (
byte)
0x6B,
0N/A (
byte)
0x33, (
byte)
0x6C, (
byte)
0x38, (
byte)
0x0D,
0N/A (
byte)
0x45, (
byte)
0x1D, (
byte)
0x0F, (
byte)
0x7C,
0N/A (
byte)
0x88, (
byte)
0xB3, (
byte)
0x1C, (
byte)
0x7C,
0N/A (
byte)
0x5B, (
byte)
0x2D, (
byte)
0x8E, (
byte)
0xF6,
0N/A (
byte)
0xF3, (
byte)
0xC9, (
byte)
0x23, (
byte)
0xC0,
0N/A (
byte)
0x43, (
byte)
0xF0, (
byte)
0xA5, (
byte)
0x5B,
0N/A (
byte)
0x18, (
byte)
0x8D, (
byte)
0x8E, (
byte)
0xBB,
0N/A (
byte)
0x55, (
byte)
0x8C, (
byte)
0xB8, (
byte)
0x5D,
0N/A (
byte)
0x38, (
byte)
0xD3, (
byte)
0x34, (
byte)
0xFD,
0N/A (
byte)
0x7C, (
byte)
0x17, (
byte)
0x57, (
byte)
0x43,
0N/A (
byte)
0xA3, (
byte)
0x1D, (
byte)
0x18, (
byte)
0x6C,
0N/A (
byte)
0xDE, (
byte)
0x33, (
byte)
0x21, (
byte)
0x2C,
0N/A (
byte)
0xB5, (
byte)
0x2A, (
byte)
0xFF, (
byte)
0x3C,
0N/A (
byte)
0xE1, (
byte)
0xB1, (
byte)
0x29, (
byte)
0x40,
0N/A (
byte)
0x18, (
byte)
0x11, (
byte)
0x8D, (
byte)
0x7C,
0N/A (
byte)
0x84, (
byte)
0xA7, (
byte)
0x0A, (
byte)
0x72,
0N/A (
byte)
0xD6, (
byte)
0x86, (
byte)
0xC4, (
byte)
0x03,
0N/A (
byte)
0x19, (
byte)
0xC8, (
byte)
0x07, (
byte)
0x29,
0N/A (
byte)
0x7A, (
byte)
0xCA, (
byte)
0x95, (
byte)
0x0C,
0N/A (
byte)
0xD9, (
byte)
0x96, (
byte)
0x9F, (
byte)
0xAB,
0N/A (
byte)
0xD0, (
byte)
0x0A, (
byte)
0x50, (
byte)
0x9B,
0N/A (
byte)
0x02, (
byte)
0x46, (
byte)
0xD3, (
byte)
0x08,
0N/A (
byte)
0x3D, (
byte)
0x66, (
byte)
0xA4, (
byte)
0x5D,
0N/A (
byte)
0x41, (
byte)
0x9F, (
byte)
0x9C, (
byte)
0x7C,
0N/A (
byte)
0xBD, (
byte)
0x89, (
byte)
0x4B, (
byte)
0x22,
0N/A (
byte)
0x19, (
byte)
0x26, (
byte)
0xBA, (
byte)
0xAB,
0N/A (
byte)
0xA2, (
byte)
0x5E, (
byte)
0xC3, (
byte)
0x55,
0N/A (
byte)
0xE9, (
byte)
0x2F, (
byte)
0x78, (
byte)
0xC7 0N/A // The SKIP 1024 bit modulus 0N/A // The base used with the SKIP 1024 bit modulus