org.logi.crypto.protocols
Class EncryptedKeyExServer
java.lang.Object
|
+--org.logi.crypto.Crypto
|
+--org.logi.crypto.protocols.EncryptedKeyEx
|
+--org.logi.crypto.protocols.EncryptedKeyExServer
- All Implemented Interfaces:
- InterKeyExServer, InterProtocolServer, NoninterKeyExServer, NoninterProtocolServer, PrettyPrintable
- public class EncryptedKeyExServer
- extends EncryptedKeyEx
- implements NoninterKeyExServer
Receive an encrypted key from the correstponding EncryptedKeyExClient
and optionally check a signature.
This is a non-interactive protocol and the client sends one message to
the server containing E(K) and optionally S(H(E(K)))). E is encryption
with a CipherKey, S is signing with a Signature key, both set when the
object is created. H is the default hash-function, which will be SHA1
unless changed.
If the key-exchange is performed with a public-key cryptosystem you will
almost certainly want to authenticate the client in some way, such as by
having him sign the session key.
In the case where a symmetric cipher is used for key-exchange and no
signatures are used, attacks on the system, such as modified or dropped
packages, etc., will be difficult to distinguish from transmission
errors.
- Author:
- Logi Ragnarsson
(logir@logi.org)
- See Also:
EncryptedKeyExClient,
SignatureKey,
CipherKey,
HashState.setDefaultHashFunction(java.lang.String)
| Fields inherited from class org.logi.crypto.Crypto |
BIT, cdsPath, EMPTY_ARRAY, FOUR, keySource, NIBBLE, ONE, primeCertainty, random, TWO, ZERO |
|
Method Summary |
byte[] |
message(byte[] received)
Get the next message in the protocol. |
| Methods inherited from class org.logi.crypto.Crypto |
binString, binString, ensureArrayLength, ensureArrayLength, equal, equalRelaxed, equalSub, fromHexNibble, fromHexString, fromString, fromString, hexString, hexString, hexString, hexString, hexString, initRandom, initRandom, makeClass, makeInt, makeLong, makeSessionKey, pastSpace, pickBits, pickBits, prettyPrint, prettyPrint, readBlock, readInt, trimArrayLength, trimArrayLength, trimLeadingZeroes, writeBytes, writeBytes, writeInt |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
EncryptedKeyExServer
public EncryptedKeyExServer(CipherKey key)
- Creates a new EncryptedKeyExchangeServer object. It uses
key to decrypt the session key sent to it by the
client.
EncryptedKeyExServer
public EncryptedKeyExServer(CipherKey key,
SignatureKey verifyKey)
- Creates a new EncryptedKeyExchangeServer object. It uses
key to decrypt the session key sent to it by the
client.
If verifyKey is not null, a signature
is expected to accompany the session key. If none is found, it
will be treated as if a signature was not verified.
EncryptedKeyExServer
public EncryptedKeyExServer(CipherKey key,
SignatureKey verifyKey,
Seedable seedMe)
- Creates a new EncryptedKeyExchangeServer object. It uses
key to decrypt the session key sent to it by the
client.
If verifyKey is not null, a signature
is expected to accompany the session key. If none is found, it
will be treated as if a signature was not verified.
If seedMe is not null, then any messages
recieved which may contain random numbers from the server will
be added to this objects entropy pool.
message
public byte[] message(byte[] received)
throws CryptoProtocolException
- Get the next message in the protocol.
process one message from the client. Since this protocol only
requires a single message to be sent from the client to the
server with no answer, the message method returns null and
can be called independently, any number of times.
- Specified by:
message in interface InterProtocolServer
- Throws:
CryptoProtocolException - if a problem arises with the protocol.
Copyright 1997-2000 Logi Ragnarsson