All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mixin.java.sdk.algorithm.JWToken Maven / Gradle / Ivy

The newest version!
package mixin.java.sdk.algorithm;

import com.auth0.jwt.JWT;
import mixin.java.sdk.api.client.GroupInfo;
import mixin.java.sdk.entity.Keystore;
import mixin.java.sdk.util.Config;
import org.apache.commons.codec.binary.Hex;

import java.security.MessageDigest;
import java.util.Date;
import java.util.UUID;

public class JWToken {

    private static GroupInfo groupInfo;

    public static void register(GroupInfo gInfo){
        groupInfo = gInfo;
    }

    public static String getToken(long groupId,String uri, String body) {
        return getToken(groupId,"GET", uri, body);
    }

    public static String getToken(long groupId,String method, String uri, String body) {
        return getToken(groupId,method, uri, body, UUID.randomUUID().toString());
    }

    public static String getToken(long groupId,String method, String uri, String body, String jti) {
        String sig = genSig(method, uri, body);
        long ts = System.currentTimeMillis();
        Keystore keystore = groupInfo.getKeyStore(groupId);
        try{
            String token = JWT.create().withClaim("uid", keystore.getClient_id()).withClaim("sid", keystore.getSession_id()).withIssuedAt(new Date(ts)).withExpiresAt(new Date(ts + 43200000L)).withClaim("sig", sig).withClaim("jti", jti).sign(new Ed25519(keystore.getPrivate_key()));
            return token;
        }catch(Exception e){
            e.printStackTrace();
        }
        return "";
    }

    private static String genSig(String method, String uri, String body) {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            return Hex.encodeHexString(md.digest((method + uri + body).getBytes()));
        } catch (Exception var4) {
            var4.printStackTrace();
            System.exit(1);
            return null;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy