mirror of
https://gogs.blitter.com/RLabs/xs
synced 2024-08-14 10:26:42 +00:00
Compare commits
6 commits
952279a108
...
bfcd097a14
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bfcd097a14 | ||
|
|
136f37e209 | ||
|
|
ec9b4fe2f4 | ||
|
|
aa33a3b8a0 | ||
|
|
7e4aeba93a | ||
|
|
91bb0778b2 |
9 changed files with 22 additions and 17 deletions
2
Makefile
2
Makefile
|
|
@ -1,4 +1,4 @@
|
||||||
VERSION := 0.9.10
|
VERSION := 0.9.11
|
||||||
.PHONY: lint vis clean common client server passwd\
|
.PHONY: lint vis clean common client server passwd\
|
||||||
subpkgs install uninstall reinstall scc
|
subpkgs install uninstall reinstall scc
|
||||||
|
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -44,10 +44,12 @@ Currently supported session algorithms:
|
||||||
* Blowfish-64
|
* Blowfish-64
|
||||||
* CryptMTv1 (64bit) (https://eprint.iacr.org/2005/165.pdf)
|
* CryptMTv1 (64bit) (https://eprint.iacr.org/2005/165.pdf)
|
||||||
* ChaCha20 (https://github.com/aead/chacha20)
|
* ChaCha20 (https://github.com/aead/chacha20)
|
||||||
|
* HOPSCOTCH (https://gogs.blitter.com/Russtopia/hopscotch)
|
||||||
|
|
||||||
[HMAC]
|
[HMAC]
|
||||||
* HMAC-SHA256
|
* HMAC-SHA256
|
||||||
* HMAC-SHA512
|
* HMAC-SHA512
|
||||||
|
* WHIRLPOOL
|
||||||
|
|
||||||
***
|
***
|
||||||
**A Note on 'cryptographic agility'**
|
**A Note on 'cryptographic agility'**
|
||||||
|
|
@ -92,18 +94,6 @@ KYBER IND-CCA-2 KEM
|
||||||
|
|
||||||
As of this time (Oct 2018) Kyber is one of the candidate algorithms submitted to the [NIST post-quantum cryptography project](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography). The authors recommend using it in "... so-called hybrid mode in combination with established "pre-quantum" security; for example in combination with elliptic-curve Diffie-Hellman." THIS PROJECT DOES NOT DO THIS (in case you didn't notice yet, THIS PROJECT IS EXPERIMENTAL.)
|
As of this time (Oct 2018) Kyber is one of the candidate algorithms submitted to the [NIST post-quantum cryptography project](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography). The authors recommend using it in "... so-called hybrid mode in combination with established "pre-quantum" security; for example in combination with elliptic-curve Diffie-Hellman." THIS PROJECT DOES NOT DO THIS (in case you didn't notice yet, THIS PROJECT IS EXPERIMENTAL.)
|
||||||
|
|
||||||
### Dependencies:
|
|
||||||
|
|
||||||
* Recent version of go (tested, at various times, with go-1.9 to go-1.12.4)
|
|
||||||
* [github.com/mattn/go-isatty](http://github.com/mattn/go-isatty) //terminal tty detection
|
|
||||||
* [github.com/kr/pty](http://github.com/kr/pty) //unix pty control (server pty connections)
|
|
||||||
* [github.com/jameskeane/bcrypt](http://github.com/jameskeane/bcrypt) //password storage/auth
|
|
||||||
* [blitter.com/go/goutmp](https://gogs.blitter.com/RLabs/goutmp) // wtmp/lastlog C bindings for user accounting
|
|
||||||
* [https://gitlab.com/yawning/kyber](https://gogs.blitter.com/RLabs/kyber) // golang Kyber KEM
|
|
||||||
* [https://gitlab.com/yawning/kyber](https://gogs.blitter.com/RLabs/newhope) // golang NEWHOPE,NEWHOPE-SIMPLE KEX
|
|
||||||
* [blitter.com/go/mtwist](https://gogs.blitter.com/RLabs/mtwist) // 64-bit Mersenne Twister PRNG
|
|
||||||
* [blitter.com/go/cryptmt](https://gogs.blitter.com/RLabs/cryptmt) // CryptMTv1 stream cipher
|
|
||||||
|
|
||||||
|
|
||||||
### Installing
|
### Installing
|
||||||
|
|
||||||
|
|
|
||||||
1
go.mod
1
go.mod
|
|
@ -23,6 +23,7 @@ require (
|
||||||
require (
|
require (
|
||||||
blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c // indirect
|
blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c // indirect
|
||||||
blitter.com/go/mtwist v1.0.1 // indirect
|
blitter.com/go/mtwist v1.0.1 // indirect
|
||||||
|
github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
||||||
github.com/klauspost/reedsolomon v1.12.1 // indirect
|
github.com/klauspost/reedsolomon v1.12.1 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -45,6 +45,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y=
|
github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y=
|
||||||
github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s=
|
github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s=
|
||||||
|
github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004 h1:G+9t9cEtnC9jFiTxyptEKuNIAbiN5ZCQzX2a74lj3xg=
|
||||||
|
github.com/jzelinskie/whirlpool v0.0.0-20201016144138-0675e54bb004/go.mod h1:KmHnJWQrgEvbuy0vcvj00gtMqbvNn1L+3YUZLK/B92c=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
|
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||||
github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q=
|
github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q=
|
||||||
|
|
|
||||||
3
xs/xs.go
3
xs/xs.go
|
|
@ -733,7 +733,8 @@ func main() { //nolint: funlen, gocyclo
|
||||||
C_CHACHA20_12`)
|
C_CHACHA20_12`)
|
||||||
flag.StringVar(&hmacAlg, "m", "H_SHA256", "session `HMAC`"+`
|
flag.StringVar(&hmacAlg, "m", "H_SHA256", "session `HMAC`"+`
|
||||||
H_SHA256
|
H_SHA256
|
||||||
H_SHA512`)
|
H_SHA512
|
||||||
|
H_WHIRLPOOL`)
|
||||||
flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "KEx `alg`"+`
|
flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "KEx `alg`"+`
|
||||||
KEX_HERRADURA256
|
KEX_HERRADURA256
|
||||||
KEX_HERRADURA512
|
KEX_HERRADURA512
|
||||||
|
|
|
||||||
|
|
@ -572,7 +572,8 @@ func main() { //nolint:funlen,gocyclo
|
||||||
flag.Var(&aHMACAlgs, "aH", "Allowed `HMAC`s (eg. '-aH HMACAlgA -aH HMACAlgB ...')"+`
|
flag.Var(&aHMACAlgs, "aH", "Allowed `HMAC`s (eg. '-aH HMACAlgA -aH HMACAlgB ...')"+`
|
||||||
H_all
|
H_all
|
||||||
H_SHA256
|
H_SHA256
|
||||||
H_SHA512`)
|
H_SHA512
|
||||||
|
H_WHIRLPOOL`)
|
||||||
|
|
||||||
flag.StringVar(&cpuprofile, "cpuprofile", "", "write cpu profile to <`file`>")
|
flag.StringVar(&cpuprofile, "cpuprofile", "", "write cpu profile to <`file`>")
|
||||||
flag.StringVar(&memprofile, "memprofile", "", "write memory profile to <`file`>")
|
flag.StringVar(&memprofile, "memprofile", "", "write memory profile to <`file`>")
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import (
|
||||||
"github.com/aead/chacha20/chacha"
|
"github.com/aead/chacha20/chacha"
|
||||||
"golang.org/x/crypto/blowfish"
|
"golang.org/x/crypto/blowfish"
|
||||||
"golang.org/x/crypto/twofish"
|
"golang.org/x/crypto/twofish"
|
||||||
|
whirlpool "github.com/jzelinskie/whirlpool"
|
||||||
// hash algos must be manually imported thusly:
|
// hash algos must be manually imported thusly:
|
||||||
// (Would be nice if the golang pkg docs were more clear
|
// (Would be nice if the golang pkg docs were more clear
|
||||||
// on this...)
|
// on this...)
|
||||||
|
|
@ -157,6 +157,9 @@ func (hc *Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err er
|
||||||
if !halg.Available() {
|
if !halg.Available() {
|
||||||
log.Fatal("hash not available!")
|
log.Fatal("hash not available!")
|
||||||
}
|
}
|
||||||
|
case HmacWHIRLPOOL:
|
||||||
|
log.Printf("[hash HmacWHIRLPOOL (%d)]\n", hopts)
|
||||||
|
mc = whirlpool.New()
|
||||||
default:
|
default:
|
||||||
log.Printf("[invalid hmac (%d)]\n", hopts)
|
log.Printf("[invalid hmac (%d)]\n", hopts)
|
||||||
fmt.Printf("DOOFUS SET A VALID HMAC ALG (%d)\n", hopts)
|
fmt.Printf("DOOFUS SET A VALID HMAC ALG (%d)\n", hopts)
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ type CSCipherAlg uint32
|
||||||
const (
|
const (
|
||||||
HmacSHA256 = iota
|
HmacSHA256 = iota
|
||||||
HmacSHA512
|
HmacSHA512
|
||||||
|
HmacWHIRLPOOL
|
||||||
HmacNoneDisallowed
|
HmacNoneDisallowed
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,8 @@ func (h *CSHmacAlg) String() string {
|
||||||
return "H_SHA256"
|
return "H_SHA256"
|
||||||
case HmacSHA512:
|
case HmacSHA512:
|
||||||
return "H_SHA512"
|
return "H_SHA512"
|
||||||
|
case HmacWHIRLPOOL:
|
||||||
|
return "H_WHIRLPOOL"
|
||||||
default:
|
default:
|
||||||
return "H_ERR_UNK"
|
return "H_ERR_UNK"
|
||||||
}
|
}
|
||||||
|
|
@ -363,6 +365,10 @@ func (hc *Conn) applyConnExtensions(extensions ...string) {
|
||||||
log.Println("[extension arg = H_SHA512]")
|
log.Println("[extension arg = H_SHA512]")
|
||||||
hc.cipheropts &= (0xFFFF00FF)
|
hc.cipheropts &= (0xFFFF00FF)
|
||||||
hc.cipheropts |= (HmacSHA512 << 8)
|
hc.cipheropts |= (HmacSHA512 << 8)
|
||||||
|
case "H_WHIRLPOOL":
|
||||||
|
log.Println("[extension arg = H_WHIRLPOOL]")
|
||||||
|
hc.cipheropts &= (0xFFFF00FF)
|
||||||
|
hc.cipheropts |= (HmacWHIRLPOOL << 8)
|
||||||
case "OPT_REMOD":
|
case "OPT_REMOD":
|
||||||
log.Println("[extension arg = OPT_REMOD]")
|
log.Println("[extension arg = OPT_REMOD]")
|
||||||
hc.opts |= CORemodulateShields
|
hc.opts |= CORemodulateShields
|
||||||
|
|
@ -1115,7 +1121,7 @@ func (hl *HKExListener) Accept() (hc Conn, err error) {
|
||||||
return Conn{}, err
|
return Conn{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.LogDebug(fmt.Sprintln("[net.Listener Accepted]"))
|
logger.LogDebug(fmt.Sprintf("[net.Listener Accepted %v]\n", c.RemoteAddr()))
|
||||||
}
|
}
|
||||||
// Read KEx alg proposed by client
|
// Read KEx alg proposed by client
|
||||||
var kexAlg KEXAlg
|
var kexAlg KEXAlg
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue