81 lines
2.0 KiB
Go
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)
|
||
|
}
|