-
Notifications
You must be signed in to change notification settings - Fork 6
/
apdu_test.go
49 lines (41 loc) · 1.42 KB
/
apdu_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
package gocosem
import (
"bytes"
"fmt"
"testing"
)
func TestAPDU_EncodeAARQ(t *testing.T) {
var aarq = AARQ{
appCtxt: LogicalName_NoCiphering,
authMech: LowLevelSecurity,
authValue: "12345678",
}
t.Logf("%+v", aarq)
b, err := aarq.encode()
if err != nil {
t.Fatal(err)
}
t.Logf("% 0X", b)
expb := []byte{0x60, 0x36, 0xA1, 0x09, 0x06, 0x07, 0x60, 0x85, 0x74, 0x05, 0x08, 0x01, 0x01, 0x8A, 0x02, 0x07, 0x80, 0x8B, 0x07, 0x60, 0x85, 0x74, 0x05, 0x08, 0x02, 0x01, 0xAC, 0x0A, 0x80, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0xBE, 0x10, 0x04, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x06, 0x5F, 0x1F, 0x04, 0x00, 0x00, 0x7E, 0x1F, 0x04, 0xB0}
if !bytes.Equal(b, expb) {
t.Fatalf("expected b to be:\n% 0X, but is:\n% 0X", expb, b)
}
}
func TestAPDU_DecodeAARE(t *testing.T) {
b := []byte{0x61, 0x29, 0xA1, 0x09, 0x06, 0x07, 0x60, 0x85, 0x74, 0x05, 0x08, 0x01, 0x01, 0xA2, 0x03, 0x02, 0x01, 0x00, 0xA3, 0x05, 0xA1, 0x03, 0x02, 0x01, 0x00, 0xBE, 0x10, 0x04, 0x0E, 0x08, 0x00, 0x06, 0x5F, 0x1F, 0x04, 0x00, 0x00, 0x18, 0x1F, 0x08, 0x00, 0x00, 0x07}
t.Logf("% 0X", b)
var aare AARE
err := aare.decode(b)
if err != nil {
t.Fatal(err)
}
t.Logf("%+v", aare)
var expect = func(s string, v, e interface{}) {
if fmt.Sprint(v) != fmt.Sprint(e) {
t.Fatalf("expected %s to be %v, but is %v", s, e, v)
}
}
expect("appCtxt", aare.appCtxt, 1)
expect("result", aare.result, 0)
expect("diagnostic", aare.diagnostic, 0x00)
}