1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
12 type testSplitPreMasterSecretTest
struct {
16 var testSplitPreMasterSecretTests
= []testSplitPreMasterSecretTest
{
20 {"001122", "0011", "1122"},
21 {"00112233", "0011", "2233"},
24 func TestSplitPreMasterSecret(t
*testing
.T
) {
25 for i
, test
:= range testSplitPreMasterSecretTests
{
26 in
, _
:= hex
.DecodeString(test
.in
)
27 out1
, out2
:= splitPreMasterSecret(in
)
28 s1
:= hex
.EncodeToString(out1
)
29 s2
:= hex
.EncodeToString(out2
)
30 if s1
!= test
.out1 || s2
!= test
.out2
{
31 t
.Errorf("#%d: got: (%s, %s) want: (%s, %s)", i
, s1
, s2
, test
.out1
, test
.out2
)
36 type testKeysFromTest
struct {
38 preMasterSecret
string
39 clientRandom
, serverRandom
string
41 clientMAC
, serverMAC
string
42 clientKey
, serverKey
string
46 func TestKeysFromPreMasterSecret(t
*testing
.T
) {
47 for i
, test
:= range testKeysFromTests
{
48 in
, _
:= hex
.DecodeString(test
.preMasterSecret
)
49 clientRandom
, _
:= hex
.DecodeString(test
.clientRandom
)
50 serverRandom
, _
:= hex
.DecodeString(test
.serverRandom
)
52 masterSecret
:= masterFromPreMasterSecret(test
.version
, in
, clientRandom
, serverRandom
)
53 if s
:= hex
.EncodeToString(masterSecret
); s
!= test
.masterSecret
{
54 t
.Errorf("#%d: bad master secret %s, want %s", i
, s
, test
.masterSecret
)
58 clientMAC
, serverMAC
, clientKey
, serverKey
, _
, _
:= keysFromMasterSecret(test
.version
, masterSecret
, clientRandom
, serverRandom
, test
.macLen
, test
.keyLen
, 0)
59 clientMACString
:= hex
.EncodeToString(clientMAC
)
60 serverMACString
:= hex
.EncodeToString(serverMAC
)
61 clientKeyString
:= hex
.EncodeToString(clientKey
)
62 serverKeyString
:= hex
.EncodeToString(serverKey
)
63 if clientMACString
!= test
.clientMAC ||
64 serverMACString
!= test
.serverMAC ||
65 clientKeyString
!= test
.clientKey ||
66 serverKeyString
!= test
.serverKey
{
67 t
.Errorf("#%d: got: (%s, %s, %s, %s) want: (%s, %s, %s, %s)", i
, clientMACString
, serverMACString
, clientKeyString
, serverKeyString
, test
.clientMAC
, test
.serverMAC
, test
.clientKey
, test
.serverKey
)
72 // These test vectors were generated from GnuTLS using `gnutls-cli --insecure -d 9 `
73 var testKeysFromTests
= []testKeysFromTest
{
76 "0302cac83ad4b1db3b9ab49ad05957de2a504a634a386fc600889321e1a971f57479466830ac3e6f468e87f5385fa0c5",
77 "4ae66303755184a3917fcb44880605fcc53baa01912b22ed94473fc69cebd558",
78 "4ae663020ec16e6bb5130be918cfcafd4d765979a3136a5d50c593446e4e44db",
79 "3d851bab6e5556e959a16bc36d66cfae32f672bfa9ecdef6096cbb1b23472df1da63dbbd9827606413221d149ed08ceb",
80 "805aaa19b3d2c0a0759a4b6c9959890e08480119",
81 "2d22f9fe519c075c16448305ceee209fc24ad109",
82 "d50b5771244f850cd8117a9ccafe2cf1",
83 "e076e33206b30507a85c32855acd0919",
89 "03023f7527316bc12cbcd69e4b9e8275d62c028f27e65c745cfcddc7ce01bd3570a111378b63848127f1c36e5f9e4890",
90 "4ae66364b5ea56b20ce4e25555aed2d7e67f42788dd03f3fee4adae0459ab106",
91 "4ae66363ab815cbf6a248b87d6b556184e945e9b97fbdf247858b0bdafacfa1c",
92 "7d64be7c80c59b740200b4b9c26d0baaa1c5ae56705acbcf2307fe62beb4728c19392c83f20483801cce022c77645460",
93 "97742ed60a0554ca13f04f97ee193177b971e3b0",
94 "37068751700400e03a8477a5c7eec0813ab9e0dc",
95 "207cddbc600d2a200abac6502053ee5c",
96 "df3f94f6e1eacc753b815fe16055cd43",
102 "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1",
103 "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e",
104 "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e",
105 "1aff2e7a2c4279d0126f57a65a77a8d9d0087cf2733366699bec27eb53d5740705a8574bb1acc2abbe90e44f0dd28d6c",
106 "3c7647c93c1379a31a609542aa44e7f117a70085",
107 "0d73102994be74a575a3ead8532590ca32a526d4",
108 "ac7581b0b6c10d85bbd905ffbf36c65e",
109 "ff07edde49682b45466bd2e39464b306",
115 "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1",
116 "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e",
117 "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e",
118 "a614863e56299dcffeea2938f22c2ba023768dbe4b3f6877bc9c346c6ae529b51d9cb87ff9695ea4d01f2205584405b2",
119 "2c450d5b6f6e2013ac6bea6a0b32200d4e1ffb94",
120 "7a7a7438769536f2fb1ae49a61f0703b79b2dc53",
121 "f8f6b26c10f12855c9aafb1e0e839ccf",
122 "2b9d4b4a60cb7f396780ebff50650419",