1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.quic;
17
18 import java.nio.ByteBuffer;
19
20 import io.netty.util.internal.ObjectUtil;
21
22
23
24
25
26 final class HmacSignQuicConnectionIdGenerator implements QuicConnectionIdGenerator {
27 static final QuicConnectionIdGenerator INSTANCE = new HmacSignQuicConnectionIdGenerator();
28
29 private HmacSignQuicConnectionIdGenerator() {
30 }
31
32 @Override
33 public ByteBuffer newId(int length) {
34 throw new UnsupportedOperationException(
35 "HmacSignQuicConnectionIdGenerator should always have an input to sign with");
36 }
37
38 @Override
39 public ByteBuffer newId(ByteBuffer buffer, int length) {
40 ObjectUtil.checkNotNull(buffer, "buffer");
41 ObjectUtil.checkPositive(buffer.remaining(), "buffer");
42 ObjectUtil.checkInRange(length, 0, maxConnectionIdLength(), "length");
43
44 return Hmac.sign(buffer, length);
45 }
46
47 @Override
48 public int maxConnectionIdLength() {
49 return Quiche.QUICHE_MAX_CONN_ID_LEN;
50 }
51
52 @Override
53 public boolean isIdempotent() {
54 return true;
55 }
56 }