gmsm/cfca/pkcs7_sign_test.go
2024-12-13 18:16:08 +08:00

92 lines
4.1 KiB
Go

// Copyright 2024 Sun Yimin. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cfca
import (
"encoding/base64"
"testing"
)
func TestSignMessageAttach(t *testing.T) {
_, err := SignMessageAttach(nil, nil, nil)
if err == nil {
t.Fatalf("SignMessageAttach() error = %v, wantErr %v", err, true)
}
pair, err := createTestSM2Certificate(false)
if err != nil {
t.Fatal(err)
}
_, err = SignMessageAttach([]byte("test"), pair.Certificate, nil)
if err == nil {
t.Fatalf("SignMessageAttach() error = %v, wantErr %v", err, true)
}
p7, err := SignMessageAttach([]byte("test"), pair.Certificate, pair.PrivateKey)
if err != nil {
t.Fatal(err)
}
p7[0] = 0x20
err = VerifyMessageAttach(p7)
if err == nil {
t.Fatalf("VerifyMessageAttach() error = %v, wantErr %v", err, true)
}
p7[0] = 0x30
err = VerifyMessageAttach(p7)
if err != nil {
t.Fatal(err)
}
p7, _ = base64.StdEncoding.DecodeString(sadkSignedData)
err = VerifyMessageAttach(p7)
if err != nil {
t.Fatal(err)
}
}
func TestSignMessageDetach(t *testing.T) {
_, err := SignMessageDetach(nil, nil, nil)
if err == nil {
t.Fatalf("SignMessageAttach() error = %v, wantErr %v", err, true)
}
pair, err := createTestSM2Certificate(false)
if err != nil {
t.Fatal(err)
}
_, err = SignMessageDetach([]byte("test"), pair.Certificate, nil)
if err == nil {
t.Fatalf("SignMessageAttach() error = %v, wantErr %v", err, true)
}
p7, err := SignMessageDetach([]byte("test"), pair.Certificate, pair.PrivateKey)
if err != nil {
t.Fatal(err)
}
p7[0] = 0x20
err = VerifyMessageDetach(p7, []byte("test"))
if err == nil {
t.Fatalf("VerifyMessageAttach() error = %v, wantErr %v", err, true)
}
p7[0] = 0x30
err = VerifyMessageDetach(p7, []byte("test"))
if err != nil {
t.Fatal(err)
}
err = VerifyMessageDetach(p7, []byte("test 1"))
if err == nil || err.Error() != "x509: SM2 verification failure" {
t.Fatalf("VerifyMessageAttach() error = %v, wantErr %v", err, true)
}
err = VerifyMessageDetach(p7, nil)
if err == nil || err.Error() != "x509: SM2 verification failure" {
t.Fatalf("VerifyMessageAttach() error = %v, wantErr %v", err, true)
}
p7, _ = base64.StdEncoding.DecodeString(sadkSignedDataDetach)
err = VerifyMessageDetach(p7, []byte("Hello Secret World!"))
if err != nil {
t.Fatal(err)
}
}
var sadkSignedData = "MIICgAYKKoEcz1UGAQQCAqCCAnAwggJsAgEBMQ4wDAYIKoEcz1UBgxEFADAjBgoqgRzPVQYBBAIBoBUEE0hlbGxvIFNlY3JldCBXb3JsZCGgggGNMIIBiTCCAS+gAwIBAgIFAKncGpAwCgYIKoEcz1UBg3UwKTEQMA4GA1UEChMHQWNtZSBDbzEVMBMGA1UEAxMMRWRkYXJkIFN0YXJrMB4XDTI0MTExOTAwMTIyNVoXDTI1MTExOTAwMTIyNlowJTEQMA4GA1UEChMHQWNtZSBDbzERMA8GA1UEAxMISm9uIFNub3cwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATYcgrHXJmFO1/t/9WQ6GkCW6D0yDyd2ya5wRXjVAU08I9Oo6k99jB2MPauCn64W81APRCPHLlwWOtuIsmSmQhjo0gwRjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYDVR0jBBgwFoAUyBfYaeGJxaf9ST9aCRgotC+MwvwwCgYIKoEcz1UBg3UDSAAwRQIgRaF0PA74cCYKeu8pZ4VDQti+rE283Hq/tGXzXUzOWKUCIQDl3z1boZxtRscbnOGOXg1NY+yoY2lz5b63kGOTkn/SxzGBoDCBnQIBATAyMCkxEDAOBgNVBAoTB0FjbWUgQ28xFTATBgNVBAMTDEVkZGFyZCBTdGFyawIFAKncGpAwDAYIKoEcz1UBgxEFADANBgkqgRzPVQGCLQEFAARHMEUCIQCl145xtYc7QWTymATxUGbLfF1mlPlyMoIKSp9alu14UQIgQSV/Ll3yYCyXSNxhPelz8Nsbxopky+Pt56Al54rv3p0="
var sadkSignedDataDetach = "MIICaQYKKoEcz1UGAQQCAqCCAlkwggJVAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIIBjTCCAYkwggEvoAMCAQICBQCp3BqQMAoGCCqBHM9VAYN1MCkxEDAOBgNVBAoTB0FjbWUgQ28xFTATBgNVBAMTDEVkZGFyZCBTdGFyazAeFw0yNDExMTkwMDEyMjVaFw0yNTExMTkwMDEyMjZaMCUxEDAOBgNVBAoTB0FjbWUgQ28xETAPBgNVBAMTCEpvbiBTbm93MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE2HIKx1yZhTtf7f/VkOhpAlug9Mg8ndsmucEV41QFNPCPTqOpPfYwdjD2rgp+uFvNQD0Qjxy5cFjrbiLJkpkIY6NIMEYwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFMgX2GnhicWn/Uk/WgkYKLQvjML8MAoGCCqBHM9VAYN1A0gAMEUCIEWhdDwO+HAmCnrvKWeFQ0LYvqxNvNx6v7Rl811MzlilAiEA5d89W6GcbUbHG5zhjl4NTWPsqGNpc+W+t5Bjk5J/0scxgaAwgZ0CAQEwMjApMRAwDgYDVQQKEwdBY21lIENvMRUwEwYDVQQDEwxFZGRhcmQgU3RhcmsCBQCp3BqQMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAERzBFAiEA4ylCl8qQDfNDfBw7VkxVN0bUs4N56TZDqZhAdEv01N8CIDtOG5VbmWNZeagC8VRfzEhu+ratFCo3fTu2liV8kH5h"