Skip to content

Commit 23a6f50

Browse files
committed
Code review feedback and renamed AdvertisingTOkenInput/RefreshTokenInput to AdvertisingTokenRequest/RefreshTOkenRequest
1 parent d76bceb commit 23a6f50

File tree

12 files changed

+267
-264
lines changed

12 files changed

+267
-264
lines changed

src/main/java/com/uid2/operator/model/AdvertisingTokenInput.java renamed to src/main/java/com/uid2/operator/model/AdvertisingTokenRequest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
import com.uid2.operator.util.PrivacyBits;
77
import com.uid2.shared.model.TokenVersion;
88

9-
public class AdvertisingTokenInput extends VersionedToken {
9+
// class containing enough data to create a new uid or advertising token
10+
public class AdvertisingTokenRequest extends VersionedToken {
1011
public final OperatorIdentity operatorIdentity;
1112
public final SourcePublisher sourcePublisher;
1213
public final RawUidIdentity rawUidIdentity;
1314
public final PrivacyBits privacyBits;
1415
public final Instant establishedAt;
1516

16-
public AdvertisingTokenInput(TokenVersion version, Instant createdAt, Instant expiresAt, OperatorIdentity operatorIdentity,
17-
SourcePublisher sourcePublisher, RawUidIdentity rawUidIdentity, PrivacyBits privacyBits,
18-
Instant establishedAt) {
17+
public AdvertisingTokenRequest(TokenVersion version, Instant createdAt, Instant expiresAt, OperatorIdentity operatorIdentity,
18+
SourcePublisher sourcePublisher, RawUidIdentity rawUidIdentity, PrivacyBits privacyBits,
19+
Instant establishedAt) {
1920
super(version, createdAt, expiresAt);
2021
this.operatorIdentity = operatorIdentity;
2122
this.sourcePublisher = sourcePublisher;

src/main/java/com/uid2/operator/model/RefreshResponse.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
public class RefreshResponse {
66

7-
public static RefreshResponse Invalid = new RefreshResponse(Status.Invalid, IdentityResponse.OptOutIdentityResponse);
8-
public static RefreshResponse Optout = new RefreshResponse(Status.Optout, IdentityResponse.OptOutIdentityResponse);
9-
public static RefreshResponse Expired = new RefreshResponse(Status.Expired, IdentityResponse.OptOutIdentityResponse);
10-
public static RefreshResponse Deprecated = new RefreshResponse(Status.Deprecated, IdentityResponse.OptOutIdentityResponse);
11-
public static RefreshResponse NoActiveKey = new RefreshResponse(Status.NoActiveKey, IdentityResponse.OptOutIdentityResponse);
7+
public static final RefreshResponse Invalid = new RefreshResponse(Status.Invalid,
8+
IdentityResponse.OptOutIdentityResponse);
9+
public static final RefreshResponse Optout = new RefreshResponse(Status.Optout, IdentityResponse.OptOutIdentityResponse);
10+
public static final RefreshResponse Expired = new RefreshResponse(Status.Expired, IdentityResponse.OptOutIdentityResponse);
11+
public static final RefreshResponse Deprecated = new RefreshResponse(Status.Deprecated, IdentityResponse.OptOutIdentityResponse);
12+
public static final RefreshResponse NoActiveKey = new RefreshResponse(Status.NoActiveKey, IdentityResponse.OptOutIdentityResponse);
1213
private final Status status;
1314
private final IdentityResponse identityResponse;
1415
private final Duration durationSinceLastRefresh;

src/main/java/com/uid2/operator/model/RefreshTokenInput.java renamed to src/main/java/com/uid2/operator/model/RefreshTokenRequest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
import com.uid2.operator.util.PrivacyBits;
77
import com.uid2.shared.model.TokenVersion;
88

9-
public class RefreshTokenInput extends VersionedToken {
9+
// class containing enough data to create a new refresh token
10+
public class RefreshTokenRequest extends VersionedToken {
1011
public final OperatorIdentity operatorIdentity;
1112
public final SourcePublisher sourcePublisher;
1213
public final FirstLevelHashIdentity firstLevelHashIdentity;
1314
// by default, inherited from the previous refresh token's privacy bits
1415
public final PrivacyBits privacyBits;
1516

1617

17-
public RefreshTokenInput(TokenVersion version, Instant createdAt, Instant expiresAt, OperatorIdentity operatorIdentity,
18-
SourcePublisher sourcePublisher, FirstLevelHashIdentity firstLevelHashIdentity, PrivacyBits privacyBits) {
18+
public RefreshTokenRequest(TokenVersion version, Instant createdAt, Instant expiresAt, OperatorIdentity operatorIdentity,
19+
SourcePublisher sourcePublisher, FirstLevelHashIdentity firstLevelHashIdentity, PrivacyBits privacyBits) {
1920
super(version, createdAt, expiresAt);
2021
this.operatorIdentity = operatorIdentity;
2122
this.sourcePublisher = sourcePublisher;

src/main/java/com/uid2/operator/service/EncryptedTokenEncoder.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public EncryptedTokenEncoder(KeyManager keyManager) {
2525
this.keyManager = keyManager;
2626
}
2727

28-
public byte[] encodeIntoAdvertisingToken(AdvertisingTokenInput t, Instant asOf) {
28+
public byte[] encodeIntoAdvertisingToken(AdvertisingTokenRequest t, Instant asOf) {
2929
final KeysetKey masterKey = this.keyManager.getMasterKey(asOf);
3030
final KeysetKey siteEncryptionKey = this.keyManager.getActiveKeyBySiteIdWithFallback(t.sourcePublisher.siteId, Data.AdvertisingTokenSiteId, asOf);
3131

@@ -34,7 +34,7 @@ public byte[] encodeIntoAdvertisingToken(AdvertisingTokenInput t, Instant asOf)
3434
: encodeIntoAdvertisingTokenV3(t, masterKey, siteEncryptionKey); //TokenVersion.V4 also calls encodeV3() since the byte array is identical between V3 and V4
3535
}
3636

37-
private byte[] encodeIntoAdvertisingTokenV2(AdvertisingTokenInput t, KeysetKey masterKey, KeysetKey siteKey) {
37+
private byte[] encodeIntoAdvertisingTokenV2(AdvertisingTokenRequest t, KeysetKey masterKey, KeysetKey siteKey) {
3838
final Buffer b = Buffer.buffer();
3939

4040
b.appendByte((byte) t.version.rawVersion);
@@ -51,7 +51,7 @@ private byte[] encodeIntoAdvertisingTokenV2(AdvertisingTokenInput t, KeysetKey m
5151
return b.getBytes();
5252
}
5353

54-
private byte[] encodeIntoAdvertisingTokenV3(AdvertisingTokenInput t, KeysetKey masterKey, KeysetKey siteKey) {
54+
private byte[] encodeIntoAdvertisingTokenV3(AdvertisingTokenRequest t, KeysetKey masterKey, KeysetKey siteKey) {
5555
final Buffer sitePayload = Buffer.buffer(69);
5656
encodePublisherRequesterV3(sitePayload, t.sourcePublisher);
5757
sitePayload.appendInt(t.privacyBits.getAsInt());
@@ -78,7 +78,7 @@ private byte[] encodeIntoAdvertisingTokenV3(AdvertisingTokenInput t, KeysetKey m
7878
}
7979

8080
@Override
81-
public RefreshTokenInput decodeRefreshToken(String s) {
81+
public RefreshTokenRequest decodeRefreshToken(String s) {
8282
if (s != null && !s.isEmpty()) {
8383
final byte[] bytes;
8484
try {
@@ -97,7 +97,7 @@ public RefreshTokenInput decodeRefreshToken(String s) {
9797
throw new ClientInputValidationException("Invalid refresh token version");
9898
}
9999

100-
private RefreshTokenInput decodeRefreshTokenV2(Buffer b) {
100+
private RefreshTokenRequest decodeRefreshTokenV2(Buffer b) {
101101
final Instant createdAt = Instant.ofEpochMilli(b.getLong(1));
102102
//final Instant expiresAt = Instant.ofEpochMilli(b.getLong(9));
103103
final Instant validTill = Instant.ofEpochMilli(b.getLong(17));
@@ -125,7 +125,7 @@ private RefreshTokenInput decodeRefreshTokenV2(Buffer b) {
125125
final PrivacyBits privacyBits = PrivacyBits.fromInt(b2.getInt(8 + length));
126126
final long establishedMillis = b2.getLong(8 + length + 4);
127127

128-
return new RefreshTokenInput(
128+
return new RefreshTokenRequest(
129129
TokenVersion.V2, createdAt, validTill,
130130
new OperatorIdentity(0, OperatorType.Service, 0, 0),
131131
new SourcePublisher(siteId),
@@ -134,7 +134,7 @@ private RefreshTokenInput decodeRefreshTokenV2(Buffer b) {
134134
privacyBits);
135135
}
136136

137-
private RefreshTokenInput decodeRefreshTokenV3(Buffer b, byte[] bytes) {
137+
private RefreshTokenRequest decodeRefreshTokenV3(Buffer b, byte[] bytes) {
138138
final int keyId = b.getInt(2);
139139
final KeysetKey key = this.keyManager.getKey(keyId);
140140

@@ -162,14 +162,14 @@ private RefreshTokenInput decodeRefreshTokenV3(Buffer b, byte[] bytes) {
162162
throw new ClientInputValidationException("Failed to decode refreshTokenV3: Identity type mismatch");
163163
}
164164

165-
return new RefreshTokenInput(
165+
return new RefreshTokenRequest(
166166
TokenVersion.V3, createdAt, expiresAt, operatorIdentity, sourcePublisher,
167167
new FirstLevelHashIdentity(identityScope, identityType, firstLevelHash, establishedAt),
168168
privacyBits);
169169
}
170170

171171
@Override
172-
public AdvertisingTokenInput decodeAdvertisingToken(String base64AdvertisingToken) {
172+
public AdvertisingTokenRequest decodeAdvertisingToken(String base64AdvertisingToken) {
173173
//Logic and code copied from: https://github.com/IABTechLab/uid2-client-java/blob/0220ef43c1661ecf3b8f4ed2db524e2db31c06b5/src/main/java/com/uid2/client/Uid2Encryption.java#L37
174174
if (base64AdvertisingToken.length() < 4) {
175175
throw new ClientInputValidationException("Advertising token is too short");
@@ -204,7 +204,7 @@ public AdvertisingTokenInput decodeAdvertisingToken(String base64AdvertisingToke
204204
return decodeAdvertisingTokenV3orV4(b, bytes, tokenVersion);
205205
}
206206

207-
public AdvertisingTokenInput decodeAdvertisingTokenV2(Buffer b) {
207+
public AdvertisingTokenRequest decodeAdvertisingTokenV2(Buffer b) {
208208
try {
209209
final int masterKeyId = b.getInt(1);
210210

@@ -227,7 +227,7 @@ public AdvertisingTokenInput decodeAdvertisingTokenV2(Buffer b) {
227227
final PrivacyBits privacyBits = PrivacyBits.fromInt(b3.getInt(8 + length));
228228
final long establishedMillis = b3.getLong(8 + length + 4);
229229

230-
return new AdvertisingTokenInput(
230+
return new AdvertisingTokenRequest(
231231
TokenVersion.V2,
232232
Instant.ofEpochMilli(establishedMillis),
233233
Instant.ofEpochMilli(expiresMillis),
@@ -244,7 +244,7 @@ public AdvertisingTokenInput decodeAdvertisingTokenV2(Buffer b) {
244244

245245
}
246246

247-
public AdvertisingTokenInput decodeAdvertisingTokenV3orV4(Buffer b, byte[] bytes, TokenVersion tokenVersion) {
247+
public AdvertisingTokenRequest decodeAdvertisingTokenV3orV4(Buffer b, byte[] bytes, TokenVersion tokenVersion) {
248248
final int masterKeyId = b.getInt(2);
249249

250250
final byte[] masterPayloadBytes = AesGcm.decrypt(bytes, 6, this.keyManager.getKey(masterKeyId));
@@ -274,7 +274,7 @@ public AdvertisingTokenInput decodeAdvertisingTokenV3orV4(Buffer b, byte[] bytes
274274
}
275275
}
276276

277-
return new AdvertisingTokenInput(
277+
return new AdvertisingTokenRequest(
278278
tokenVersion, createdAt, expiresAt, operatorIdentity, sourcePublisher,
279279
new RawUidIdentity(identityScope, identityType, rawUid),
280280
privacyBits, establishedAt
@@ -289,7 +289,7 @@ private void recordRefreshTokenVersionCount(String siteId, TokenVersion tokenVer
289289
.register(Metrics.globalRegistry).increment();
290290
}
291291

292-
public byte[] encodeIntoRefreshToken(RefreshTokenInput t, Instant asOf) {
292+
public byte[] encodeIntoRefreshToken(RefreshTokenRequest t, Instant asOf) {
293293
final KeysetKey serviceKey = this.keyManager.getRefreshKey(asOf);
294294

295295
switch (t.version) {
@@ -304,7 +304,7 @@ public byte[] encodeIntoRefreshToken(RefreshTokenInput t, Instant asOf) {
304304
}
305305
}
306306

307-
public byte[] encodeIntoRefreshTokenV2(RefreshTokenInput t, KeysetKey serviceKey) {
307+
public byte[] encodeIntoRefreshTokenV2(RefreshTokenRequest t, KeysetKey serviceKey) {
308308
final Buffer b = Buffer.buffer();
309309
b.appendByte((byte) t.version.rawVersion);
310310
b.appendLong(t.createdAt.toEpochMilli());
@@ -318,7 +318,7 @@ public byte[] encodeIntoRefreshTokenV2(RefreshTokenInput t, KeysetKey serviceKey
318318
return b.getBytes();
319319
}
320320

321-
public byte[] encodeIntoRefreshTokenV3(RefreshTokenInput t, KeysetKey serviceKey) {
321+
public byte[] encodeIntoRefreshTokenV3(RefreshTokenRequest t, KeysetKey serviceKey) {
322322
final Buffer refreshPayload = Buffer.buffer(90);
323323
refreshPayload.appendLong(t.expiresAt.toEpochMilli());
324324
refreshPayload.appendLong(t.createdAt.toEpochMilli());
@@ -351,26 +351,26 @@ public static String bytesToBase64Token(byte[] advertisingTokenBytes, TokenVersi
351351
}
352352

353353
@Override
354-
public IdentityResponse encodeIntoIdentityResponse(AdvertisingTokenInput advertisingTokenInput, RefreshTokenInput refreshTokenInput, Instant refreshFrom, Instant asOf) {
355-
final String advertisingToken = generateAdvertisingTokenString(advertisingTokenInput, asOf);
356-
final String refreshToken = generateRefreshTokenString(refreshTokenInput, asOf);
354+
public IdentityResponse encodeIntoIdentityResponse(AdvertisingTokenRequest advertisingTokenRequest, RefreshTokenRequest refreshTokenRequest, Instant refreshFrom, Instant asOf) {
355+
final String advertisingToken = generateAdvertisingTokenString(advertisingTokenRequest, asOf);
356+
final String refreshToken = generateRefreshTokenString(refreshTokenRequest, asOf);
357357
return new IdentityResponse(
358358
advertisingToken,
359-
advertisingTokenInput.version,
359+
advertisingTokenRequest.version,
360360
refreshToken,
361-
advertisingTokenInput.expiresAt,
362-
refreshTokenInput.expiresAt,
361+
advertisingTokenRequest.expiresAt,
362+
refreshTokenRequest.expiresAt,
363363
refreshFrom
364364
);
365365
}
366366

367-
private String generateRefreshTokenString(RefreshTokenInput refreshTokenInput, Instant asOf) {
368-
return EncodingUtils.toBase64String(encodeIntoRefreshToken(refreshTokenInput, asOf));
367+
private String generateRefreshTokenString(RefreshTokenRequest refreshTokenRequest, Instant asOf) {
368+
return EncodingUtils.toBase64String(encodeIntoRefreshToken(refreshTokenRequest, asOf));
369369
}
370370

371-
private String generateAdvertisingTokenString(AdvertisingTokenInput advertisingTokenInput, Instant asOf) {
372-
final byte[] advertisingTokenBytes = encodeIntoAdvertisingToken(advertisingTokenInput, asOf);
373-
return bytesToBase64Token(advertisingTokenBytes, advertisingTokenInput.version);
371+
private String generateAdvertisingTokenString(AdvertisingTokenRequest advertisingTokenRequest, Instant asOf) {
372+
final byte[] advertisingTokenBytes = encodeIntoAdvertisingToken(advertisingTokenRequest, asOf);
373+
return bytesToBase64Token(advertisingTokenBytes, advertisingTokenRequest.version);
374374
}
375375

376376
private byte[] encryptIdentityV2(SourcePublisher sourcePublisher, FirstLevelHashIdentity firstLevelHashIdentity,
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.uid2.operator.service;
22

3-
import com.uid2.operator.model.AdvertisingTokenInput;
3+
import com.uid2.operator.model.AdvertisingTokenRequest;
44
import com.uid2.operator.model.IdentityResponse;
5-
import com.uid2.operator.model.RefreshTokenInput;
5+
import com.uid2.operator.model.RefreshTokenRequest;
66

77
import java.time.Instant;
88

99
public interface ITokenEncoder {
10-
IdentityResponse encodeIntoIdentityResponse(AdvertisingTokenInput advertisingTokenInput, RefreshTokenInput refreshTokenInput, Instant refreshFrom, Instant asOf);
10+
IdentityResponse encodeIntoIdentityResponse(AdvertisingTokenRequest advertisingTokenRequest, RefreshTokenRequest refreshTokenRequest, Instant refreshFrom, Instant asOf);
1111

12-
AdvertisingTokenInput decodeAdvertisingToken(String base64String);
12+
AdvertisingTokenRequest decodeAdvertisingToken(String base64String);
1313

14-
RefreshTokenInput decodeRefreshToken(String base64String);
14+
RefreshTokenRequest decodeRefreshToken(String base64String);
1515
}

src/main/java/com/uid2/operator/service/IUIDOperatorService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface IUIDOperatorService {
1414

1515
IdentityResponse generateIdentity(IdentityRequest request);
1616

17-
RefreshResponse refreshIdentity(RefreshTokenInput input);
17+
RefreshResponse refreshIdentity(RefreshTokenRequest input);
1818

1919
RawUidResponse mapHashedDiiIdentity(MapRequest request);
2020

src/main/java/com/uid2/operator/service/UIDOperatorService.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public IdentityResponse generateIdentity(IdentityRequest request) {
120120
}
121121

122122
@Override
123-
public RefreshResponse refreshIdentity(RefreshTokenInput input) {
123+
public RefreshResponse refreshIdentity(RefreshTokenRequest input) {
124124
// should not be possible as different scopes should be using different keys, but just in case
125125
if (input.firstLevelHashIdentity.identityScope != this.identityScope) {
126126
return RefreshResponse.Invalid;
@@ -211,7 +211,7 @@ public boolean advertisingTokenMatches(String advertisingToken, HashedDiiIdentit
211211
final FirstLevelHashIdentity firstLevelHashIdentity = getFirstLevelHashIdentity(diiIdentity, asOf);
212212
final RawUidResponse rawUidResponse = generateRawUid(firstLevelHashIdentity, asOf);
213213

214-
final AdvertisingTokenInput token = this.encoder.decodeAdvertisingToken(advertisingToken);
214+
final AdvertisingTokenRequest token = this.encoder.decodeAdvertisingToken(advertisingToken);
215215
return Arrays.equals(rawUidResponse.rawUid, token.rawUidIdentity.rawUid);
216216
}
217217

@@ -260,19 +260,19 @@ private IdentityResponse generateIdentity(SourcePublisher sourcePublisher,
260260
rawUidResponse.rawUid);
261261

262262
return this.encoder.encodeIntoIdentityResponse(
263-
this.createAdvertisingTokenInput(sourcePublisher, rawUidIdentity, nowUtc, privacyBits,
263+
this.createAdvertisingTokenRequest(sourcePublisher, rawUidIdentity, nowUtc, privacyBits,
264264
firstLevelHashIdentity.establishedAt),
265-
this.createRefreshTokenInput(sourcePublisher, firstLevelHashIdentity, nowUtc, privacyBits),
265+
this.createRefreshTokenRequest(sourcePublisher, firstLevelHashIdentity, nowUtc, privacyBits),
266266
nowUtc.plusMillis(refreshIdentityAfter.toMillis()),
267267
nowUtc
268268
);
269269
}
270270

271-
private RefreshTokenInput createRefreshTokenInput(SourcePublisher sourcePublisher,
272-
FirstLevelHashIdentity firstLevelHashIdentity,
273-
Instant now,
274-
PrivacyBits privacyBits) {
275-
return new RefreshTokenInput(
271+
private RefreshTokenRequest createRefreshTokenRequest(SourcePublisher sourcePublisher,
272+
FirstLevelHashIdentity firstLevelHashIdentity,
273+
Instant now,
274+
PrivacyBits privacyBits) {
275+
return new RefreshTokenRequest(
276276
this.refreshTokenVersion,
277277
now,
278278
now.plusMillis(refreshExpiresAfter.toMillis()),
@@ -282,8 +282,8 @@ private RefreshTokenInput createRefreshTokenInput(SourcePublisher sourcePublishe
282282
privacyBits);
283283
}
284284

285-
private AdvertisingTokenInput createAdvertisingTokenInput(SourcePublisher sourcePublisher, RawUidIdentity rawUidIdentity,
286-
Instant now, PrivacyBits privacyBits, Instant establishedAt) {
285+
private AdvertisingTokenRequest createAdvertisingTokenRequest(SourcePublisher sourcePublisher, RawUidIdentity rawUidIdentity,
286+
Instant now, PrivacyBits privacyBits, Instant establishedAt) {
287287
TokenVersion tokenVersion;
288288
if (siteIdsUsingV4Tokens.contains(sourcePublisher.siteId)) {
289289
tokenVersion = TokenVersion.V4;
@@ -297,7 +297,7 @@ private AdvertisingTokenInput createAdvertisingTokenInput(SourcePublisher source
297297
}
298298
tokenVersion = (pseudoRandomNumber <= this.advertisingTokenV4Percentage) ? TokenVersion.V4 : this.tokenVersionToUseIfNotV4;
299299
}
300-
return new AdvertisingTokenInput(tokenVersion, now, now.plusMillis(identityExpiresAfter.toMillis()), this.operatorIdentity, sourcePublisher, rawUidIdentity,
300+
return new AdvertisingTokenRequest(tokenVersion, now, now.plusMillis(identityExpiresAfter.toMillis()), this.operatorIdentity, sourcePublisher, rawUidIdentity,
301301
privacyBits, establishedAt);
302302
}
303303

0 commit comments

Comments
 (0)