コード例 #1
0
 /** Generates session key and mac key. Caller must synch on this. */
 private void generateSessionKey() throws DHSessionKeyBuilder.InvalidPublicParameterException {
   if (_sessionKey != null) return;
   if (_keyBuilder == null)
     throw new DHSessionKeyBuilder.InvalidPublicParameterException(
         "Illegal state - never generated a key builder");
   _keyBuilder.setPeerPublicValue(_receivedY);
   _sessionKey = _keyBuilder.getSessionKey();
   ByteArray extra = _keyBuilder.getExtraBytes();
   _macKey = new SessionKey(new byte[SessionKey.KEYSIZE_BYTES]);
   System.arraycopy(extra.getData(), 0, _macKey.getData(), 0, SessionKey.KEYSIZE_BYTES);
   if (_log.shouldLog(Log.DEBUG))
     _log.debug("Established outbound keys.  cipher: " + _sessionKey + " mac: " + _macKey);
 }
コード例 #2
0
 /** caller must synch - only call once */
 private void prepareSessionRequest() {
   _keyBuilder = _keyFactory.getBuilder();
   _sentX = new byte[UDPPacketReader.SessionRequestReader.X_LENGTH];
   byte X[] = _keyBuilder.getMyPublicValue().toByteArray();
   if (X.length == 257) System.arraycopy(X, 1, _sentX, 0, _sentX.length);
   else if (X.length == 256) System.arraycopy(X, 0, _sentX, 0, _sentX.length);
   else System.arraycopy(X, 0, _sentX, _sentX.length - X.length, X.length);
 }