1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.security;
19
20 import io.netty.buffer.ByteBuf;
21 import io.netty.buffer.Unpooled;
22 import io.netty.channel.ChannelHandlerContext;
23 import io.netty.channel.SimpleChannelInboundHandler;
24
25 import javax.security.sasl.SaslClient;
26
27 import org.apache.hadoop.hbase.classification.InterfaceAudience;
28
29
30
31
32
33 @InterfaceAudience.Private
34 public class SaslUnwrapHandler extends SimpleChannelInboundHandler<ByteBuf> {
35
36 private final SaslClient saslClient;
37
38 public SaslUnwrapHandler(SaslClient saslClient) {
39 this.saslClient = saslClient;
40 }
41
42 @Override
43 public void channelInactive(ChannelHandlerContext ctx) throws Exception {
44 SaslUtil.safeDispose(saslClient);
45 ctx.fireChannelInactive();
46 }
47
48 @Override
49 protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {
50 byte[] bytes = new byte[msg.readableBytes()];
51 msg.readBytes(bytes);
52 ctx.fireChannelRead(Unpooled.wrappedBuffer(saslClient.unwrap(bytes, 0, bytes.length)));
53 }
54 }