-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathear_appraisal_test.go
93 lines (73 loc) · 2.86 KB
/
ear_appraisal_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// Copyright 2023 Contributors to the Veraison project.
// SPDX-License-Identifier: Apache-2.0
package ear
import (
"crypto/ecdsa"
"crypto/elliptic"
"math/big"
"testing"
"github.com/stretchr/testify/assert"
)
func TestAppraisalExtensions_SetGetKeyAttestation_ok(t *testing.T) {
expected := AppraisalExtensions{
VeraisonKeyAttestation: &map[string]interface{}{
"akpub": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEb_A7lJJBzh2t1DUZ5pYOCoW0GmmgXDKBA6orzhWUyhY8T3U6Vb8B3FP2wLDH7ueLQMb_fSWpbiKCuYnO9xwUSg",
},
}
x, y := new(big.Int), new(big.Int)
x.SetString("50631180696798613978298281067436158137915100161810154046459014669202204445206", 10)
y.SetString("27279160910143077479535430864293552757342796444793851632003786495367057249354", 10)
tv := &ecdsa.PublicKey{Curve: elliptic.P256(), X: x, Y: y}
actual := AppraisalExtensions{}
err := actual.SetKeyAttestation(tv)
assert.NoError(t, err)
assert.Equal(t, expected, actual)
pub, err := actual.GetKeyAttestation()
assert.NoError(t, err)
assert.Equal(t, tv, pub)
}
func TestAppraisalExtensions_SetKeyAttestation_fail_unsupported_key_type(t *testing.T) {
tv := "MFkwWwYHKo"
actual := AppraisalExtensions{}
err := actual.SetKeyAttestation(tv)
assert.EqualError(t, err, "unsupported type for public key: string")
}
func TestAppraisalExtensions_GetKeyAttestation_fail_no_claim(t *testing.T) {
tv := AppraisalExtensions{}
_, err := tv.GetKeyAttestation()
assert.EqualError(t, err, `"ear.veraison.key-attestation" claim not found`)
}
func TestAppraisalExtensions_GetKeyAttestation_fail_akpub_missing(t *testing.T) {
tv := AppraisalExtensions{
VeraisonKeyAttestation: &map[string]interface{}{},
}
_, err := tv.GetKeyAttestation()
assert.EqualError(t, err, `"akpub" claim not found in "ear.veraison.key-attestation"`)
}
func TestAppraisalExtensions_GetKeyAttestation_fail_akpub_truncated(t *testing.T) {
tv := AppraisalExtensions{
VeraisonKeyAttestation: &map[string]interface{}{
"akpub": "MFkwEwYHKo",
},
}
_, err := tv.GetKeyAttestation()
assert.EqualError(t, err, `parsing "akpub" failed: asn1: syntax error: data truncated`)
}
func TestAppraisalExtensions_GetKeyAttestation_fail_akpub_not_a_string(t *testing.T) {
tv := AppraisalExtensions{
VeraisonKeyAttestation: &map[string]interface{}{
"akpub": 141245,
},
}
_, err := tv.GetKeyAttestation()
assert.EqualError(t, err, `"ear.veraison.key-attestation" malformed: "akpub" must be string`)
}
func TestAppraisalExtensions_GetKeyAttestation_fail_akpub_no_b64url(t *testing.T) {
tv := AppraisalExtensions{
VeraisonKeyAttestation: &map[string]interface{}{
"akpub": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9Q==",
},
}
_, err := tv.GetKeyAttestation()
assert.EqualError(t, err, `"ear.veraison.key-attestation" malformed: decoding "akpub": illegal base64 data at input byte 84`)
}