Skip to content

Commit 6607f35

Browse files
Modified values.Version (support draft version)
1 parent 1b5da0d commit 6607f35

File tree

2 files changed

+52
-17
lines changed

2 files changed

+52
-17
lines changed

packet/values/version.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import (
88

99
//Version - information version
1010
type Version struct {
11-
ver byte //version number
12-
cur byte //current version in RFC4880
11+
ver byte //version number
12+
cur byte //current version in RFC4880
13+
draft byte //draft version in RFC4880bis
1314
}
1415

1516
//NewVersion returns new Version instance
16-
func NewVersion(ver, cur byte) *Version {
17-
return &Version{ver: ver, cur: cur}
17+
func NewVersion(ver, cur, draft byte) *Version {
18+
return &Version{ver: ver, cur: cur, draft: draft}
1819
}
1920

2021
//Number returns number of version
@@ -41,9 +42,20 @@ func (v *Version) IsCurrent() bool {
4142
return v.ver == v.cur
4243
}
4344

45+
//IsDraft return true if draft version
46+
func (v *Version) IsDraft() bool {
47+
if v == nil {
48+
return false
49+
}
50+
if v.draft == 0 {
51+
return false
52+
}
53+
return v.ver == v.draft
54+
}
55+
4456
//IsUnknown return true if unknown version
4557
func (v *Version) IsUnknown() bool {
46-
return !v.IsOld() && !v.IsCurrent()
58+
return !v.IsOld() && !v.IsCurrent() && !v.IsDraft()
4759
}
4860

4961
//ToItem returns Item instance
@@ -57,6 +69,8 @@ func (v *Version) ToItem(dumpFlag bool) *info.Item {
5769
note = "old"
5870
case v.IsCurrent():
5971
note = "current"
72+
case v.IsDraft():
73+
note = "draft"
6074
default:
6175
note = "unknown"
6276
}
@@ -74,27 +88,27 @@ func (v *Version) String() string {
7488

7589
// PubVer is Public-Key Packet Version
7690
func PubVer(ver byte) *Version {
77-
return NewVersion(ver, 4)
91+
return NewVersion(ver, 4., 5)
7892
}
7993

8094
// SigVer is Signiture Packet Version
8195
func SigVer(ver byte) *Version {
82-
return NewVersion(ver, 4)
96+
return NewVersion(ver, 4, 0)
8397
}
8498

8599
// OneSigVer is One-Pass Signature Packet Version
86100
func OneSigVer(ver byte) *Version {
87-
return NewVersion(ver, 3)
101+
return NewVersion(ver, 3, 0)
88102
}
89103

90104
// PubSessKeyVer is Public-Key Encrypted Session Key Packet Version
91105
func PubSessKeyVer(ver byte) *Version {
92-
return NewVersion(ver, 3)
106+
return NewVersion(ver, 3, 0)
93107
}
94108

95109
// SymSessKeyVer is Symmetric-Key Encrypted Session Key Packet Version
96110
func SymSessKeyVer(ver byte) *Version {
97-
return NewVersion(ver, 4)
111+
return NewVersion(ver, 4, 0)
98112
}
99113

100114
/* Copyright 2016,2017 Spiegel

packet/values/version_test.go

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package values
33
import "testing"
44

55
func TestVersionNew(t *testing.T) {
6-
v := NewVersion(4, 4)
6+
v := NewVersion(4, 4, 5)
77
if v.IsUnknown() {
88
t.Errorf("Version.IsUnknown = %v, want false.", v.IsUnknown())
99
}
@@ -40,7 +40,7 @@ func TestVersionOldNew(t *testing.T) {
4040
}
4141

4242
func TestVersionOld(t *testing.T) {
43-
v := NewVersion(3, 4)
43+
v := NewVersion(3, 4, 5)
4444
if v.IsUnknown() {
4545
t.Errorf("Version.IsUnknown = %v, want false.", v.IsUnknown())
4646
}
@@ -60,6 +60,27 @@ func TestVersionOld(t *testing.T) {
6060
}
6161
}
6262

63+
func TestVersionDraft(t *testing.T) {
64+
v := NewVersion(5, 4, 5)
65+
if v.IsUnknown() {
66+
t.Errorf("Version.IsUnknown = %v, want false.", v.IsUnknown())
67+
}
68+
69+
i := v.ToItem(true)
70+
if i.Name != "Version" {
71+
t.Errorf("Version.Name = \"%v\", want \"Version\".", i.Name)
72+
}
73+
if i.Value != "5" {
74+
t.Errorf("Version.Value = \"%v\", want \"5\".", i.Value)
75+
}
76+
if i.Note != "draft" {
77+
t.Errorf("Version.Note = \"%v\", want \"draft\"", i.Note)
78+
}
79+
if i.Dump != "05" {
80+
t.Errorf("Version.Dump = \"%v\", want \"05\".", i.Dump)
81+
}
82+
}
83+
6384
func TestVersionOldNil(t *testing.T) {
6485
v := (*Version)(nil)
6586
if v.IsOld() {
@@ -75,7 +96,7 @@ func TestVersionToItemNil(t *testing.T) {
7596
}
7697

7798
func TestVersionUnknown(t *testing.T) {
78-
v := NewVersion(5, 4)
99+
v := NewVersion(6, 4, 5)
79100
if !v.IsUnknown() {
80101
t.Errorf("Version.IsUnknown = %v, want true.", v.IsUnknown())
81102
}
@@ -84,14 +105,14 @@ func TestVersionUnknown(t *testing.T) {
84105
if i.Name != "Version" {
85106
t.Errorf("Version.Name = \"%v\", want \"Version\".", i.Name)
86107
}
87-
if i.Value != "5" {
88-
t.Errorf("Version.Value = \"%v\", want \"5\".", i.Value)
108+
if i.Value != "6" {
109+
t.Errorf("Version.Value = \"%v\", want \"6\".", i.Value)
89110
}
90111
if i.Note != "unknown" {
91112
t.Errorf("Version.Note = \"%v\", want \"unknown\"", i.Note)
92113
}
93-
if i.Dump != "05" {
94-
t.Errorf("Version.Dump = \"%v\", want \"05\".", i.Dump)
114+
if i.Dump != "06" {
115+
t.Errorf("Version.Dump = \"%v\", want \"06\".", i.Dump)
95116
}
96117
}
97118

0 commit comments

Comments
 (0)