github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/third/kmgRadius/MSCHAPV2/crypto_test.go (about)

     1  package MSCHAPV2
     2  
     3  import (
     4  	"testing"
     5  
     6  	. "github.com/bronze1man/kmg/kmgTest"
     7  )
     8  
     9  // rfc2759 Page 15 section 9.2 "9.2.  Hash Example"
    10  func TestGenerateAuthenticatorResponse(ot *testing.T) {
    11  	//Password:=[]byte("clientPass")
    12  	Password := []byte("clientPass") //utf16 of "clientPass"
    13  	UserName := []byte("User")
    14  	AuthenticatorChallenge := [16]byte{0x5B, 0x5D, 0x7C, 0x7D, 0x7B, 0x3F, 0x2F, 0x3E, 0x3C, 0x2C, 0x60, 0x21, 0x32, 0x26, 0x26, 0x28}
    15  	PeerChallenge := [16]byte{0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29, 0x5F, 0x2B, 0x3A, 0x33, 0x7C, 0x7E}
    16  	NTResponse := [24]byte{0x82, 0x30, 0x9E, 0xCD, 0x8D, 0x70, 0x8B, 0x5E, 0xA0, 0x8F, 0xAA, 0x39, 0x81, 0xCD, 0x83, 0x54, 0x42, 0x33, 0x11,
    17  		0x4A, 0x3D, 0x85, 0xD6, 0xDF}
    18  	AuthenticatorResponse := [20]byte{0x40, 0x7A, 0x55, 0x89, 0x11, 0x5F, 0xD0, 0xD6, 0x20, 0x9F, 0x51, 0x0F, 0xE9, 0xC0, 0x45, 0x66, 0x93,
    19  		0x2C, 0xDA, 0x56}
    20  	Challenge := []byte{0xD0, 0x2E, 0x43, 0x86, 0xBC, 0xE9, 0x12, 0x26}
    21  	out0 := challengeHash(PeerChallenge, AuthenticatorChallenge, UserName)
    22  	Equal(out0, Challenge)
    23  
    24  	//PasswordHash := []byte{0x44, 0xEB, 0xBA, 0x8D, 0x53, 0x12, 0xB8, 0xD6, 0x11, 0x47, 0x44, 0x11, 0xF5, 0x69, 0x89, 0xAE}
    25  	//out01 := md4(Password)
    26  	//Equal(out01, PasswordHash)
    27  
    28  	out1 := GenerateAuthenticatorResponse(Password, NTResponse, PeerChallenge, AuthenticatorChallenge, UserName)
    29  	Equal(out1, AuthenticatorResponse)
    30  }
    31  
    32  func TestMsCHAPV2GetSendAndRecvKey(ot *testing.T) {
    33  	Password := []byte("clientPass")
    34  	NTResponse := [24]byte{0x82, 0x30, 0x9E, 0xCD, 0x8D, 0x70, 0x8B, 0x5E, 0xA0, 0x8F, 0xAA, 0x39, 0x81, 0xCD, 0x83, 0x54, 0x42, 0x33, 0x11,
    35  		0x4A, 0x3D, 0x85, 0xD6, 0xDF}
    36  	sendKey, recvKey := MsCHAPV2GetSendAndRecvKey(Password, NTResponse)
    37  	Equal(sendKey, []byte{0x8B, 0x7C, 0xDC, 0x14, 0x9B, 0x99, 0x3A, 0x1B, 0xA1, 0x18, 0xCB, 0x15, 0x3F, 0x56, 0xDC, 0xCB})
    38  	// 官方文档上没有写recvkey的值.
    39  	Equal(recvKey, []byte{0xd5, 0xf0, 0xe9, 0x52, 0x1e, 0x3e, 0xa9, 0x58, 0x96, 0x45, 0xe8, 0x60, 0x51, 0xc8, 0x22, 0x26})
    40  }