/*
 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package sun.security.internal.spec;

import java.security.spec.KeySpec;

import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;

KeySpec class for SSL/TLS key material.

Instances of this class are returned by the generateKey() method of KeyGenerators of the type "TlsKeyMaterial". Instances of this class are immutable.

Author: Andreas Sterbenz
Since: 1.6
Deprecated:Sun JDK internal use only --- WILL BE REMOVED in a future release.
/** * KeySpec class for SSL/TLS key material. * * <p>Instances of this class are returned by the <code>generateKey()</code> * method of KeyGenerators of the type "TlsKeyMaterial". * Instances of this class are immutable. * * @since 1.6 * @author Andreas Sterbenz * @deprecated Sun JDK internal use only --- WILL BE REMOVED in a future * release. */
@Deprecated public class TlsKeyMaterialSpec implements KeySpec, SecretKey { static final long serialVersionUID = 812912859129525028L; private final SecretKey clientMacKey, serverMacKey; private final SecretKey clientCipherKey, serverCipherKey; private final IvParameterSpec clientIv, serverIv;
Constructs a new TlsKeymaterialSpec from the client and server MAC keys. This call is equivalent to new TlsKeymaterialSpec(clientMacKey, serverMacKey, null, null, null, null).
Params:
  • clientMacKey – the client MAC key
  • serverMacKey – the server MAC key
Throws:
/** * Constructs a new TlsKeymaterialSpec from the client and server MAC * keys. * This call is equivalent to * <code>new TlsKeymaterialSpec(clientMacKey, serverMacKey, * null, null, null, null)</code>. * * @param clientMacKey the client MAC key * @param serverMacKey the server MAC key * @throws NullPointerException if clientMacKey or serverMacKey is null */
public TlsKeyMaterialSpec(SecretKey clientMacKey, SecretKey serverMacKey) { this(clientMacKey, serverMacKey, null, null, null, null); }
Constructs a new TlsKeymaterialSpec from the client and server MAC keys and client and server cipher keys. This call is equivalent to new TlsKeymaterialSpec(clientMacKey, serverMacKey, clientCipherKey, serverCipherKey, null, null).
Params:
  • clientMacKey – the client MAC key
  • serverMacKey – the server MAC key
  • clientCipherKey – the client cipher key (or null)
  • serverCipherKey – the server cipher key (or null)
Throws:
/** * Constructs a new TlsKeymaterialSpec from the client and server MAC * keys and client and server cipher keys. * This call is equivalent to * <code>new TlsKeymaterialSpec(clientMacKey, serverMacKey, * clientCipherKey, serverCipherKey, null, null)</code>. * * @param clientMacKey the client MAC key * @param serverMacKey the server MAC key * @param clientCipherKey the client cipher key (or null) * @param serverCipherKey the server cipher key (or null) * @throws NullPointerException if clientMacKey or serverMacKey is null */
public TlsKeyMaterialSpec(SecretKey clientMacKey, SecretKey serverMacKey, SecretKey clientCipherKey, SecretKey serverCipherKey) { this(clientMacKey, serverMacKey, clientCipherKey, null, serverCipherKey, null); }
Constructs a new TlsKeymaterialSpec from the client and server MAC keys, client and server cipher keys, and client and server initialization vectors.
Params:
  • clientMacKey – the client MAC key
  • serverMacKey – the server MAC key
  • clientCipherKey – the client cipher key (or null)
  • clientIv – the client initialization vector (or null)
  • serverCipherKey – the server cipher key (or null)
  • serverIv – the server initialization vector (or null)
Throws:
/** * Constructs a new TlsKeymaterialSpec from the client and server MAC * keys, client and server cipher keys, and client and server * initialization vectors. * * @param clientMacKey the client MAC key * @param serverMacKey the server MAC key * @param clientCipherKey the client cipher key (or null) * @param clientIv the client initialization vector (or null) * @param serverCipherKey the server cipher key (or null) * @param serverIv the server initialization vector (or null) * * @throws NullPointerException if clientMacKey or serverMacKey is null */
public TlsKeyMaterialSpec(SecretKey clientMacKey, SecretKey serverMacKey, SecretKey clientCipherKey, IvParameterSpec clientIv, SecretKey serverCipherKey, IvParameterSpec serverIv) { if ((clientMacKey == null) || (serverMacKey == null)) { throw new NullPointerException("MAC keys must not be null"); } this.clientMacKey = clientMacKey; this.serverMacKey = serverMacKey; this.clientCipherKey = clientCipherKey; this.serverCipherKey = serverCipherKey; this.clientIv = clientIv; this.serverIv = serverIv; }
Returns TlsKeyMaterial.
Returns:TlsKeyMaterial.
/** * Returns <code>TlsKeyMaterial</code>. * * @return <code>TlsKeyMaterial</code>. */
public String getAlgorithm() { return "TlsKeyMaterial"; }
Returns null because keys of this type have no encoding.
Returns:null because keys of this type have no encoding.
/** * Returns <code>null</code> because keys of this type have no encoding. * * @return <code>null</code> because keys of this type have no encoding. */
public String getFormat() { return null; }
Returns null because keys of this type have no encoding.
Returns:null because keys of this type have no encoding.
/** * Returns <code>null</code> because keys of this type have no encoding. * * @return <code>null</code> because keys of this type have no encoding. */
public byte[] getEncoded() { return null; }
Returns the client MAC key.
Returns:the client MAC key.
/** * Returns the client MAC key. * * @return the client MAC key. */
public SecretKey getClientMacKey() { return clientMacKey; }
Return the server MAC key.
Returns:the server MAC key.
/** * Return the server MAC key. * * @return the server MAC key. */
public SecretKey getServerMacKey() { return serverMacKey; }
Return the client cipher key (or null).
Returns:the client cipher key (or null).
/** * Return the client cipher key (or null). * * @return the client cipher key (or null). */
public SecretKey getClientCipherKey() { return clientCipherKey; }
Return the client initialization vector (or null).
Returns:the client initialization vector (or null).
/** * Return the client initialization vector (or null). * * @return the client initialization vector (or null). */
public IvParameterSpec getClientIv() { return clientIv; }
Return the server cipher key (or null).
Returns:the server cipher key (or null).
/** * Return the server cipher key (or null). * * @return the server cipher key (or null). */
public SecretKey getServerCipherKey() { return serverCipherKey; }
Return the server initialization vector (or null).
Returns:the server initialization vector (or null).
/** * Return the server initialization vector (or null). * * @return the server initialization vector (or null). */
public IvParameterSpec getServerIv() { return serverIv; } }