C# 클래스 Lidgren.Network.Authentication.NetSRP

Library of SRP Functions used in SRP protocol. Refs: http://srp.stanford.edu/design.html http://www.ietf.org/internet-drafts/draft-ietf-tls-srp-09.txt Required Credit to Tom Wu for the SRP algo: "This product uses the 'Secure Remote Password' cryptographic authentication system developed by Tom Wu ([email protected])." Note: Method naming follows the SRP6 naming of variables which may be a single upper case or lower case character. This allows a reader to more easily follow the protocol at the expense of non-standard method naming convension.
파일 보기 프로젝트 열기: SleeplessByte/lidgren-srp6a 1 사용 예제들

공개 프로퍼티들

프로퍼티 타입 설명
N1024Bit NetBigInteger
N1536Bit NetBigInteger
N2048Bit NetBigInteger
N3072Bit NetBigInteger
N4096Bit NetBigInteger
N6144Bit NetBigInteger
N8192Bit NetBigInteger
g1024Bit NetBigInteger
g1536Bit NetBigInteger
g2048Bit NetBigInteger
g3072Bit NetBigInteger
g4096Bit NetBigInteger
g6144Bit NetBigInteger
g8192Bit NetBigInteger

공개 메소드들

메소드 설명
CalcA ( NetBigInteger N, NetBigInteger g, NetBigInteger a ) : NetBigInteger

Returns A.

CalcB ( NetBigInteger N, NetBigInteger g, NetBigInteger b, NetBigInteger v ) : NetBigInteger

Calculates B.

CalcK ( NetBigInteger S ) : Byte[]

Returns 32 byte array using SHA256 one-way hash of value S. RijndaelManaged, for example can use max key of 32 bytes directly, so this is convienent. If you need more or less entropy, add or subtract bytes as required. Naturally, both sides need to be able to generate the same key bytes. It is recommended to just use the 32 bytes as returned from this method.

CalcM ( NetBigInteger N, NetBigInteger g, String userName, Byte salt, NetBigInteger A, NetBigInteger B, Byte K ) : Byte[]

M is client's proof of K.

CalcM2 ( NetBigInteger A, Byte M, Byte K ) : Byte[]

M2 is Server's proof of K.

CalcSClient ( NetBigInteger N, NetBigInteger g, NetBigInteger B, NetBigInteger k, NetBigInteger x, NetBigInteger a, NetBigInteger u ) : NetBigInteger

Calculates client's S.

CalcSServer ( NetBigInteger N, NetBigInteger A, NetBigInteger v, NetBigInteger u, NetBigInteger b ) : NetBigInteger

Calculates server's S.

CalcV ( NetBigInteger N, NetBigInteger g, NetBigInteger x ) : NetBigInteger

Calculates V. The password verifier.

Calck ( NetBigInteger N, NetBigInteger g ) : NetBigInteger

Calculates k.

Calcu ( NetBigInteger A, NetBigInteger B ) : NetBigInteger

Calculates u.

Calcx ( Byte salt, String userName, String password ) : NetBigInteger

Calculates x.

CreateEncryption ( Byte sessionValue ) : NetXtea

Create XTEA symmetrical encryption object from sessionValue

GenerateSalt ( ) : Byte[]

Returns cryptographically random salt bytes.

GetNandG ( Int32 keySize, NetBigInteger &g ) : NetBigInteger

Returns N and g as an out parameter based on given keySize.

Geta ( ) : NetBigInteger

Returns a - a random private value.

Getb ( ) : NetBigInteger

Returns b - a random private value.

PasswordVerifier ( String userName, String password, Byte salt, NetBigInteger N, NetBigInteger g ) : NetBigInteger

Host stores v (password verifier) in database.

비공개 메소드들

메소드 설명
XorArrays ( Byte array1, Byte array2 ) : Byte[]

XOR two byte arrays together and returns result. Both arrays must be same length and neither can be null. Resulting array will be same size as array1.

메소드 상세

CalcA() 공개 정적인 메소드

Returns A.
public static CalcA ( NetBigInteger N, NetBigInteger g, NetBigInteger a ) : NetBigInteger
N NetBigInteger
g NetBigInteger
a NetBigInteger
리턴 NetBigInteger

CalcB() 공개 정적인 메소드

Calculates B.
public static CalcB ( NetBigInteger N, NetBigInteger g, NetBigInteger b, NetBigInteger v ) : NetBigInteger
N NetBigInteger
g NetBigInteger
b NetBigInteger
v NetBigInteger
리턴 NetBigInteger

CalcK() 공개 정적인 메소드

Returns 32 byte array using SHA256 one-way hash of value S. RijndaelManaged, for example can use max key of 32 bytes directly, so this is convienent. If you need more or less entropy, add or subtract bytes as required. Naturally, both sides need to be able to generate the same key bytes. It is recommended to just use the 32 bytes as returned from this method.
public static CalcK ( NetBigInteger S ) : Byte[]
S NetBigInteger
리턴 Byte[]

CalcM() 공개 정적인 메소드

M is client's proof of K.
public static CalcM ( NetBigInteger N, NetBigInteger g, String userName, Byte salt, NetBigInteger A, NetBigInteger B, Byte K ) : Byte[]
N NetBigInteger
g NetBigInteger
userName String
salt Byte
A NetBigInteger
B NetBigInteger
K Byte
리턴 Byte[]

CalcM2() 공개 정적인 메소드

M2 is Server's proof of K.
public static CalcM2 ( NetBigInteger A, Byte M, Byte K ) : Byte[]
A NetBigInteger
M Byte
K Byte
리턴 Byte[]

CalcSClient() 공개 정적인 메소드

Calculates client's S.
public static CalcSClient ( NetBigInteger N, NetBigInteger g, NetBigInteger B, NetBigInteger k, NetBigInteger x, NetBigInteger a, NetBigInteger u ) : NetBigInteger
N NetBigInteger
g NetBigInteger
B NetBigInteger
k NetBigInteger
x NetBigInteger
a NetBigInteger
u NetBigInteger
리턴 NetBigInteger

CalcSServer() 공개 정적인 메소드

Calculates server's S.
public static CalcSServer ( NetBigInteger N, NetBigInteger A, NetBigInteger v, NetBigInteger u, NetBigInteger b ) : NetBigInteger
N NetBigInteger
A NetBigInteger
v NetBigInteger
u NetBigInteger
b NetBigInteger
리턴 NetBigInteger

CalcV() 공개 정적인 메소드

Calculates V. The password verifier.
public static CalcV ( NetBigInteger N, NetBigInteger g, NetBigInteger x ) : NetBigInteger
N NetBigInteger
g NetBigInteger
x NetBigInteger
리턴 NetBigInteger

Calck() 공개 정적인 메소드

Calculates k.
public static Calck ( NetBigInteger N, NetBigInteger g ) : NetBigInteger
N NetBigInteger
g NetBigInteger
리턴 NetBigInteger

Calcu() 공개 정적인 메소드

Calculates u.
public static Calcu ( NetBigInteger A, NetBigInteger B ) : NetBigInteger
A NetBigInteger
B NetBigInteger
리턴 NetBigInteger

Calcx() 공개 정적인 메소드

Calculates x.
public static Calcx ( Byte salt, String userName, String password ) : NetBigInteger
salt Byte
userName String
password String
리턴 NetBigInteger

CreateEncryption() 공개 정적인 메소드

Create XTEA symmetrical encryption object from sessionValue
public static CreateEncryption ( Byte sessionValue ) : NetXtea
sessionValue Byte
리턴 NetXtea

GenerateSalt() 공개 정적인 메소드

Returns cryptographically random salt bytes.
public static GenerateSalt ( ) : Byte[]
리턴 Byte[]

GetNandG() 공개 정적인 메소드

Returns N and g as an out parameter based on given keySize.
public static GetNandG ( Int32 keySize, NetBigInteger &g ) : NetBigInteger
keySize System.Int32
g NetBigInteger
리턴 NetBigInteger

Geta() 공개 정적인 메소드

Returns a - a random private value.
public static Geta ( ) : NetBigInteger
리턴 NetBigInteger

Getb() 공개 정적인 메소드

Returns b - a random private value.
public static Getb ( ) : NetBigInteger
리턴 NetBigInteger

PasswordVerifier() 공개 정적인 메소드

Host stores v (password verifier) in database.
public static PasswordVerifier ( String userName, String password, Byte salt, NetBigInteger N, NetBigInteger g ) : NetBigInteger
userName String
password String
salt Byte
N NetBigInteger
g NetBigInteger
리턴 NetBigInteger

프로퍼티 상세

N1024Bit 공개적으로 정적으로 프로퍼티

A large safe 1024 bit prime. All SRP arithmetic is done modulo N. See: http://www.ietf.org/internet-drafts/draft-ietf-tls-srp-09.txt
public static NetBigInteger N1024Bit
리턴 NetBigInteger

N1536Bit 공개적으로 정적으로 프로퍼티

A large safe 1536 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N1536Bit
리턴 NetBigInteger

N2048Bit 공개적으로 정적으로 프로퍼티

A large safe 2048 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N2048Bit
리턴 NetBigInteger

N3072Bit 공개적으로 정적으로 프로퍼티

A large safe 3072 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N3072Bit
리턴 NetBigInteger

N4096Bit 공개적으로 정적으로 프로퍼티

A large safe 4096 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N4096Bit
리턴 NetBigInteger

N6144Bit 공개적으로 정적으로 프로퍼티

A large safe 6144 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N6144Bit
리턴 NetBigInteger

N8192Bit 공개적으로 정적으로 프로퍼티

A large safe 8192 bit prime. All SRP arithmetic is done modulo N.
public static NetBigInteger N8192Bit
리턴 NetBigInteger

g1024Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 1024 bit N.
public static NetBigInteger g1024Bit
리턴 NetBigInteger

g1536Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 1536 bit N.
public static NetBigInteger g1536Bit
리턴 NetBigInteger

g2048Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 2048 bit N.
public static NetBigInteger g2048Bit
리턴 NetBigInteger

g3072Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 3072 bit N.
public static NetBigInteger g3072Bit
리턴 NetBigInteger

g4096Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 4096 bit N.
public static NetBigInteger g4096Bit
리턴 NetBigInteger

g6144Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 6144 bit N.
public static NetBigInteger g6144Bit
리턴 NetBigInteger

g8192Bit 공개적으로 정적으로 프로퍼티

Generator modulo N for 8192 bit N.
public static NetBigInteger g8192Bit
리턴 NetBigInteger