zgrab2/tools/keys/ecdhe_test.go
2017-10-22 21:19:49 -04:00

81 lines
2.0 KiB
Go

/*
* ZGrab Copyright 2015 Regents of the University of Michigan
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package keys
import (
"crypto/rand"
"encoding/json"
"math/big"
"testing"
. "gopkg.in/check.v1"
)
func TestECDHE(t *testing.T) { TestingT(t) }
type ECDHESuite struct{}
var _ = Suite(&ECDHESuite{})
func (s *ECDHESuite) TestEncodeDecodeCurveID(c *C) {
for curve := range ecIDToName {
out, errEnc := json.Marshal(&curve)
c.Assert(errEnc, IsNil)
var back TLSCurveID
errDec := json.Unmarshal(out, &back)
c.Assert(errDec, IsNil)
c.Check(back, Equals, curve)
}
}
func (s *ECDHESuite) TestEncodeDecodeECPoint(c *C) {
max := new(big.Int)
max.Exp(big.NewInt(2), big.NewInt(255), nil)
max.Sub(max, big.NewInt(19))
x, errX := rand.Int(rand.Reader, max)
y, errY := rand.Int(rand.Reader, max)
c.Assert(errX, IsNil)
c.Assert(errY, IsNil)
p := ECPoint{
X: x,
Y: y,
}
out, errEnc := json.Marshal(&p)
c.Assert(errEnc, IsNil)
c.Check(len(out), Not(Equals), 0)
var back ECPoint
errDec := json.Unmarshal(out, &back)
c.Assert(errDec, IsNil)
}
func (s *ECDHESuite) TestCurveIDDescription(c *C) {
for curve, name := range ecIDToName {
c.Check(curve.Description(), Equals, name)
}
unk := TLSCurveID(6500)
c.Check(unk.Description(), Equals, "unknown")
}
func (s *ECDHESuite) TestEncodeDecodeECParam(c *C) {
ecp := new(ECDHParams)
out, errEnc := json.Marshal(&ecp)
c.Assert(errEnc, IsNil)
c.Check(len(out), Not(Equals), 0)
back := new(ECDHParams)
errDec := json.Unmarshal(out, back)
c.Assert(errDec, IsNil)
c.Check(back, DeepEquals, ecp)
}