mirror of
				https://gogs.blitter.com/RLabs/xs
				synced 2024-08-14 10:26:42 +00:00 
			
		
		
		
	Resync w/cryptmt, wanderer repos
Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
		
							parent
							
								
									f5c155de48
								
							
						
					
					
						commit
						399f59ed73
					
				
					 7 changed files with 92 additions and 85 deletions
				
			
		
							
								
								
									
										24
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								go.mod
									
										
									
									
									
								
							|  | @ -3,28 +3,28 @@ module blitter.com/go/xs | ||||||
| go 1.12 | go 1.12 | ||||||
| 
 | 
 | ||||||
| require ( | require ( | ||||||
| 	blitter.com/go/cryptmt v1.0.0 | 	blitter.com/go/cryptmt v1.0.1 | ||||||
| 	blitter.com/go/goutmp v1.0.2 | 	blitter.com/go/goutmp v1.0.2 | ||||||
| 	blitter.com/go/herradurakex v1.0.0 | 	blitter.com/go/herradurakex v1.0.0 | ||||||
| 	blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 | 	blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 | ||||||
| 	blitter.com/go/mtwist v1.0.1 // indirect | 	blitter.com/go/mtwist v1.0.1 | ||||||
| 	blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae | 	blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae | ||||||
| 	blitter.com/go/wanderer v0.8.1 | 	blitter.com/go/wanderer v0.8.2 | ||||||
| 	github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f | 	github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f | ||||||
| 	github.com/klauspost/cpuid v1.2.2 // indirect | 	github.com/klauspost/cpuid v1.2.2 | ||||||
| 	github.com/klauspost/reedsolomon v1.9.3 // indirect | 	github.com/klauspost/reedsolomon v1.9.3 | ||||||
| 	github.com/kr/pty v1.1.4 | 	github.com/kr/pty v1.1.4 | ||||||
| 	github.com/mattn/go-isatty v0.0.7 | 	github.com/mattn/go-isatty v0.0.7 | ||||||
| 	github.com/pkg/errors v0.8.1 // indirect | 	github.com/pkg/errors v0.8.1 | ||||||
| 	github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect | 	github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 | ||||||
| 	github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect | 	github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b | ||||||
| 	github.com/tjfoc/gmsm v1.0.1 // indirect | 	github.com/tjfoc/gmsm v1.0.1 | ||||||
| 	github.com/xtaci/kcp-go v5.4.19+incompatible | 	github.com/xtaci/kcp-go v5.4.19+incompatible | ||||||
| 	github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect | 	github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect | ||||||
| 	golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d | 	golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d | ||||||
| 	golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect | 	golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 | ||||||
| 	golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 | 	golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 | ||||||
| 	gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect | 	gopkg.in/hlandau/easymetric.v1 v1.0.0 | ||||||
| 	gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect | 	gopkg.in/hlandau/measurable.v1 v1.0.1 | ||||||
| 	gopkg.in/hlandau/passlib.v1 v1.0.10 | 	gopkg.in/hlandau/passlib.v1 v1.0.10 | ||||||
| ) | ) | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								go.sum
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
										
									
									
									
								
							|  | @ -2,6 +2,8 @@ blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c h1:LcnFFg6MCIJHf26P7e | ||||||
| blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= | blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= | ||||||
| blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= | blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= | ||||||
| blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= | blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= | ||||||
|  | blitter.com/go/cryptmt v1.0.1 h1:NAi4FrZqo52bhPJopYw1jbausj1NnHEWELaINC60Nk0= | ||||||
|  | blitter.com/go/cryptmt v1.0.1/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= | ||||||
| blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= | blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= | ||||||
| blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= | blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= | ||||||
| blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= | blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= | ||||||
|  | @ -16,6 +18,8 @@ blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae h1:YBBaCcdYRrI1btsmcMT | ||||||
| blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae/go.mod h1:ywoxfDBqInPsqtnxYsmS4SYMJ5D/kNcrFgpvI+Xcun0= | blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae/go.mod h1:ywoxfDBqInPsqtnxYsmS4SYMJ5D/kNcrFgpvI+Xcun0= | ||||||
| blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= | blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= | ||||||
| blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= | blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= | ||||||
|  | blitter.com/go/wanderer v0.8.2 h1:fzwRn60RDDxy4GEYxSyfA4gXkkZb33WQRk/Fv5ugPAI= | ||||||
|  | blitter.com/go/wanderer v0.8.2/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= | ||||||
| git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= | git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= | ||||||
| git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= | git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= | ||||||
| git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= | git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								vendor/blitter.com/go/cryptmt/cryptmt.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/blitter.com/go/cryptmt/cryptmt.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -20,21 +20,21 @@ type Cipher struct { | ||||||
| 	m     *mtwist.MT19937_64 | 	m     *mtwist.MT19937_64 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Cipher) yield8() (r byte) { | func (c *Cipher) yield() (r byte) { | ||||||
| 	c.accum = c.accum * (c.m.Int63() | 1) | 	c.accum = c.accum * (c.m.Int63() | 1) | ||||||
| 	r = byte(c.accum>>56) & 0xFF | 	r = byte(c.accum>>56) & 0xFF | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewCipher creates and returns a Cipher. The key argument should be the | // New creates and returns a Cipher. The key argument should be the | ||||||
| // CryptMT key, 64 bytes. | // CryptMT key, 64 bytes. | ||||||
| func NewCipher(key []byte) (c *Cipher) { | func New(key []byte) (c *Cipher) { | ||||||
| 	c = &Cipher{m: mtwist.New()} | 	c = &Cipher{m: mtwist.New()} | ||||||
| 	c.m.SeedFullState(key) | 	c.m.SeedFullState(key) | ||||||
| 	c.accum = 1 | 	c.accum = 1 | ||||||
| 	// from paper, discard first 64 bytes of output | 	// from paper, discard first 64 bytes of output | ||||||
| 	for idx := 0; idx < 64; idx++ { | 	for idx := 0; idx < 64; idx++ { | ||||||
| 		_ = c.yield8() | 		_ = c.yield() | ||||||
| 	} | 	} | ||||||
| 	return c | 	return c | ||||||
| } | } | ||||||
|  | @ -55,6 +55,6 @@ func (c *Cipher) XORKeyStream(dst, src []byte) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for i, b := range src { | 	for i, b := range src { | ||||||
| 		dst[i] = b ^ c.yield8() | 		dst[i] = b ^ c.yield() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								vendor/blitter.com/go/goutmp/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/blitter.com/go/goutmp/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -10,8 +10,8 @@ Golang bindings for basic login/utmp accounting | ||||||
| 
 | 
 | ||||||
| type UtmpEntry struct{ ... } | type UtmpEntry struct{ ... } | ||||||
| 
 | 
 | ||||||
| func Put_lastlog_entry(app string, usr string, host string) | func Put_lastlog_entry(app, usr, ptsname, host string) | ||||||
| func Unput_utmp(entry UtmpEntry) | func Unput_utmp(entry UtmpEntry) | ||||||
| func Put_utmp(user string, host string) UtmpEntry | func Put_utmp(user, ptsname, host string) UtmpEntry | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										113
									
								
								vendor/blitter.com/go/wanderer/wanderer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										113
									
								
								vendor/blitter.com/go/wanderer/wanderer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,4 +1,4 @@ | ||||||
| // WANDERER - a crypto doodle that appears to give adequate | // Package wanderer - a crypto doodle that appears to give adequate | ||||||
| // protection to data in a stream cipher context | // protection to data in a stream cipher context | ||||||
| // | // | ||||||
| // Properties visualized using https://github.com/circulosmeos/circle | // Properties visualized using https://github.com/circulosmeos/circle | ||||||
|  | @ -23,6 +23,20 @@ const ( | ||||||
| 	sboxCount = keylen / 8 | 	sboxCount = keylen / 8 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | type Cipher struct { | ||||||
|  | 	prng   *mtwist.MT19937_64 | ||||||
|  | 	r      io.Reader | ||||||
|  | 	w      io.Writer | ||||||
|  | 	k      []byte | ||||||
|  | 	kidx   uint | ||||||
|  | 	sboxen [][]byte | ||||||
|  | 	sw     int | ||||||
|  | 	sh     int | ||||||
|  | 	sctr   int // TODO: used to count down to re-keying & sbox regen | ||||||
|  | 	mode   int | ||||||
|  | 	n      byte | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Given input byte x (treated as 2-bit dirs), | // Given input byte x (treated as 2-bit dirs), | ||||||
| // 'walk' box applying XOR of each position (E/S/W/N) given box | // 'walk' box applying XOR of each position (E/S/W/N) given box | ||||||
| // dimensions w,h | // dimensions w,h | ||||||
|  | @ -74,53 +88,7 @@ func (c *Cipher) genSBoxen(n uint) { | ||||||
| 	//fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) | 	//fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Mutate the session key (intended to be called as encryption | func New(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { | ||||||
| // proceeds), so that the 'walk path' through sboxes also does so. |  | ||||||
| func (c *Cipher) keyUpdate(perturb byte) { |  | ||||||
| 	c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] |  | ||||||
| 	c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) |  | ||||||
| 	c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // slow - perturb a single octet of a single sbox for each octet |  | ||||||
| // (CV = ~8.725% over 700 MiB of 0-byte pt) |  | ||||||
| func (c *Cipher) sboxUpdateA(perturb byte) { |  | ||||||
| 	c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= |  | ||||||
| 		perturb |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // slower - perturb a single sbox for each octet |  | ||||||
| // (CV = ~?% over 700 MiB of 0-byte pt) |  | ||||||
| func (c *Cipher) sboxUpdateB(perturb byte) { |  | ||||||
| 	lim := c.sw * c.sh |  | ||||||
| 	for idx := 0; idx < lim; idx++ { |  | ||||||
| 		c.sboxen[perturb%sboxCount][idx] ^= perturb |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // slowest -- full sbox re-gen after each octet |  | ||||||
| // (but lowest CV, ~0.05% over 700MiB of 0-byte pt) |  | ||||||
| func (c *Cipher) sboxUpdateC(perturb byte) { |  | ||||||
| 	c.genSBoxen(sboxCount) |  | ||||||
| 	//c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= |  | ||||||
| 	//	perturb |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| type Cipher struct { |  | ||||||
| 	prng   *mtwist.MT19937_64 |  | ||||||
| 	r      io.Reader |  | ||||||
| 	w      io.Writer |  | ||||||
| 	k      []byte |  | ||||||
| 	kidx   uint |  | ||||||
| 	sboxen [][]byte |  | ||||||
| 	sw     int |  | ||||||
| 	sh     int |  | ||||||
| 	sctr   int // TODO: used to count down to re-keying & sbox regen |  | ||||||
| 	mode   int |  | ||||||
| 	n      byte |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func NewCodec(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { |  | ||||||
| 	c = &Cipher{} | 	c = &Cipher{} | ||||||
| 	c.prng = mtwist.New() | 	c.prng = mtwist.New() | ||||||
| 	if len(key) == 0 { | 	if len(key) == 0 { | ||||||
|  | @ -163,20 +131,55 @@ func (c *Cipher) Write(p []byte) (n int, err error) { | ||||||
| 	return n, err | 	return n, err | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Cipher) yield(pt byte) (ct byte) { | // Mutate the session key (intended to be called as encryption | ||||||
| 	ct = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, pt) | // proceeds), so that the 'walk path' through sboxes also does so. | ||||||
|  | func (c *Cipher) keyUpdate(perturb byte) { | ||||||
|  | 	c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] | ||||||
|  | 	c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) | ||||||
|  | 	c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) | ||||||
|  | 	//for idx := 0; idx < len(c.k); idx++ { | ||||||
|  | 	//	c.k[idx] = c.k[idx] ^ byte(c.prng.Int63() % 256) | ||||||
|  | 	//} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // slow - perturb a single octet of a single sbox for each octet | ||||||
|  | // (CV = ~8.725% over 700 MiB of 0-byte pt) | ||||||
|  | func (c *Cipher) sboxUpdateA(perturb byte) { | ||||||
|  | 	c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= | ||||||
|  | 		perturb | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // slower - perturb a single sbox for each octet | ||||||
|  | // (CV = ~5.6369% over 700 MiB of 0-byte pt) | ||||||
|  | func (c *Cipher) sboxUpdateB(perturb byte) { | ||||||
|  | 	lim := c.sw * c.sh | ||||||
|  | 	for idx := 0; idx < lim; idx++ { | ||||||
|  | 		c.sboxen[perturb%sboxCount][idx] ^= perturb | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // slowest -- full sbox re-gen after each octet | ||||||
|  | // (but lowest CV, ~0.0554% over 700MiB of 0-byte pt) | ||||||
|  | func (c *Cipher) sboxUpdateC(perturb byte) { | ||||||
|  | 	c.genSBoxen(sboxCount) | ||||||
|  | 	//c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= | ||||||
|  | 	//	perturb | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *Cipher) yield(ib byte) (ob byte) { | ||||||
|  | 	ob = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, ib) | ||||||
| 	c.n = (c.n + 1) % byte(len(c.sboxen)) | 	c.n = (c.n + 1) % byte(len(c.sboxen)) | ||||||
| 	c.keyUpdate(ct ^ pt) // must be equal in either encrypt/decrypt dirs | 	c.keyUpdate(ob ^ ib) // must be equal in either encrypt/decrypt dirs | ||||||
| 	switch c.mode { | 	switch c.mode { | ||||||
| 	case 0: | 	case 0: | ||||||
| 		// [nothing - varA] | 		// [nothing - varA] | ||||||
| 		break | 		break | ||||||
| 	case 1: | 	case 1: | ||||||
| 		c.sboxUpdateA(ct ^ pt) // varA | 		c.sboxUpdateA(ob ^ ib) // varA | ||||||
| 	case 2: | 	case 2: | ||||||
| 		c.sboxUpdateB(ct ^ pt) // varB | 		c.sboxUpdateB(ob ^ ib) // varB | ||||||
| 	case 3: | 	case 3: | ||||||
| 		c.sboxUpdateC(ct ^ pt) // varC | 		c.sboxUpdateC(ob ^ ib) // varC | ||||||
| 	default: | 	default: | ||||||
| 		// [nothing] | 		// [nothing] | ||||||
| 	} | 	} | ||||||
|  | @ -185,7 +188,7 @@ func (c *Cipher) yield(pt byte) (ct byte) { | ||||||
| 	//		c.genSBoxen(sboxCount) | 	//		c.genSBoxen(sboxCount) | ||||||
| 	//		c.sctr = c.sw | 	//		c.sctr = c.sw | ||||||
| 	//	} | 	//	} | ||||||
| 	return ct | 	return ob | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // XORKeyStream XORs each byte in the given slice with a byte from the | // XORKeyStream XORs each byte in the given slice with a byte from the | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							|  | @ -3,9 +3,9 @@ blitter.com/go/chacha20 | ||||||
| blitter.com/go/chacha20/internal/api | blitter.com/go/chacha20/internal/api | ||||||
| blitter.com/go/chacha20/internal/hardware | blitter.com/go/chacha20/internal/hardware | ||||||
| blitter.com/go/chacha20/internal/ref | blitter.com/go/chacha20/internal/ref | ||||||
| # blitter.com/go/cryptmt v1.0.0 | # blitter.com/go/cryptmt v1.0.1 | ||||||
| blitter.com/go/cryptmt | blitter.com/go/cryptmt | ||||||
| # blitter.com/go/goutmp v1.0.1 | # blitter.com/go/goutmp v1.0.2 | ||||||
| blitter.com/go/goutmp | blitter.com/go/goutmp | ||||||
| # blitter.com/go/herradurakex v1.0.0 | # blitter.com/go/herradurakex v1.0.0 | ||||||
| blitter.com/go/herradurakex | blitter.com/go/herradurakex | ||||||
|  | @ -15,7 +15,7 @@ blitter.com/go/kyber | ||||||
| blitter.com/go/mtwist | blitter.com/go/mtwist | ||||||
| # blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae | # blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae | ||||||
| blitter.com/go/newhope | blitter.com/go/newhope | ||||||
| # blitter.com/go/wanderer v0.8.1 | # blitter.com/go/wanderer v0.8.2 | ||||||
| blitter.com/go/wanderer | blitter.com/go/wanderer | ||||||
| # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f | # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f | ||||||
| github.com/jameskeane/bcrypt | github.com/jameskeane/bcrypt | ||||||
|  | @ -39,19 +39,19 @@ github.com/tjfoc/gmsm/sm4 | ||||||
| github.com/xtaci/kcp-go | github.com/xtaci/kcp-go | ||||||
| # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d | # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d | ||||||
| golang.org/x/crypto/blowfish | golang.org/x/crypto/blowfish | ||||||
| golang.org/x/crypto/pbkdf2 |  | ||||||
| golang.org/x/crypto/twofish |  | ||||||
| golang.org/x/crypto/sha3 |  | ||||||
| golang.org/x/crypto/cast5 | golang.org/x/crypto/cast5 | ||||||
|  | golang.org/x/crypto/pbkdf2 | ||||||
| golang.org/x/crypto/salsa20 | golang.org/x/crypto/salsa20 | ||||||
| golang.org/x/crypto/tea | golang.org/x/crypto/tea | ||||||
|  | golang.org/x/crypto/twofish | ||||||
| golang.org/x/crypto/xtea | golang.org/x/crypto/xtea | ||||||
| golang.org/x/crypto/argon2 | golang.org/x/crypto/blake2b | ||||||
| golang.org/x/crypto/bcrypt |  | ||||||
| golang.org/x/crypto/internal/subtle | golang.org/x/crypto/internal/subtle | ||||||
| golang.org/x/crypto/salsa20/salsa | golang.org/x/crypto/salsa20/salsa | ||||||
| golang.org/x/crypto/blake2b | golang.org/x/crypto/argon2 | ||||||
|  | golang.org/x/crypto/bcrypt | ||||||
| golang.org/x/crypto/scrypt | golang.org/x/crypto/scrypt | ||||||
|  | golang.org/x/crypto/sha3 | ||||||
| # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 | # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 | ||||||
| golang.org/x/net/ipv4 | golang.org/x/net/ipv4 | ||||||
| golang.org/x/net/ipv6 | golang.org/x/net/ipv6 | ||||||
|  |  | ||||||
|  | @ -103,10 +103,10 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err | ||||||
| 		rc = cipher.NewOFB(block, iv) | 		rc = cipher.NewOFB(block, iv) | ||||||
| 		log.Printf("[cipher BLOWFISH_64 (%d)]\n", copts) | 		log.Printf("[cipher BLOWFISH_64 (%d)]\n", copts) | ||||||
| 	case CAlgCryptMT1: | 	case CAlgCryptMT1: | ||||||
| 		rc = cryptmt.NewCipher(keymat) | 		rc = cryptmt.New(keymat) | ||||||
| 		log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) | 		log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) | ||||||
| 	case CAlgWanderer: | 	case CAlgWanderer: | ||||||
| 		rc = wanderer.NewCodec(nil, nil, 1, keymat, 3, 3) | 		rc = wanderer.New(nil, nil, 1, keymat, 3, 3) | ||||||
| 		log.Printf("[cipher WANDERER mode 1 (%d)]\n", copts) | 		log.Printf("[cipher WANDERER mode 1 (%d)]\n", copts) | ||||||
| 	default: | 	default: | ||||||
| 		log.Printf("[invalid cipher (%d)]\n", copts) | 		log.Printf("[invalid cipher (%d)]\n", copts) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue