mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	switch to use gliderlabs/ssh for builtin server (#7250)
resolves git conflicts from #3896 (credit to @belak, in case github doesn't keep original author during squash) Co-Authored-By: Matti Ranta <techknowlogick@gitea.io>
This commit is contained in:
		
							
								
								
									
										83
									
								
								vendor/github.com/gliderlabs/ssh/util.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								vendor/github.com/gliderlabs/ssh/util.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| package ssh | ||||
|  | ||||
| import ( | ||||
| 	"crypto/rand" | ||||
| 	"crypto/rsa" | ||||
| 	"encoding/binary" | ||||
|  | ||||
| 	"golang.org/x/crypto/ssh" | ||||
| ) | ||||
|  | ||||
| func generateSigner() (ssh.Signer, error) { | ||||
| 	key, err := rsa.GenerateKey(rand.Reader, 2048) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return ssh.NewSignerFromKey(key) | ||||
| } | ||||
|  | ||||
| func parsePtyRequest(s []byte) (pty Pty, ok bool) { | ||||
| 	term, s, ok := parseString(s) | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	width32, s, ok := parseUint32(s) | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	height32, _, ok := parseUint32(s) | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	pty = Pty{ | ||||
| 		Term: term, | ||||
| 		Window: Window{ | ||||
| 			Width:  int(width32), | ||||
| 			Height: int(height32), | ||||
| 		}, | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func parseWinchRequest(s []byte) (win Window, ok bool) { | ||||
| 	width32, s, ok := parseUint32(s) | ||||
| 	if width32 < 1 { | ||||
| 		ok = false | ||||
| 	} | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	height32, _, ok := parseUint32(s) | ||||
| 	if height32 < 1 { | ||||
| 		ok = false | ||||
| 	} | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	win = Window{ | ||||
| 		Width:  int(width32), | ||||
| 		Height: int(height32), | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func parseString(in []byte) (out string, rest []byte, ok bool) { | ||||
| 	if len(in) < 4 { | ||||
| 		return | ||||
| 	} | ||||
| 	length := binary.BigEndian.Uint32(in) | ||||
| 	if uint32(len(in)) < 4+length { | ||||
| 		return | ||||
| 	} | ||||
| 	out = string(in[4 : 4+length]) | ||||
| 	rest = in[4+length:] | ||||
| 	ok = true | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func parseUint32(in []byte) (uint32, []byte, bool) { | ||||
| 	if len(in) < 4 { | ||||
| 		return 0, nil, false | ||||
| 	} | ||||
| 	return binary.BigEndian.Uint32(in), in[4:], true | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 techknowlogick
					techknowlogick