public final class io.vertx.ext.auth.impl.jose.JWS extends java.lang.Object
{
private static final io.vertx.core.impl.logging.Logger LOG;
public static final java.lang.String EdDSA;
public static final java.lang.String ES256;
public static final java.lang.String ES384;
public static final java.lang.String ES512;
public static final java.lang.String PS256;
public static final java.lang.String PS384;
public static final java.lang.String PS512;
public static final java.lang.String ES256K;
public static final java.lang.String RS256;
public static final java.lang.String RS384;
public static final java.lang.String RS512;
public static final java.lang.String RS1;
public static final java.lang.String HS256;
public static final java.lang.String HS384;
public static final java.lang.String HS512;
private static final java.security.cert.CertificateFactory X509;
private final io.vertx.ext.auth.impl.jose.JWK jwk;
private final java.security.Signature signature;
private final int len;
public void <init>(io.vertx.ext.auth.impl.jose.JWK)
{
io.vertx.ext.auth.impl.jose.JWK v;
java.security.Signature v;
java.security.PublicKey v;
java.lang.RuntimeException v;
java.lang.IllegalArgumentException v;
java.security.GeneralSecurityException v;
int v;
io.vertx.ext.auth.impl.jose.JWS v;
java.lang.String v, v, v, v, v;
boolean v;
v := @this: io.vertx.ext.auth.impl.jose.JWS;
v := @parameter: io.vertx.ext.auth.impl.jose.JWK;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String use()>();
if v == null goto label;
v = "sig";
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String use()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("JWK isn\'t meant to perform JWS operations");
throw v;
label:
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String getAlgorithm()>();
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.security.Signature getSignature(java.lang.String)>(v);
v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature> = v;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String getAlgorithm()>();
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.security.PublicKey publicKey()>();
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: int getSignatureLength(java.lang.String,java.security.PublicKey)>(v, v);
v.<io.vertx.ext.auth.impl.jose.JWS: int len> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk> = v;
return;
catch java.security.NoSuchAlgorithmException from label to label with label;
catch java.security.InvalidAlgorithmParameterException from label to label with label;
}
public byte[] sign(byte[])
{
java.lang.Throwable v, v;
byte[] v, v, v, v;
java.lang.IllegalStateException v;
io.vertx.ext.auth.impl.jose.JWK v, v, v, v;
java.lang.NullPointerException v;
byte v;
int v, v;
io.vertx.ext.auth.impl.jose.JWS v;
java.lang.String v;
boolean v;
java.security.Signature v, v, v, v;
javax.crypto.Mac v;
java.security.PrivateKey v;
v := @this: io.vertx.ext.auth.impl.jose.JWS;
v := @parameter: byte[];
if v != null goto label;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>(java.lang.String)>("payload is missing");
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: javax.crypto.Mac mac()>();
if v == null goto label;
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
entermonitor v;
label:
v = virtualinvoke v.<javax.crypto.Mac: byte[] doFinal(byte[])>(v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.security.PrivateKey privateKey()>();
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String kty()>();
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("JWK doesn\'t contain secKey material");
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
entermonitor v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
virtualinvoke v.<java.security.Signature: void initSign(java.security.PrivateKey)>(v);
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
virtualinvoke v.<java.security.Signature: void update(byte[])>(v);
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
v = virtualinvoke v.<java.security.Signature: byte[] sign()>();
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 2206: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("EC");
if v == 0 goto label;
v = 0;
label:
lookupswitch(v)
{
case 0: goto label;
default: goto label;
};
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: int len>;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: byte[] toJWS(byte[],int)>(v, v);
exitmonitor v;
label:
return v;
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public boolean verify(byte[], byte[])
{
byte[] v, v, v, v;
java.lang.IllegalStateException v;
io.vertx.ext.auth.impl.jose.JWK v, v, v, v;
java.lang.NullPointerException v, v;
java.security.GeneralSecurityException v;
byte v;
io.vertx.ext.auth.impl.jose.JWS v;
boolean v, v, v, v, v;
java.security.Signature v, v, v, v, v;
javax.crypto.Mac v;
java.lang.Throwable v, v;
int v, v, v, v, v;
java.lang.String v;
java.security.PublicKey v;
java.lang.RuntimeException v;
v := @this: io.vertx.ext.auth.impl.jose.JWS;
v := @parameter: byte[];
v := @parameter: byte[];
if v != null goto label;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>(java.lang.String)>("signature is missing");
throw v;
label:
if v != null goto label;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>(java.lang.String)>("payload is missing");
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: javax.crypto.Mac mac()>();
if v == null goto label;
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
entermonitor v;
label:
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWS: byte[] sign(byte[])>(v);
v = staticinvoke <java.security.MessageDigest: boolean isEqual(byte[],byte[])>(v, v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.security.PublicKey publicKey()>();
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
v = virtualinvoke v.<io.vertx.ext.auth.impl.jose.JWK: java.lang.String kty()>();
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("JWK doesn\'t contain pubKey material");
throw v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
entermonitor v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
virtualinvoke v.<java.security.Signature: void initVerify(java.security.PublicKey)>(v);
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
virtualinvoke v.<java.security.Signature: void update(byte[])>(v);
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 2206: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("EC");
if v == 0 goto label;
v = 0;
label:
lookupswitch(v)
{
case 0: goto label;
default: goto label;
};
label:
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean isASN1(byte[])>(v);
if v != 0 goto label;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: byte[] toASN1(byte[])>(v);
label:
v = lengthof v;
v = v.<io.vertx.ext.auth.impl.jose.JWS: int len>;
if v >= v goto label;
v = v.<io.vertx.ext.auth.impl.jose.JWS: int len>;
v = newarray (byte)[v];
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
v = virtualinvoke v.<java.security.Signature: boolean verify(byte[])>(v);
exitmonitor v;
label:
return v;
label:
v = v.<io.vertx.ext.auth.impl.jose.JWS: java.security.Signature signature>;
v = virtualinvoke v.<java.security.Signature: boolean verify(byte[])>(v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.security.SignatureException from label to label with label;
catch java.security.InvalidKeyException from label to label with label;
catch java.security.SignatureException from label to label with label;
catch java.security.InvalidKeyException from label to label with label;
}
public io.vertx.ext.auth.impl.jose.JWK jwk()
{
io.vertx.ext.auth.impl.jose.JWK v;
io.vertx.ext.auth.impl.jose.JWS v;
v := @this: io.vertx.ext.auth.impl.jose.JWS;
v = v.<io.vertx.ext.auth.impl.jose.JWS: io.vertx.ext.auth.impl.jose.JWK jwk>;
return v;
}
private static java.security.Signature getSignature(java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException
{
byte v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.security.Signature v, v, v, v, v, v, v, v, v, v, v;
java.security.NoSuchAlgorithmException v;
java.security.spec.PSSParameterSpec v, v, v;
int v;
java.lang.String v;
java.security.spec.MGF1ParameterSpec v, v, v;
v := @parameter: java.lang.String;
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 81424: goto label;
case 66245349: goto label;
case 66246401: goto label;
case 66248104: goto label;
case 66770035: goto label;
case 69015912: goto label;
case 69016964: goto label;
case 69018667: goto label;
case 76404080: goto label;
case 76405132: goto label;
case 76406835: goto label;
case 78251122: goto label;
case 78252174: goto label;
case 78253877: goto label;
case 2053605894: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS256");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS384");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS512");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256");
if v == 0 goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256K");
if v == 0 goto label;
v = 4;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES384");
if v == 0 goto label;
v = 5;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES512");
if v == 0 goto label;
v = 6;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS256");
if v == 0 goto label;
v = 7;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS384");
if v == 0 goto label;
v = 8;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS512");
if v == 0 goto label;
v = 9;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS1");
if v == 0 goto label;
v = 10;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS256");
if v == 0 goto label;
v = 11;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS384");
if v == 0 goto label;
v = 12;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS512");
if v == 0 goto label;
v = 13;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("EdDSA");
if v == 0 goto label;
v = 14;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
case 9: goto label;
case 10: goto label;
case 11: goto label;
case 12: goto label;
case 13: goto label;
case 14: goto label;
default: goto label;
};
label:
return null;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA256withECDSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA384withECDSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA512withECDSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA256withRSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA384withRSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA512withRSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("SHA1withRSA");
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("RSASSA-PSS");
v = new java.security.spec.PSSParameterSpec;
v = <java.security.spec.MGF1ParameterSpec: java.security.spec.MGF1ParameterSpec SHA256>;
specialinvoke v.<java.security.spec.PSSParameterSpec: void <init>(java.lang.String,java.lang.String,java.security.spec.AlgorithmParameterSpec,int,int)>("SHA-256", "MGF1", v, 32, 1);
virtualinvoke v.<java.security.Signature: void setParameter(java.security.spec.AlgorithmParameterSpec)>(v);
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("RSASSA-PSS");
v = new java.security.spec.PSSParameterSpec;
v = <java.security.spec.MGF1ParameterSpec: java.security.spec.MGF1ParameterSpec SHA384>;
specialinvoke v.<java.security.spec.PSSParameterSpec: void <init>(java.lang.String,java.lang.String,java.security.spec.AlgorithmParameterSpec,int,int)>("SHA-384", "MGF1", v, 48, 1);
virtualinvoke v.<java.security.Signature: void setParameter(java.security.spec.AlgorithmParameterSpec)>(v);
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("RSASSA-PSS");
v = new java.security.spec.PSSParameterSpec;
v = <java.security.spec.MGF1ParameterSpec: java.security.spec.MGF1ParameterSpec SHA512>;
specialinvoke v.<java.security.spec.PSSParameterSpec: void <init>(java.lang.String,java.lang.String,java.security.spec.AlgorithmParameterSpec,int,int)>("SHA-512", "MGF1", v, 64, 1);
virtualinvoke v.<java.security.Signature: void setParameter(java.security.spec.AlgorithmParameterSpec)>(v);
return v;
label:
v = staticinvoke <java.security.Signature: java.security.Signature getInstance(java.lang.String)>("EdDSA");
return v;
label:
v = new java.security.NoSuchAlgorithmException;
specialinvoke v.<java.security.NoSuchAlgorithmException: void <init>()>();
throw v;
}
public static boolean verifySignature(java.lang.String, java.security.cert.X509Certificate, byte[], byte[]) throws java.security.InvalidKeyException, java.security.SignatureException, java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException
{
java.security.cert.X509Certificate v;
byte[] v, v;
byte v;
int v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
java.security.SignatureException v, v;
java.security.Signature v;
v := @parameter: java.lang.String;
v := @parameter: java.security.cert.X509Certificate;
v := @parameter: byte[];
v := @parameter: byte[];
if v == null goto label;
if v == null goto label;
if v == null goto label;
if v != null goto label;
label:
v = new java.security.SignatureException;
specialinvoke v.<java.security.SignatureException: void <init>(java.lang.String)>("Cannot validate signature, one of {alg, certificate, signature, data} is null");
throw v;
label:
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 66245349: goto label;
case 66246401: goto label;
case 66248104: goto label;
case 2053605894: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES384");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES512");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256K");
if v == 0 goto label;
v = 3;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean isASN1(byte[])>(v);
if v != 0 goto label;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: byte[] toASN1(byte[])>(v);
label:
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.security.Signature getSignature(java.lang.String)>(v);
if v != null goto label;
v = new java.security.SignatureException;
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[])>("Cannot get a signature for: \u0001");
specialinvoke v.<java.security.SignatureException: void <init>(java.lang.String)>(v);
throw v;
label:
virtualinvoke v.<java.security.Signature: void initVerify(java.security.cert.Certificate)>(v);
virtualinvoke v.<java.security.Signature: void update(byte[])>(v);
v = virtualinvoke v.<java.security.Signature: boolean verify(byte[])>(v);
return v;
}
private static int getSignatureLength(java.lang.String, java.security.PublicKey) throws java.security.NoSuchAlgorithmException
{
byte v;
int v, v, v, v;
java.math.BigInteger v;
java.lang.String v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.security.PublicKey v;
java.security.NoSuchAlgorithmException v;
v := @parameter: java.lang.String;
v := @parameter: java.security.PublicKey;
v = v instanceof java.security.interfaces.RSAKey;
if v == 0 goto label;
v = interfaceinvoke v.<java.security.interfaces.RSAKey: java.math.BigInteger getModulus()>();
v = virtualinvoke v.<java.math.BigInteger: int bitLength()>();
v = v + 7;
v = v >> 3;
return v;
label:
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 81424: goto label;
case 66245349: goto label;
case 66246401: goto label;
case 66248104: goto label;
case 66770035: goto label;
case 69015912: goto label;
case 69016964: goto label;
case 69018667: goto label;
case 76404080: goto label;
case 76405132: goto label;
case 76406835: goto label;
case 78251122: goto label;
case 78252174: goto label;
case 78253877: goto label;
case 2053605894: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("EdDSA");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES256K");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES384");
if v == 0 goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("ES512");
if v == 0 goto label;
v = 4;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS256");
if v == 0 goto label;
v = 5;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS1");
if v == 0 goto label;
v = 6;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS256");
if v == 0 goto label;
v = 7;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS256");
if v == 0 goto label;
v = 8;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS384");
if v == 0 goto label;
v = 9;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS384");
if v == 0 goto label;
v = 10;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS384");
if v == 0 goto label;
v = 11;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("HS512");
if v == 0 goto label;
v = 12;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("RS512");
if v == 0 goto label;
v = 13;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("PS512");
if v == 0 goto label;
v = 14;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
case 9: goto label;
case 10: goto label;
case 11: goto label;
case 12: goto label;
case 13: goto label;
case 14: goto label;
default: goto label;
};
label:
return 64;
label:
return 96;
label:
return 132;
label:
return 256;
label:
return 384;
label:
return 512;
label:
v = new java.security.NoSuchAlgorithmException;
specialinvoke v.<java.security.NoSuchAlgorithmException: void <init>()>();
throw v;
}
public static java.security.cert.X509Certificate parseX5c(java.lang.String) throws java.security.cert.CertificateException
{
io.vertx.core.impl.logging.Logger v, v;
byte[] v;
java.security.cert.CertificateFactory v;
java.security.cert.Certificate v;
java.io.ByteArrayInputStream v;
java.nio.charset.Charset v;
java.lang.String v, v, v, v;
boolean v;
v := @parameter: java.lang.String;
v = <io.vertx.ext.auth.impl.jose.JWS: java.security.cert.CertificateFactory X509>;
v = new java.io.ByteArrayInputStream;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.lang.String addBoundaries(java.lang.String,java.lang.String)>(v, "CERTIFICATE");
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.cert.CertificateFactory: java.security.cert.Certificate generateCertificate(java.io.InputStream)>(v);
v = <io.vertx.ext.auth.impl.jose.JWS: io.vertx.core.impl.logging.Logger LOG>;
v = interfaceinvoke v.<io.vertx.core.impl.logging.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.lang.String extractCRLs(java.security.cert.X509Certificate)>(v);
if v == null goto label;
v = <io.vertx.ext.auth.impl.jose.JWS: io.vertx.core.impl.logging.Logger LOG>;
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[])>("CRL Distribution Point: \u0001");
interfaceinvoke v.<io.vertx.core.impl.logging.Logger: void debug(java.lang.Object)>(v);
label:
return v;
}
public static java.security.cert.X509Certificate parseX5c(byte[]) throws java.security.cert.CertificateException
{
io.vertx.core.impl.logging.Logger v, v;
byte[] v;
java.security.cert.CertificateFactory v;
java.security.cert.Certificate v;
java.io.ByteArrayInputStream v;
java.lang.String v, v;
boolean v;
v := @parameter: byte[];
v = <io.vertx.ext.auth.impl.jose.JWS: java.security.cert.CertificateFactory X509>;
v = new java.io.ByteArrayInputStream;
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.cert.CertificateFactory: java.security.cert.Certificate generateCertificate(java.io.InputStream)>(v);
v = <io.vertx.ext.auth.impl.jose.JWS: io.vertx.core.impl.logging.Logger LOG>;
v = interfaceinvoke v.<io.vertx.core.impl.logging.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.lang.String extractCRLs(java.security.cert.X509Certificate)>(v);
if v == null goto label;
v = <io.vertx.ext.auth.impl.jose.JWS: io.vertx.core.impl.logging.Logger LOG>;
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[])>("CRL Distribution Point: \u0001");
interfaceinvoke v.<io.vertx.core.impl.logging.Logger: void debug(java.lang.Object)>(v);
label:
return v;
}
public static java.lang.String extractCRLs(java.security.cert.X509Certificate) throws java.security.cert.CertificateException
{
java.security.cert.X509Certificate v;
byte[] v, v, v;
java.nio.charset.Charset v;
int v, v;
io.vertx.ext.auth.impl.asn.ASN1$ASN v, v, v, v, v, v;
java.lang.String v;
boolean v, v;
java.security.cert.CertificateException v, v;
v := @parameter: java.security.cert.X509Certificate;
if v == null goto label;
v = virtualinvoke v.<java.security.cert.X509Certificate: byte[] getExtensionValue(java.lang.String)>("2.5.29.31");
if v == null goto label;
v = staticinvoke <io.vertx.ext.auth.impl.asn.ASN1: io.vertx.ext.auth.impl.asn.ASN1$ASN parseASN1(byte[])>(v);
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: boolean is(int)>(4);
if v != 0 goto label;
v = new java.security.cert.CertificateException;
specialinvoke v.<java.security.cert.CertificateException: void <init>(java.lang.String)>("2.5.29.31 Extension is not an ASN.1 OCTET STRING!");
throw v;
label:
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: byte[] binary(int)>(0);
v = staticinvoke <io.vertx.ext.auth.impl.asn.ASN1: io.vertx.ext.auth.impl.asn.ASN1$ASN parseASN1(byte[])>(v);
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: boolean is(int)>(16);
if v != 0 goto label;
v = new java.security.cert.CertificateException;
specialinvoke v.<java.security.cert.CertificateException: void <init>(java.lang.String)>("2.5.29.31 Extension is not an ASN.1 SEQUENCE!");
throw v;
label:
v = 0;
label:
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: int length()>();
if v >= v goto label;
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: io.vertx.ext.auth.impl.asn.ASN1$ASN object(int,int)>(v, 16);
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: io.vertx.ext.auth.impl.asn.ASN1$ASN object(int)>(0);
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: io.vertx.ext.auth.impl.asn.ASN1$ASN object(int)>(0);
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: io.vertx.ext.auth.impl.asn.ASN1$ASN object(int,int)>(0, 134);
if v == null goto label;
v = new java.lang.String;
v = virtualinvoke v.<io.vertx.ext.auth.impl.asn.ASN1$ASN: byte[] binary(int)>(0);
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset US_ASCII>;
specialinvoke v.<java.lang.String: void <init>(byte[],java.nio.charset.Charset)>(v, v);
return v;
label:
v = v + 1;
goto label;
label:
return null;
}
public static java.security.cert.X509CRL parseX5crl(java.lang.String) throws java.security.cert.CRLException
{
byte[] v;
java.io.ByteArrayInputStream v;
java.nio.charset.Charset v;
java.security.cert.CertificateFactory v;
java.lang.String v, v;
java.security.cert.CRL v;
v := @parameter: java.lang.String;
v = <io.vertx.ext.auth.impl.jose.JWS: java.security.cert.CertificateFactory X509>;
v = new java.io.ByteArrayInputStream;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: java.lang.String addBoundaries(java.lang.String,java.lang.String)>(v, "X509 CRL");
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.cert.CertificateFactory: java.security.cert.CRL generateCRL(java.io.InputStream)>(v);
return v;
}
public static java.security.cert.X509CRL parseX5crl(byte[]) throws java.security.cert.CRLException
{
byte[] v;
java.io.ByteArrayInputStream v;
java.security.cert.CertificateFactory v;
java.security.cert.CRL v;
v := @parameter: byte[];
v = <io.vertx.ext.auth.impl.jose.JWS: java.security.cert.CertificateFactory X509>;
v = new java.io.ByteArrayInputStream;
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.cert.CertificateFactory: java.security.cert.CRL generateCRL(java.io.InputStream)>(v);
return v;
}
private static boolean byteAtIndexIs(byte[], int, int)
{
byte[] v;
byte v;
int v, v, v, v;
boolean v;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
if v != null goto label;
return 0;
label:
v = lengthof v;
if v > v goto label;
return 0;
label:
v = v[v];
v = staticinvoke <java.lang.Byte: int toUnsignedInt(byte)>(v);
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static boolean byteAtIndexLte(byte[], int, int)
{
byte[] v;
byte v, v;
int v, v, v, v;
boolean v;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
if v != null goto label;
return 0;
label:
v = lengthof v;
if v > v goto label;
return 0;
label:
v = v[v];
if v > 0 goto label;
return 0;
label:
v = v[v];
v = staticinvoke <java.lang.Byte: int toUnsignedInt(byte)>(v);
if v > v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isASN1(byte[])
{
byte[] v;
byte v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v;
v := @parameter: byte[];
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean byteAtIndexIs(byte[],int,int)>(v, 0, 48);
if v != 0 goto label;
return 0;
label:
v = lengthof v;
if v >= 128 goto label;
v = 0;
goto label;
label:
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean byteAtIndexIs(byte[],int,int)>(v, 1, 129);
if v != 0 goto label;
return 0;
label:
v = 1;
label:
v = v + 1;
v = lengthof v;
v = v - v;
v = v - 2;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean byteAtIndexIs(byte[],int,int)>(v, v, v);
if v != 0 goto label;
return 0;
label:
v = v + 2;
v = 0;
label:
if v >= 2 goto label;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean byteAtIndexIs(byte[],int,int)>(v, v, 2);
if v != 0 goto label;
return 0;
label:
v = v + 1;
v = lengthof v;
v = v - v;
v = v - 2;
v = staticinvoke <io.vertx.ext.auth.impl.jose.JWS: boolean byteAtIndexLte(byte[],int,int)>(v, v, v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
v = v[v];
v = v + v;
v = v + 2;
v = v + 1;
goto label;
label:
v = lengthof v;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static byte[] toJWS(byte[], int)
{
byte[] v, v;
byte v, v, v, v, v, v, v, v, v, v, v, v;
short v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.RuntimeException v, v, v;
v := @parameter: byte[];
v := @parameter: int;
v = lengthof v;
if v < 8 goto label;
v = v[0];
if v == 48 goto label;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Invalid ECDSA signature format");
throw v;
label:
v = v[1];
if v <= 0 goto label;
v = 2;
goto label;
label:
v = v[1];
v = (int) -127;
if v != v goto label;
v = 3;
goto label;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Invalid ECDSA signature format");
throw v;
label:
v = v + 1;
v = v[v];
v = v;
label:
if v <= 0 goto label;
v = v + 2;
v = v + v;
v = v - v;
v = v[v];
if v != 0 goto label;
v = v - 1;
goto label;
label:
v = v + 2;
v = v + v;
v = v + 1;
v = v[v];
v = v;
label:
if v <= 0 goto label;
v = v + 2;
v = v + v;
v = v + 2;
v = v + v;
v = v - v;
v = v[v];
if v != 0 goto label;
v = v - 1;
goto label;
label:
v = staticinvoke <java.lang.Math: int max(int,int)>(v, v);
v = v / 2;
v = staticinvoke <java.lang.Math: int max(int,int)>(v, v);
v = v - 1;
v = v[v];
v = v & 255;
v = lengthof v;
v = v - v;
if v != v goto label;
v = v - 1;
v = v[v];
v = v & 255;
v = 2 + v;
v = v + 2;
v = v + v;
if v != v goto label;
v = v[v];
if v != 2 goto label;
v = v + 2;
v = v + v;
v = v[v];
if v == 2 goto label;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Invalid ECDSA signature format");
throw v;
label:
v = 2 * v;
v = newarray (byte)[v];
v = v + 2;
v = v + v;
v = v - v;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v + 2;
v = v + v;
v = v + 2;
v = v + v;
v = v - v;
v = 2 * v;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
return v;
}
public static byte[] toASN1(byte[])
{
byte[] v, v;
byte v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.RuntimeException v, v;
v := @parameter: byte[];
v = lengthof v;
v = v / 2;
v = v;
label:
if v <= 0 goto label;
v = v - v;
v = v[v];
if v != 0 goto label;
v = v - 1;
goto label;
label:
v = v;
v = v - v;
v = v[v];
if v >= 0 goto label;
v = v + 1;
label:
v = v;
label:
if v <= 0 goto label;
v = 2 * v;
v = v - v;
v = v[v];
if v != 0 goto label;
v = v - 1;
goto label;
label:
if v != 0 goto label;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Invalid ECDSA signature");
throw v;
label:
v = v;
v = 2 * v;
v = v - v;
v = v[v];
if v >= 0 goto label;
v = v + 1;
label:
v = 2 + v;
v = v + 2;
v = v + v;
if v <= 255 goto label;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Invalid ECDSA signature format");
throw v;
label:
if v >= 128 goto label;
v = 4 + v;
v = v + 2;
v = v + v;
v = newarray (byte)[v];
v = 1;
goto label;
label:
v = 5 + v;
v = v + 2;
v = v + v;
v = newarray (byte)[v];
v[1] = -127;
v = 2;
label:
v[0] = 48;
v = v + 1;
v[v] = v;
v = v + 1;
v[v] = 2;
v = v + 1;
v[v] = v;
v = v - v;
v = v + v;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v + v;
v = v + 1;
v[v] = 2;
v = v + 1;
v[v] = v;
v = 2 * v;
v = v - v;
v = v + v;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
return v;
}
private static java.lang.String addBoundaries(java.lang.String, java.lang.String)
{
java.lang.String v, v, v, v, v;
boolean v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
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[])>("-----BEGIN \u0001-----\n");
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[])>("\n-----END \u0001-----\n");
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(v);
if v == 0 goto label;
return v;
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, v, 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[])>("\u0001\u0001\u0001");
return v;
}
static void <clinit>()
{
io.vertx.core.impl.logging.Logger v;
java.security.cert.CertificateFactory v;
java.lang.RuntimeException v;
java.security.cert.CertificateException v;
v = staticinvoke <io.vertx.core.impl.logging.LoggerFactory: io.vertx.core.impl.logging.Logger getLogger(java.lang.Class)>(class "Lio/vertx/ext/auth/impl/jose/JWS;");
<io.vertx.ext.auth.impl.jose.JWS: io.vertx.core.impl.logging.Logger LOG> = v;
label:
v = staticinvoke <java.security.cert.CertificateFactory: java.security.cert.CertificateFactory getInstance(java.lang.String)>("X.509");
<io.vertx.ext.auth.impl.jose.JWS: java.security.cert.CertificateFactory X509> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.security.cert.CertificateException from label to label with label;
}
}