11package org .mskcc .cbio .oncokb .domain ;
22
33import java .io .Serializable ;
4+ import java .nio .ByteBuffer ;
5+ import java .security .SecureRandom ;
6+ import java .util .zip .CRC32 ;
47
58import org .mskcc .cbio .oncokb .domain .enumeration .TokenType ;
69
10+ import io .seruco .encoding .base62 .Base62 ;
11+
712public class TokenKey implements Serializable {
813 public static int TOKEN_CHAR_LENGTH = 30 ;
914
@@ -15,6 +20,32 @@ public class TokenKey implements Serializable {
1520
1621 private String checksum ;
1722
23+ public static TokenKey generate (TokenType type ) {
24+ TokenKey tokenKey = new TokenKey ();
25+ tokenKey .setTokenType (type );
26+
27+ Base62 base62 = Base62 .createInstance ();
28+ SecureRandom secureRandom = new SecureRandom ();
29+
30+ byte [] bytes = new byte [24 ];
31+ secureRandom .nextBytes (bytes );
32+ String token = new String (base62 .encode (bytes ));
33+ tokenKey .setToken (token );
34+
35+ CRC32 crc32 = new CRC32 ();
36+ crc32 .update (bytes );
37+ ByteBuffer buffer = ByteBuffer .allocate (Long .BYTES );
38+ buffer .putLong (crc32 .getValue ());
39+ String checksum = new String (base62 .encode (buffer .array ()));
40+ tokenKey .setChecksum (checksum .substring (checksum .length () - TokenKey .CHECKSUM_CHAR_LENGTH ));
41+
42+ return tokenKey ;
43+ }
44+
45+ public boolean validateChecksum () {
46+ return false ;
47+ }
48+
1849 public TokenType getTokenType () {
1950 return tokenType ;
2051 }
0 commit comments