ru.CryptoPro.Crypto.Key
Class MasterSecret

java.lang.Object
  extended byru.CryptoPro.Crypto.Key.MasterSecret
All Implemented Interfaces:
MasterSecretInterface

public class MasterSecret
extends java.lang.Object
implements MasterSecretInterface

Данный класс представляет собой реализацию мастер ключа протокола TLS. Также в данном классе представлены основные функции работы с мастер ключом.

Author:
Copyright 2004-2005 Crypto-Pro. All rights reserved.
Version:1.0

Constructor Summary
MasterSecret(javax.crypto.SecretKey preMaster, byte[] clientRnd, byte[] serverRnd)
          Создание мастер ключа из случайных данных клиента и сервера, а также из премастер ключа.
 
Method Summary
 javax.crypto.SecretKey calculateConnectionKey(byte[] clientRnd, byte[] serverRnd, java.lang.String keyType, byte[] iv, java.security.spec.AlgorithmParameterSpec params)
          Функция подсчета рабочего ключа сессии заданного типа из хеша мастер ключа.
 byte[] computeFinished(byte[] label, byte[] seed)
          Функция подсчета "finished" сообщения на основе мастер ключа, метки стороны а также хеша всех сообщений сессии.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MasterSecret

public MasterSecret(javax.crypto.SecretKey preMaster,
                    byte[] clientRnd,
                    byte[] serverRnd)
             throws java.security.KeyManagementException,
                    java.security.InvalidKeyException
Создание мастер ключа из случайных данных клиента и сервера, а также из премастер ключа.

Parameters:
clientRnd - случайные данные клиента
serverRnd - случайные данные сервера
preMaster - премастер ключ
Throws:
java.security.KeyManagementException
java.security.InvalidKeyException
Method Detail

calculateConnectionKey

public javax.crypto.SecretKey calculateConnectionKey(byte[] clientRnd,
                                                     byte[] serverRnd,
                                                     java.lang.String keyType,
                                                     byte[] iv,
                                                     java.security.spec.AlgorithmParameterSpec params)
                                              throws java.security.NoSuchAlgorithmException,
                                                     java.security.InvalidKeyException
Функция подсчета рабочего ключа сессии заданного типа из хеша мастер ключа. Хеш мастер ключа считается при создании первого рабочего ключа. Создаваемый ключ может быть одного из типов: Для ключей шифрования в передаваемый массив iv записывается вектор инициализации (место под этот массив должно быть выделено до вызова этой функции). Параметры подсчитываемыого ключа опредляются в соответствии с параметрами params, которые должны являться параметрами шифрования.

Specified by:
calculateConnectionKey in interface MasterSecretInterface
Parameters:
clientRnd - случайные данные клиента
serverRnd - случайные данные сервера
keyType - тип создаваемого ключа
iv - вектор инициализации (для ключей шифрования)
params - параметры шифрования создаваемого ключа
Returns:
рабочий ключ сессии
Throws:
java.security.NoSuchAlgorithmException
java.security.InvalidKeyException

computeFinished

public byte[] computeFinished(byte[] label,
                              byte[] seed)
                       throws java.security.InvalidKeyException
Функция подсчета "finished" сообщения на основе мастер ключа, метки стороны а также хеша всех сообщений сессии.

Specified by:
computeFinished in interface MasterSecretInterface
Parameters:
label - метка стороны - клиент или сервер
seed - хеш всех сообщений сессии
Returns:
"finished" сообщение
Throws:
java.security.InvalidKeyException