public class org.kohsuke.github.extras.authorization.JWTTokenProvider extends java.lang.Object implements org.kohsuke.github.authorization.AuthorizationProvider
{
private final java.security.PrivateKey privateKey;
private java.time.Instant validUntil;
private java.lang.String authorization;
private final java.lang.String applicationId;
public void <init>(java.lang.String, java.io.File) throws java.security.GeneralSecurityException, java.io.IOException
{
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v;
java.nio.file.Path v;
java.io.File v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v := @parameter: java.lang.String;
v := @parameter: java.io.File;
v = virtualinvoke v.<java.io.File: java.nio.file.Path toPath()>();
specialinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: void <init>(java.lang.String,java.nio.file.Path)>(v, v);
return;
}
public void <init>(java.lang.String, java.nio.file.Path) throws java.security.GeneralSecurityException, java.io.IOException
{
byte[] v;
java.nio.charset.Charset v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v, v;
java.nio.file.Path v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v := @parameter: java.lang.String;
v := @parameter: java.nio.file.Path;
v = new java.lang.String;
v = staticinvoke <java.nio.file.Files: byte[] readAllBytes(java.nio.file.Path)>(v);
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<java.lang.String: void <init>(byte[],java.nio.charset.Charset)>(v, v);
specialinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: void <init>(java.lang.String,java.lang.String)>(v, v);
return;
}
public void <init>(java.lang.String, java.lang.String) throws java.security.GeneralSecurityException
{
java.security.PrivateKey v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v, v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = staticinvoke <org.kohsuke.github.extras.authorization.JWTTokenProvider: java.security.PrivateKey getPrivateKeyFromString(java.lang.String)>(v);
specialinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: void <init>(java.lang.String,java.security.PrivateKey)>(v, v);
return;
}
public void <init>(java.lang.String, java.security.PrivateKey)
{
java.security.PrivateKey v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v;
java.time.Instant v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v := @parameter: java.lang.String;
v := @parameter: java.security.PrivateKey;
specialinvoke v.<java.lang.Object: void <init>()>();
v = <java.time.Instant: java.time.Instant MIN>;
v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.time.Instant validUntil> = v;
v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.security.PrivateKey privateKey> = v;
v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.lang.String applicationId> = v;
return;
}
public java.lang.String getEncodedAuthorization() throws java.io.IOException
{
java.lang.Throwable v;
java.lang.Object[] v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v, v, v;
boolean v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
entermonitor v;
label:
v = virtualinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: boolean isNotValid()>();
if v == 0 goto label;
v = specialinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.lang.String refreshJWT()>();
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Bearer %s", v);
v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.lang.String authorization> = v;
label:
v = v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.lang.String authorization>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
boolean isNotValid()
{
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.time.Instant v, v;
boolean v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.time.Instant validUntil>;
v = virtualinvoke v.<java.time.Instant: boolean isAfter(java.time.Instant)>(v);
return v;
}
private static java.security.PrivateKey getPrivateKeyFromString(java.lang.String) throws java.security.GeneralSecurityException
{
byte[] v;
java.security.spec.PKCS8EncodedKeySpec v;
java.util.Base64$Decoder v;
java.security.spec.InvalidKeySpecException v, v;
java.lang.IllegalArgumentException v;
java.security.KeyFactory v;
java.security.PrivateKey v;
java.lang.String v, v, v, v, v;
boolean v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(" RSA ");
if v == 0 goto label;
v = new java.security.spec.InvalidKeySpecException;
specialinvoke v.<java.security.spec.InvalidKeySpecException: void <init>(java.lang.String)>("Private key must be a PKCS#8 formatted string, to convert it from PKCS#1 use: openssl pkcs -topk -inform PEM -outform PEM -in current-key.pem -out new-key.pem -nocrypt");
throw v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String replaceAll(java.lang.String,java.lang.String)>("(?m)^--.*", "");
v = virtualinvoke v.<java.lang.String: java.lang.String replaceAll(java.lang.String,java.lang.String)>("\\s", "");
v = staticinvoke <java.security.KeyFactory: java.security.KeyFactory getInstance(java.lang.String)>("RSA");
label:
v = staticinvoke <java.util.Base64: java.util.Base64$Decoder getDecoder()>();
v = virtualinvoke v.<java.util.Base64$Decoder: byte[] decode(java.lang.String)>(v);
v = new java.security.spec.PKCS8EncodedKeySpec;
specialinvoke v.<java.security.spec.PKCS8EncodedKeySpec: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.KeyFactory: java.security.PrivateKey generatePrivate(java.security.spec.KeySpec)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.security.spec.InvalidKeySpecException;
v = virtualinvoke v.<java.lang.IllegalArgumentException: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to decode private key: \u0001");
specialinvoke v.<java.security.spec.InvalidKeySpecException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.lang.IllegalArgumentException from label to label with label;
}
private java.lang.String refreshJWT()
{
java.util.Date v, v;
io.jsonwebtoken.JwtBuilder v, v, v, v, v;
java.time.Duration v, v;
io.jsonwebtoken.SignatureAlgorithm v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.lang.String v, v;
java.time.Instant v, v, v, v;
java.security.PrivateKey v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = staticinvoke <java.time.Duration: java.time.Duration ofMinutes(long)>(8L);
v = virtualinvoke v.<java.time.Instant: java.time.Instant plus(java.time.temporal.TemporalAmount)>(v);
v = virtualinvoke v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.time.Instant getIssuedAt(java.time.Instant)>(v);
v = staticinvoke <io.jsonwebtoken.Jwts: io.jsonwebtoken.JwtBuilder builder()>();
v = staticinvoke <java.util.Date: java.util.Date 'from'(java.time.Instant)>(v);
v = interfaceinvoke v.<io.jsonwebtoken.JwtBuilder: io.jsonwebtoken.JwtBuilder setIssuedAt(java.util.Date)>(v);
v = staticinvoke <java.util.Date: java.util.Date 'from'(java.time.Instant)>(v);
v = interfaceinvoke v.<io.jsonwebtoken.JwtBuilder: io.jsonwebtoken.JwtBuilder setExpiration(java.util.Date)>(v);
v = v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.lang.String applicationId>;
v = interfaceinvoke v.<io.jsonwebtoken.JwtBuilder: io.jsonwebtoken.JwtBuilder setIssuer(java.lang.String)>(v);
v = v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.security.PrivateKey privateKey>;
v = <io.jsonwebtoken.SignatureAlgorithm: io.jsonwebtoken.SignatureAlgorithm RS256>;
v = interfaceinvoke v.<io.jsonwebtoken.JwtBuilder: io.jsonwebtoken.JwtBuilder signWith(java.security.Key,io.jsonwebtoken.SignatureAlgorithm)>(v, v);
v = staticinvoke <java.time.Duration: java.time.Duration ofMinutes(long)>(2L);
v = virtualinvoke v.<java.time.Instant: java.time.Instant minus(java.time.temporal.TemporalAmount)>(v);
v.<org.kohsuke.github.extras.authorization.JWTTokenProvider: java.time.Instant validUntil> = v;
v = interfaceinvoke v.<io.jsonwebtoken.JwtBuilder: java.lang.String compact()>();
return v;
}
java.time.Instant getIssuedAt(java.time.Instant)
{
java.time.Duration v;
org.kohsuke.github.extras.authorization.JWTTokenProvider v;
java.time.Instant v, v;
v := @this: org.kohsuke.github.extras.authorization.JWTTokenProvider;
v := @parameter: java.time.Instant;
v = staticinvoke <java.time.Duration: java.time.Duration ofMinutes(long)>(2L);
v = virtualinvoke v.<java.time.Instant: java.time.Instant minus(java.time.temporal.TemporalAmount)>(v);
return v;
}
}