diff options
Diffstat (limited to 'app/src/main/java/moe/yuuta/gplicense/DeviceLimiter.java')
-rw-r--r-- | app/src/main/java/moe/yuuta/gplicense/DeviceLimiter.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/gplicense/DeviceLimiter.java b/app/src/main/java/moe/yuuta/gplicense/DeviceLimiter.java new file mode 100644 index 0000000..c2343d9 --- /dev/null +++ b/app/src/main/java/moe/yuuta/gplicense/DeviceLimiter.java @@ -0,0 +1,31 @@ +package moe.yuuta.gplicense; + +/** + * Allows the developer to limit the number of devices using a single license. + * <p> + * The LICENSED response from the server contains a user identifier unique to + * the <application, user> pair. The developer can send this identifier + * to their own server along with some device identifier (a random number + * generated and stored once per application installation, + * {@link android.telephony.TelephonyManager#getDeviceId getDeviceId}, + * {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc). + * The more sources used to identify the device, the harder it will be for an + * attacker to spoof. + * <p> + * The server can look at the <application, user, device id> tuple and + * restrict a user's application license to run on at most 10 different devices + * in a week (for example). We recommend not being too restrictive because a + * user might legitimately have multiple devices or be in the process of + * changing phones. This will catch egregious violations of multiple people + * sharing one license. + */ +public interface DeviceLimiter { + + /** + * Checks if this device is allowed to use the given user's license. + * + * @param userId the user whose license the server responded with + * @return LICENSED if the device is allowed, NOT_LICENSED if not, RETRY if an error occurs + */ + int isDeviceAllowed(String userId); +}
\ No newline at end of file |