/** * Client-side handshake. * * @param webSocketRequest request representation to be modified for use as WebSocket handshake request. * @return handshake instance. */ public static Handshake createClientHandshake(RequestContext webSocketRequest) { final Handshake handshake = new Handshake(); handshake.request = webSocketRequest; handshake.secKey = new SecKey(); return handshake; }
/** * Client-side handshake. * * @param webSocketRequest request representation to be modified for use as WebSocket handshake request. * @return handshake instance. */ public static Handshake createClientHandshake(RequestContext webSocketRequest) { final Handshake handshake = new Handshake(); handshake.request = webSocketRequest; handshake.secKey = new SecKey(); return handshake; }
/** * Generate server-side security key, which gets passed to the client during * the handshake phase as part of message payload. * * @param clientKey client's Sec-WebSocket-Key * @return server key. */ public static SecKey generateServerKey(SecKey clientKey) throws HandshakeException { String key = clientKey.getSecKey() + UpgradeRequest.SERVER_KEY_HASH; final MessageDigest instance; try { instance = MessageDigest.getInstance("SHA-1"); instance.update(key.getBytes("UTF-8")); final byte[] digest = instance.digest(); if (digest.length != 20) { throw new HandshakeException(LocalizationMessages.SEC_KEY_INVALID_LENGTH(digest.length)); } return new SecKey(Base64.getEncoder().encodeToString(digest)); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { throw new HandshakeException(e.getMessage()); } }
/** * Generate server-side security key, which gets passed to the client during * the handshake phase as part of message payload. * * @param clientKey client's Sec-WebSocket-Key * @return server key. */ public static SecKey generateServerKey(SecKey clientKey) throws HandshakeException { String key = clientKey.getSecKey() + UpgradeRequest.SERVER_KEY_HASH; final MessageDigest instance; try { instance = MessageDigest.getInstance("SHA-1"); instance.update(key.getBytes("UTF-8")); final byte[] digest = instance.digest(); if (digest.length != 20) { throw new HandshakeException(LocalizationMessages.SEC_KEY_INVALID_LENGTH(digest.length)); } return new SecKey(Base64.getEncoder().encodeToString(digest)); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { throw new HandshakeException(e.getMessage()); } }
handshake.extensions = TyrusExtension.fromHeaders(value); handshake.secKey = SecKey.generateServerKey(new SecKey(request.getHeader(HandshakeRequest.SEC_WEBSOCKET_KEY)));
handshake.extensions = TyrusExtension.fromHeaders(value); handshake.secKey = SecKey.generateServerKey(new SecKey(request.getHeader(HandshakeRequest.SEC_WEBSOCKET_KEY)));