TlsDHUtils.smali
.class public Lorg/spongycastle/crypto/tls/TlsDHUtils;
.super Ljava/lang/Object;
.source "TlsDHUtils.java"
# static fields
.field public static final EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
.field static final TWO:Ljava/math/BigInteger;
.field static final draft_ffdhe2432:Lorg/spongycastle/crypto/params/DHParameters;
.field private static final draft_ffdhe2432_p:Ljava/lang/String; = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE13098533C8B3FFFFFFFFFFFFFFFF"
.field static final draft_ffdhe3072:Lorg/spongycastle/crypto/params/DHParameters;
.field private static final draft_ffdhe3072_p:Ljava/lang/String; = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B66C62E37FFFFFFFFFFFFFFFF"
.field static final draft_ffdhe4096:Lorg/spongycastle/crypto/params/DHParameters;
.field private static final draft_ffdhe4096_p:Ljava/lang/String; = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E655F6AFFFFFFFFFFFFFFFF"
.field static final draft_ffdhe6144:Lorg/spongycastle/crypto/params/DHParameters;
.field private static final draft_ffdhe6144_p:Ljava/lang/String; = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD9020BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA63BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3ACDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477A52471F7A9A96910B855322EDB6340D8A00EF092350511E30ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538CD72B03746AE77F5E62292C311562A846505DC82DB854338AE49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B045B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1A41D570D7938DAD4A40E329CD0E40E65FFFFFFFFFFFFFFFF"
.field static final draft_ffdhe8192:Lorg/spongycastle/crypto/params/DHParameters;
.field private static final draft_ffdhe8192_p:Ljava/lang/String; = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD9020BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA63BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3ACDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477A52471F7A9A96910B855322EDB6340D8A00EF092350511E30ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538CD72B03746AE77F5E62292C311562A846505DC82DB854338AE49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B045B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1A41D570D7938DAD4A40E329CCFF46AAA36AD004CF600C8381E425A31D951AE64FDB23FCEC9509D43687FEB69EDD1CC5E0B8CC3BDF64B10EF86B63142A3AB8829555B2F747C932665CB2C0F1CC01BD70229388839D2AF05E454504AC78B7582822846C0BA35C35F5C59160CC046FD8251541FC68C9C86B022BB7099876A460E7451A8A93109703FEE1C217E6C3826E52C51AA691E0E423CFC99E9E31650C1217B624816CDAD9A95F9D5B8019488D9C0A0A1FE3075A577E23183F81D4A3F2FA4571EFC8CE0BA8A4FE8B6855DFE72B0A66EDED2FBABFBE58A30FAFABE1C5D71A87E2F741EF8C1FE86FEA6BBFDE530677F0D97D11D49F7A8443D0822E506A9F4614E011E2A94838FF88CD68C8BB7C5C6424CFFFFFFFFFFFFFFFF"
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
.line 24
const-wide/16 v0, 0x2
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
.line 26
const/16 v0, 0x65
invoke-static {v0}, Lorg/spongycastle/util/Integers;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
.line 56
const-string v0, "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE13098533C8B3FFFFFFFFFFFFFFFF"
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe2432:Lorg/spongycastle/crypto/params/DHParameters;
.line 75
const-string v0, "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B66C62E37FFFFFFFFFFFFFFFF"
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe3072:Lorg/spongycastle/crypto/params/DHParameters;
.line 100
const-string v0, "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E655F6AFFFFFFFFFFFFFFFF"
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe4096:Lorg/spongycastle/crypto/params/DHParameters;
.line 135
const-string v0, "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD9020BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA63BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3ACDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477A52471F7A9A96910B855322EDB6340D8A00EF092350511E30ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538CD72B03746AE77F5E62292C311562A846505DC82DB854338AE49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B045B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1A41D570D7938DAD4A40E329CD0E40E65FFFFFFFFFFFFFFFF"
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe6144:Lorg/spongycastle/crypto/params/DHParameters;
.line 181
const-string v0, "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF97D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD65612433F51F5F066ED0856365553DED1AF3B557135E7F57C935984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE73530ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FBB96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB190B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F619172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD733BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C023861B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91CAEFE130985139270B4130C93BC437944F4FD4452E2D74DD364F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0DABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB7930E9E4E58857B6AC7D5F42D69F6D187763CF1D5503400487F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832A907600A918130C46DC778F971AD0038092999A333CB8B7A1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD9020BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA63BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3ACDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477A52471F7A9A96910B855322EDB6340D8A00EF092350511E30ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538CD72B03746AE77F5E62292C311562A846505DC82DB854338AE49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B045B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1A41D570D7938DAD4A40E329CCFF46AAA36AD004CF600C8381E425A31D951AE64FDB23FCEC9509D43687FEB69EDD1CC5E0B8CC3BDF64B10EF86B63142A3AB8829555B2F747C932665CB2C0F1CC01BD70229388839D2AF05E454504AC78B7582822846C0BA35C35F5C59160CC046FD8251541FC68C9C86B022BB7099876A460E7451A8A93109703FEE1C217E6C3826E52C51AA691E0E423CFC99E9E31650C1217B624816CDAD9A95F9D5B8019488D9C0A0A1FE3075A577E23183F81D4A3F2FA4571EFC8CE0BA8A4FE8B6855DFE72B0A66EDED2FBABFBE58A30FAFABE1C5D71A87E2F741EF8C1FE86FEA6BBFDE530677F0D97D11D49F7A8443D0822E506A9F4614E011E2A94838FF88CD68C8BB7C5C6424CFFFFFFFFFFFFFFFF"
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe8192:Lorg/spongycastle/crypto/params/DHParameters;
return-void
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 22
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static addNegotiatedDHEGroupsClientExtension(Ljava/util/Hashtable;[S)V
.registers 4
.prologue
.line 187
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->createNegotiatedDHEGroupsClientExtension([S)[B
move-result-object v1
invoke-virtual {p0, v0, v1}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 188
return-void
.end method
.method public static addNegotiatedDHEGroupsServerExtension(Ljava/util/Hashtable;S)V
.registers 4
.prologue
.line 193
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->createNegotiatedDHEGroupsServerExtension(S)[B
move-result-object v1
invoke-virtual {p0, v0, v1}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 194
return-void
.end method
.method public static areCompatibleParameters(Lorg/spongycastle/crypto/params/DHParameters;Lorg/spongycastle/crypto/params/DHParameters;)Z
.registers 4
.prologue
.line 420
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHParameters;->getP()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {p1}, Lorg/spongycastle/crypto/params/DHParameters;->getP()Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1e
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHParameters;->getG()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {p1}, Lorg/spongycastle/crypto/params/DHParameters;->getG()Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1e
const/4 v0, 0x1
:goto_1d
return v0
:cond_1e
const/4 v0, 0x0
goto :goto_1d
.end method
.method public static calculateDHBasicAgreement(Lorg/spongycastle/crypto/params/DHPublicKeyParameters;Lorg/spongycastle/crypto/params/DHPrivateKeyParameters;)[B
.registers 3
.prologue
.line 425
new-instance v0, Lorg/spongycastle/crypto/agreement/DHBasicAgreement;
invoke-direct {v0}, Lorg/spongycastle/crypto/agreement/DHBasicAgreement;-><init>()V
.line 426
invoke-virtual {v0, p1}, Lorg/spongycastle/crypto/agreement/DHBasicAgreement;->init(Lorg/spongycastle/crypto/CipherParameters;)V
.line 427
invoke-virtual {v0, p0}, Lorg/spongycastle/crypto/agreement/DHBasicAgreement;->calculateAgreement(Lorg/spongycastle/crypto/CipherParameters;)Ljava/math/BigInteger;
move-result-object v0
.line 433
invoke-static {v0}, Lorg/spongycastle/util/BigIntegers;->asUnsignedByteArray(Ljava/math/BigInteger;)[B
move-result-object v0
return-object v0
.end method
.method public static containsDHECipherSuites([I)Z
.registers 4
.prologue
const/4 v1, 0x0
.line 285
move v0, v1
:goto_2
array-length v2, p0
if-ge v0, v2, :cond_e
.line 287
aget v2, p0, v0
invoke-static {v2}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->isDHECipherSuite(I)Z
move-result v2
if-eqz v2, :cond_f
.line 289
const/4 v1, 0x1
.line 292
:cond_e
return v1
.line 285
:cond_f
add-int/lit8 v0, v0, 0x1
goto :goto_2
.end method
.method public static createNegotiatedDHEGroupsClientExtension([S)[B
.registers 3
.prologue
.line 210
if-eqz p0, :cond_a
array-length v0, p0
if-lez v0, :cond_a
array-length v0, p0
const/16 v1, 0xff
if-le v0, v1, :cond_12
.line 212
:cond_a
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x50
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 215
:cond_12
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsUtils;->encodeUint8ArrayWithUint8Length([S)[B
move-result-object v0
return-object v0
.end method
.method public static createNegotiatedDHEGroupsServerExtension(S)[B
.registers 3
.prologue
.line 220
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsUtils;->checkUint8(S)V
.line 222
const/4 v0, 0x1
new-array v0, v0, [B
.line 223
const/4 v1, 0x0
invoke-static {p0, v0, v1}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeUint8(S[BI)V
.line 224
return-object v0
.end method
.method private static fromHex(Ljava/lang/String;)Ljava/math/BigInteger;
.registers 4
.prologue
.line 33
new-instance v0, Ljava/math/BigInteger;
const/4 v1, 0x1
invoke-static {p0}, Lorg/spongycastle/util/encoders/Hex;->decode(Ljava/lang/String;)[B
move-result-object v2
invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(I[B)V
return-object v0
.end method
.method private static fromSafeP(Ljava/lang/String;)Lorg/spongycastle/crypto/params/DHParameters;
.registers 5
.prologue
.line 38
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->fromHex(Ljava/lang/String;)Ljava/math/BigInteger;
move-result-object v0
const/4 v1, 0x1
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v1
.line 39
new-instance v2, Lorg/spongycastle/crypto/params/DHParameters;
sget-object v3, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
invoke-direct {v2, v0, v3, v1}, Lorg/spongycastle/crypto/params/DHParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
return-object v2
.end method
.method public static generateDHKeyPair(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;)Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;
.registers 4
.prologue
.line 438
new-instance v0, Lorg/spongycastle/crypto/generators/DHBasicKeyPairGenerator;
invoke-direct {v0}, Lorg/spongycastle/crypto/generators/DHBasicKeyPairGenerator;-><init>()V
.line 439
new-instance v1, Lorg/spongycastle/crypto/params/DHKeyGenerationParameters;
invoke-direct {v1, p0, p1}, Lorg/spongycastle/crypto/params/DHKeyGenerationParameters;-><init>(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;)V
invoke-virtual {v0, v1}, Lorg/spongycastle/crypto/generators/DHBasicKeyPairGenerator;->init(Lorg/spongycastle/crypto/KeyGenerationParameters;)V
.line 440
invoke-virtual {v0}, Lorg/spongycastle/crypto/generators/DHBasicKeyPairGenerator;->generateKeyPair()Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;
move-result-object v0
return-object v0
.end method
.method public static generateEphemeralClientKeyExchange(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;Ljava/io/OutputStream;)Lorg/spongycastle/crypto/params/DHPrivateKeyParameters;
.registers 5
.prologue
.line 446
invoke-static {p0, p1}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->generateDHKeyPair(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;)Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;
move-result-object v1
.line 448
invoke-virtual {v1}, Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;->getPublic()Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
move-result-object v0
check-cast v0, Lorg/spongycastle/crypto/params/DHPublicKeyParameters;
.line 449
invoke-virtual {v0}, Lorg/spongycastle/crypto/params/DHPublicKeyParameters;->getY()Ljava/math/BigInteger;
move-result-object v0
invoke-static {v0, p2}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->writeDHParameter(Ljava/math/BigInteger;Ljava/io/OutputStream;)V
.line 451
invoke-virtual {v1}, Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;->getPrivate()Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
move-result-object v0
check-cast v0, Lorg/spongycastle/crypto/params/DHPrivateKeyParameters;
return-object v0
.end method
.method public static generateEphemeralServerKeyExchange(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;Ljava/io/OutputStream;)Lorg/spongycastle/crypto/params/DHPrivateKeyParameters;
.registers 6
.prologue
.line 457
invoke-static {p0, p1}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->generateDHKeyPair(Ljava/security/SecureRandom;Lorg/spongycastle/crypto/params/DHParameters;)Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;
move-result-object v1
.line 459
invoke-virtual {v1}, Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;->getPublic()Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
move-result-object v0
check-cast v0, Lorg/spongycastle/crypto/params/DHPublicKeyParameters;
.line 460
new-instance v2, Lorg/spongycastle/crypto/tls/ServerDHParams;
invoke-direct {v2, v0}, Lorg/spongycastle/crypto/tls/ServerDHParams;-><init>(Lorg/spongycastle/crypto/params/DHPublicKeyParameters;)V
invoke-virtual {v2, p2}, Lorg/spongycastle/crypto/tls/ServerDHParams;->encode(Ljava/io/OutputStream;)V
.line 462
invoke-virtual {v1}, Lorg/spongycastle/crypto/AsymmetricCipherKeyPair;->getPrivate()Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
move-result-object v0
check-cast v0, Lorg/spongycastle/crypto/params/DHPrivateKeyParameters;
return-object v0
.end method
.method public static getNegotiatedDHEGroupsClientExtension(Ljava/util/Hashtable;)[S
.registers 2
.prologue
.line 198
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
invoke-static {p0, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->getExtensionData(Ljava/util/Hashtable;Ljava/lang/Integer;)[B
move-result-object v0
.line 199
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->readNegotiatedDHEGroupsClientExtension([B)[S
move-result-object v0
goto :goto_9
.end method
.method public static getNegotiatedDHEGroupsServerExtension(Ljava/util/Hashtable;)S
.registers 2
.prologue
.line 204
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->EXT_negotiated_ff_dhe_groups:Ljava/lang/Integer;
invoke-static {p0, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->getExtensionData(Ljava/util/Hashtable;Ljava/lang/Integer;)[B
move-result-object v0
.line 205
if-nez v0, :cond_a
const/4 v0, -0x1
:goto_9
return v0
:cond_a
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->readNegotiatedDHEGroupsServerExtension([B)S
move-result v0
goto :goto_9
.end method
.method public static getParametersForDHEGroup(S)Lorg/spongycastle/crypto/params/DHParameters;
.registers 2
.prologue
.line 266
packed-switch p0, :pswitch_data_14
.line 279
const/4 v0, 0x0
:goto_4
return-object v0
.line 269
:pswitch_5
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe2432:Lorg/spongycastle/crypto/params/DHParameters;
goto :goto_4
.line 271
:pswitch_8
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe3072:Lorg/spongycastle/crypto/params/DHParameters;
goto :goto_4
.line 273
:pswitch_b
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe4096:Lorg/spongycastle/crypto/params/DHParameters;
goto :goto_4
.line 275
:pswitch_e
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe6144:Lorg/spongycastle/crypto/params/DHParameters;
goto :goto_4
.line 277
:pswitch_11
sget-object v0, Lorg/spongycastle/crypto/tls/TlsDHUtils;->draft_ffdhe8192:Lorg/spongycastle/crypto/params/DHParameters;
goto :goto_4
.line 266
:pswitch_data_14
.packed-switch 0x0
:pswitch_5
:pswitch_8
:pswitch_b
:pswitch_e
:pswitch_11
.end packed-switch
.end method
.method public static isDHECipherSuite(I)Z
.registers 2
.prologue
.line 297
sparse-switch p0, :sswitch_data_8
.line 414
const/4 v0, 0x0
:goto_4
return v0
.line 411
:sswitch_5
const/4 v0, 0x1
goto :goto_4
.line 297
nop
:sswitch_data_8
.sparse-switch
0x11 -> :sswitch_5
0x12 -> :sswitch_5
0x13 -> :sswitch_5
0x14 -> :sswitch_5
0x15 -> :sswitch_5
0x16 -> :sswitch_5
0x2d -> :sswitch_5
0x32 -> :sswitch_5
0x33 -> :sswitch_5
0x38 -> :sswitch_5
0x39 -> :sswitch_5
0x40 -> :sswitch_5
0x44 -> :sswitch_5
0x45 -> :sswitch_5
0x67 -> :sswitch_5
0x6a -> :sswitch_5
0x6b -> :sswitch_5
0x87 -> :sswitch_5
0x88 -> :sswitch_5
0x8e -> :sswitch_5
0x8f -> :sswitch_5
0x90 -> :sswitch_5
0x91 -> :sswitch_5
0x99 -> :sswitch_5
0x9a -> :sswitch_5
0x9e -> :sswitch_5
0x9f -> :sswitch_5
0xa2 -> :sswitch_5
0xa3 -> :sswitch_5
0xaa -> :sswitch_5
0xab -> :sswitch_5
0xb2 -> :sswitch_5
0xb3 -> :sswitch_5
0xb4 -> :sswitch_5
0xb5 -> :sswitch_5
0xbd -> :sswitch_5
0xbe -> :sswitch_5
0xc3 -> :sswitch_5
0xc4 -> :sswitch_5
0xc07c -> :sswitch_5
0xc07d -> :sswitch_5
0xc080 -> :sswitch_5
0xc081 -> :sswitch_5
0xc090 -> :sswitch_5
0xc091 -> :sswitch_5
0xc096 -> :sswitch_5
0xc097 -> :sswitch_5
0xc09e -> :sswitch_5
0xc09f -> :sswitch_5
0xc0a2 -> :sswitch_5
0xc0a3 -> :sswitch_5
0xc0a6 -> :sswitch_5
0xc0a7 -> :sswitch_5
0xc0aa -> :sswitch_5
0xc0ab -> :sswitch_5
0xcc15 -> :sswitch_5
0xe41c -> :sswitch_5
0xe41d -> :sswitch_5
0xe41e -> :sswitch_5
0xe41f -> :sswitch_5
.end sparse-switch
.end method
.method public static readDHParameter(Ljava/io/InputStream;)Ljava/math/BigInteger;
.registers 4
.prologue
.line 499
new-instance v0, Ljava/math/BigInteger;
const/4 v1, 0x1
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readOpaque16(Ljava/io/InputStream;)[B
move-result-object v2
invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(I[B)V
return-object v0
.end method
.method public static readNegotiatedDHEGroupsClientExtension([B)[S
.registers 3
.prologue
.line 229
if-nez p0, :cond_a
.line 231
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'extensionData\' cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 234
:cond_a
new-instance v0, Ljava/io/ByteArrayInputStream;
invoke-direct {v0, p0}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 236
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint8(Ljava/io/InputStream;)S
move-result v1
.line 237
if-gtz v1, :cond_1d
.line 239
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x32
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 242
:cond_1d
invoke-static {v1, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint8Array(ILjava/io/InputStream;)[S
move-result-object v1
.line 244
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsProtocol;->assertEmpty(Ljava/io/ByteArrayInputStream;)V
.line 246
return-object v1
.end method
.method public static readNegotiatedDHEGroupsServerExtension([B)S
.registers 3
.prologue
.line 251
if-nez p0, :cond_a
.line 253
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'extensionData\' cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 256
:cond_a
array-length v0, p0
const/4 v1, 0x1
if-eq v0, v1, :cond_16
.line 258
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x32
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 261
:cond_16
const/4 v0, 0x0
invoke-static {p0, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint8([BI)S
move-result v0
return v0
.end method
.method public static validateDHParameters(Lorg/spongycastle/crypto/params/DHParameters;)Lorg/spongycastle/crypto/params/DHParameters;
.registers 5
.prologue
const/16 v3, 0x2f
.line 467
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHParameters;->getP()Ljava/math/BigInteger;
move-result-object v0
.line 468
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHParameters;->getG()Ljava/math/BigInteger;
move-result-object v1
.line 470
const/4 v2, 0x2
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->isProbablePrime(I)Z
move-result v2
if-nez v2, :cond_17
.line 472
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, v3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 474
:cond_17
sget-object v2, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-ltz v2, :cond_2b
sget-object v2, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-lez v0, :cond_31
.line 476
:cond_2b
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, v3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 479
:cond_31
return-object p0
.end method
.method public static validateDHPublicKey(Lorg/spongycastle/crypto/params/DHPublicKeyParameters;)Lorg/spongycastle/crypto/params/DHPublicKeyParameters;
.registers 4
.prologue
.line 484
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHPublicKeyParameters;->getParameters()Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsDHUtils;->validateDHParameters(Lorg/spongycastle/crypto/params/DHParameters;)Lorg/spongycastle/crypto/params/DHParameters;
move-result-object v0
.line 486
invoke-virtual {p0}, Lorg/spongycastle/crypto/params/DHPublicKeyParameters;->getY()Ljava/math/BigInteger;
move-result-object v1
.line 487
sget-object v2, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-ltz v2, :cond_24
invoke-virtual {v0}, Lorg/spongycastle/crypto/params/DHParameters;->getP()Ljava/math/BigInteger;
move-result-object v0
sget-object v2, Lorg/spongycastle/crypto/tls/TlsDHUtils;->TWO:Ljava/math/BigInteger;
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-lez v0, :cond_2c
.line 489
:cond_24
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x2f
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 494
:cond_2c
return-object p0
.end method
.method public static writeDHParameter(Ljava/math/BigInteger;Ljava/io/OutputStream;)V
.registers 3
.prologue
.line 504
invoke-static {p0}, Lorg/spongycastle/util/BigIntegers;->asUnsignedByteArray(Ljava/math/BigInteger;)[B
move-result-object v0
invoke-static {v0, p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeOpaque16([BLjava/io/OutputStream;)V
.line 505
return-void
.end method