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 io.netty.util.internal.ObjectUtil;
19
20 import java.nio.ByteBuffer;
21 import java.security.SecureRandom;
22
23 final class SecureRandomQuicConnectionIdGenerator implements QuicConnectionIdGenerator {
24 private static final SecureRandom RANDOM = new SecureRandom();
25
26 static final QuicConnectionIdGenerator INSTANCE = new SecureRandomQuicConnectionIdGenerator();
27
28 private SecureRandomQuicConnectionIdGenerator() {
29 }
30
31 @Override
32 public ByteBuffer newId(int length) {
33 ObjectUtil.checkInRange(length, 0, maxConnectionIdLength(), "length");
34 byte[] bytes = new byte[length];
35 RANDOM.nextBytes(bytes);
36 return ByteBuffer.wrap(bytes);
37 }
38
39 @Override
40 public ByteBuffer newId(ByteBuffer buffer, int length) {
41 return newId(length);
42 }
43
44 @Override
45 public int maxConnectionIdLength() {
46 return Quiche.QUICHE_MAX_CONN_ID_LEN;
47 }
48
49 @Override
50 public boolean isIdempotent() {
51 return false;
52 }
53 }