Skip to content

Commit 8c7a563

Browse files
committed
test: add some tests
1 parent 1f29382 commit 8c7a563

File tree

3 files changed

+179
-0
lines changed

3 files changed

+179
-0
lines changed

md5_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ func TestMd5(t *testing.T) {
1515
contentMD5 := base64.StdEncoding.EncodeToString([]byte(dst))
1616
t.Log(contentMD5)
1717
}
18+
19+
func TestMd5ToString(t *testing.T) {
20+
src := "apple"
21+
dst := Md5ToString(src)
22+
assert.Equal(t, "1f3870be274f6c49b3e31a0c6728957f", dst)
23+
}

padding_test.go

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,141 @@ func TestPKCS7UnPadding(t *testing.T) {
4444
})
4545
}
4646
}
47+
48+
func TestPadding(t *testing.T) {
49+
blockSize := 16
50+
tests := []struct {
51+
name string
52+
padding string
53+
src []byte
54+
wantLen int
55+
}{
56+
{name: "PKCS5", padding: PKCS5_PADDING, src: []byte("test"), wantLen: 16},
57+
{name: "PKCS7", padding: PKCS7_PADDING, src: []byte("test"), wantLen: 16},
58+
{name: "Zeros", padding: ZEROS_PADDING, src: []byte("test"), wantLen: 16},
59+
}
60+
for _, tt := range tests {
61+
t.Run(tt.name, func(t *testing.T) {
62+
got := Padding(tt.padding, tt.src, blockSize)
63+
assert.Equal(t, tt.wantLen, len(got))
64+
})
65+
}
66+
}
67+
68+
func TestUnPadding(t *testing.T) {
69+
blockSize := 16
70+
padding := PKCS7_PADDING
71+
tests := []struct {
72+
name string
73+
src []byte
74+
want []byte
75+
wantErr bool
76+
}{
77+
{name: "valid padding", src: PKCS7Padding([]byte("test"), blockSize), want: []byte("test"), wantErr: false},
78+
{name: "empty src", src: []byte{}, want: []byte{}, wantErr: true},
79+
}
80+
for _, tt := range tests {
81+
t.Run(tt.name, func(t *testing.T) {
82+
got, err := UnPadding(padding, tt.src)
83+
if tt.wantErr {
84+
assert.Error(t, err)
85+
} else {
86+
assert.NoError(t, err)
87+
}
88+
assert.Equal(t, tt.want, got)
89+
})
90+
}
91+
}
92+
93+
func TestPKCS5Padding(t *testing.T) {
94+
blockSize := 16
95+
tests := []struct {
96+
name string
97+
src []byte
98+
wantLen int
99+
}{
100+
{name: "test PKCS5", src: []byte("test"), wantLen: 16},
101+
}
102+
for _, tt := range tests {
103+
t.Run(tt.name, func(t *testing.T) {
104+
got := PKCS5Padding(tt.src, blockSize)
105+
assert.Equal(t, tt.wantLen, len(got))
106+
})
107+
}
108+
}
109+
110+
func TestPKCS5Unpadding(t *testing.T) {
111+
blockSize := 16
112+
padded := PKCS5Padding([]byte("test"), blockSize)
113+
tests := []struct {
114+
name string
115+
src []byte
116+
want []byte
117+
wantErr bool
118+
}{
119+
{name: "valid padding", src: padded, want: []byte("test"), wantErr: false},
120+
}
121+
for _, tt := range tests {
122+
t.Run(tt.name, func(t *testing.T) {
123+
got, err := PKCS5Unpadding(tt.src)
124+
if tt.wantErr {
125+
assert.Error(t, err)
126+
} else {
127+
assert.NoError(t, err)
128+
}
129+
assert.Equal(t, tt.want, got)
130+
})
131+
}
132+
}
133+
134+
func TestPKCS7Padding(t *testing.T) {
135+
blockSize := 16
136+
tests := []struct {
137+
name string
138+
src []byte
139+
wantLen int
140+
}{
141+
{name: "test PKCS7", src: []byte("test"), wantLen: 16},
142+
}
143+
for _, tt := range tests {
144+
t.Run(tt.name, func(t *testing.T) {
145+
got := PKCS7Padding(tt.src, blockSize)
146+
assert.Equal(t, tt.wantLen, len(got))
147+
})
148+
}
149+
}
150+
151+
func TestZerosPadding(t *testing.T) {
152+
blockSize := 16
153+
tests := []struct {
154+
name string
155+
src []byte
156+
wantLen int
157+
}{
158+
{name: "test Zeros", src: []byte("test"), wantLen: 16},
159+
}
160+
for _, tt := range tests {
161+
t.Run(tt.name, func(t *testing.T) {
162+
got := ZerosPadding(tt.src, blockSize)
163+
assert.Equal(t, tt.wantLen, len(got))
164+
})
165+
}
166+
}
167+
168+
func TestZerosUnPadding(t *testing.T) {
169+
blockSize := 16
170+
tests := []struct {
171+
name string
172+
src []byte
173+
want []byte
174+
}{
175+
{name: "test ZerosUnPadding", src: ZerosPadding([]byte("test"), blockSize), want: []byte("test")},
176+
}
177+
for _, tt := range tests {
178+
t.Run(tt.name, func(t *testing.T) {
179+
got, err := ZerosUnPadding(tt.src)
180+
assert.NoError(t, err)
181+
assert.Equal(t, tt.want, got)
182+
})
183+
}
184+
}

rsa_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package openssl
33
import (
44
"bytes"
55
"crypto"
6+
"crypto/rsa"
7+
"crypto/x509"
8+
"encoding/pem"
69
"encoding/base64"
710
"testing"
811

@@ -52,3 +55,35 @@ func TestRSASign(t *testing.T) {
5255
err = RSAVerify(src, sign, pubBuf.Bytes(), crypto.SHA256)
5356
assert.NoError(t, err)
5457
}
58+
59+
func TestRSAGenerateKey(t *testing.T) {
60+
priBuf := bytes.NewBuffer(nil)
61+
err := RSAGenerateKey(2048, priBuf)
62+
assert.NoError(t, err)
63+
64+
block, _ := pem.Decode(priBuf.Bytes())
65+
assert.NotNil(t, block, "Failed to decode private key")
66+
assert.Equal(t, "RSA PRIVATE KEY", block.Type, "Invalid key type")
67+
68+
_, err = x509.ParsePKCS1PrivateKey(block.Bytes)
69+
assert.NoError(t, err, "Failed to parse private key")
70+
}
71+
72+
func TestRSAGeneratePublicKey(t *testing.T) {
73+
priBuf := bytes.NewBuffer(nil)
74+
err := RSAGenerateKey(2048, priBuf)
75+
assert.NoError(t, err)
76+
77+
pubBuf := bytes.NewBuffer(nil)
78+
err = RSAGeneratePublicKey(priBuf.Bytes(), pubBuf)
79+
assert.NoError(t, err)
80+
81+
block, _ := pem.Decode(pubBuf.Bytes())
82+
assert.NotNil(t, block, "Failed to decode public key")
83+
assert.Equal(t, "RSA PUBLIC KEY", block.Type, "Invalid key type")
84+
85+
pubKey, err := x509.ParsePKIXPublicKey(block.Bytes)
86+
assert.NoError(t, err, "Failed to parse public key")
87+
_, ok := pubKey.(*rsa.PublicKey)
88+
assert.True(t, ok, "Key is not an RSA public key")
89+
}

0 commit comments

Comments
 (0)