42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| = NTLM Implementation for Go
 | |
| 
 | |
| == Sample Usage as NTLM Client
 | |
| 
 | |
| import "ntlm"
 | |
| import "ntlm/messages"
 | |
| 
 | |
| session = ntlm.NewClientSession(ntlm.Version1, ntlm.ConnectionlessMode)
 | |
| session.SetUserInfo("someuser","somepassword","somedomain")
 | |
| 
 | |
| negotiate := session.GenerateNegotiateMessage()
 | |
| 
 | |
| <send negotiate to server>
 | |
| 
 | |
| challenge, err := messages.ParseChallengeMessage(challengeBytes)
 | |
| session.ProcessChallengeMessage(challenge)
 | |
| 
 | |
| authenticate := session.GenerateAuthenticateMessage()
 | |
| 
 | |
| <send authenticate message to server>
 | |
| 
 | |
| == Sample Usage as NTLM Server
 | |
| 
 | |
| session = ntlm.NewServerSession(ntlm.Version1, ntlm.ConnectionlessMode)
 | |
| session.SetUserInfo("someuser","somepassword","somedomain")
 | |
| 
 | |
| challenge := session.GenerateChallengeMessage()
 | |
| 
 | |
| <send challenge to client>
 | |
| 
 | |
| <receive authentication bytes>
 | |
| 
 | |
| auth, err := messages.ParseAuthentiateMessage(authenticateBytes)
 | |
| session.ProcessAuthenticateMessage(auth)
 | |
| 
 | |
| == Generating a message MAC
 | |
| 
 | |
| Once a session is created you can generate the Mac for a message using:
 | |
| 
 | |
| message := "this is some message to sign"
 | |
| sequenceNumber := 100
 | |
| signature, err := session.Mac([]byte(message), sequenceNumber) |