Przeglądaj źródła

Merge branch 'mazq-gmverify-0511' into 'release/v2.1.0-beta'

feature(GM单元测试): GM单元测试

See merge request dcuc-tjdsj/duceap-service!7
黄资权 4 lat temu
rodzic
commit
eb7bea1e5e

+ 4 - 4
dcuc-duceap-api/src/main/java/com/dragoninfo/dcuc/duceap/facade/IGmSignFacade.java

@@ -41,19 +41,19 @@ public interface IGmSignFacade {
     /**
      * 国密不可否认性校验
      * @param origin 原文
-     * @param digest 摘要数据
+     * @param sign 签名数据
      * @return
      */
     @GetMapping(value = "sm2Verify")
-    ResponseStatus gmSm2Verify(@RequestParam("origin") String origin, @RequestParam("digest") String digest);
+    ResponseStatus gmSm2Verify(@RequestParam("origin") String origin, @RequestParam("sign") String sign);
 
     /**
      * 国密完整性校验
      * @param origin 原文
-     * @param sign   签名数据
+     * @param digest   摘要数据
      * @return
      */
-    ResponseStatus gmSm3Verify(@RequestParam("origin") String origin, @RequestParam("sign") String sign);
+    ResponseStatus gmSm3Verify(@RequestParam("origin") String origin, @RequestParam("digest") String digest);
 
     /**
      * 国密机密性接口解密

+ 7 - 0
dcuc-duceap-service/pom.xml

@@ -129,6 +129,13 @@
             <artifactId>dcuc-common</artifactId>
         </dependency>
         <!-- 国密加密工具 -->
+        <!-- 单元测试 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- 单元测试 -->
     </dependencies>
     <profiles>
         <profile>

+ 4 - 4
dcuc-duceap-service/src/main/java/com/dragoninfo/dcuc/duceap/facade/GmSignFacade.java

@@ -40,13 +40,13 @@ public class GmSignFacade implements IGmSignFacade {
     }
 
     @Override
-    public ResponseStatus gmSm2Verify(String origin, String digest) {
-        return gmVerifyService.gmSm2Verify(origin,digest);
+    public ResponseStatus gmSm2Verify(String origin, String sign) {
+        return gmVerifyService.gmSm2Verify(origin,sign);
     }
 
     @Override
-    public ResponseStatus gmSm3Verify(String origin, String sign) {
-        return gmVerifyService.gmSm3Verify(origin,sign);
+    public ResponseStatus gmSm3Verify(String origin, String digest) {
+        return gmVerifyService.gmSm3Verify(origin,digest);
     }
 
     @Override

+ 4 - 4
dcuc-duceap-service/src/main/java/com/dragoninfo/dcuc/duceap/service/IGmVerifyService.java

@@ -12,18 +12,18 @@ public interface IGmVerifyService {
     /**
      * 国密不可否认性校验
      * @param origin 原文
-     * @param digest 摘要数据
+     * @param sign 签名数据
      * @return
      */
-    ResponseStatus gmSm2Verify(String origin, String digest);
+    ResponseStatus gmSm2Verify(String origin, String sign);
 
     /**
      * 国密完整性校验
      * @param origin 原文
-     * @param sign   签名数据
+     * @param digest 摘要数据
      * @return
      */
-    ResponseStatus gmSm3Verify(String origin, String sign);
+    ResponseStatus gmSm3Verify(String origin, String digest);
 
     /**
      * 国密机密性接口解密

+ 14 - 7
dcuc-duceap-service/src/main/java/com/dragoninfo/dcuc/duceap/service/impl/CodeGmServiceImpl.java

@@ -16,6 +16,7 @@ import com.dragonsoft.duceap.core.search.enums.SearchOperator;
 import com.dragonsoft.smtools.enums.SM3SignStrategy;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -54,8 +55,8 @@ public class CodeGmServiceImpl implements ICodeGmService {
             }
             String digest = codeGmSign.getDigest();
             String origin = codeRecord.getLabel() + codeRecord.getValue();
-            String summary = sm3SignStrategy.summary(origin);
-            if(!summary.equals(digest)){
+            boolean verify = sm3SignStrategy.verify(origin, digest);
+            if(!verify){
                 throw new GmIntegrityException();
             }
         }
@@ -77,6 +78,7 @@ public class CodeGmServiceImpl implements ICodeGmService {
         return ResponseStatus.success();
     }
 
+    @Transactional
     @Override
     public ResponseStatus codeGmSign(String codeId) {
         List<CodeRecord> codeRecords = CodeInfoUtils.getCodeListByCodeDicId(codeId);
@@ -84,13 +86,18 @@ public class CodeGmServiceImpl implements ICodeGmService {
         ArrayList<CodeRecord> collect = codeRecords.stream()
                 .collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
                         new TreeSet<>(Comparator.comparing(codeRecord -> codeRecord.getLabel() + StrUtil.COMMA + codeRecord.getValue()))), ArrayList::new));
+        List<CodeGmSign> signs = getCodeGmSignByCodeId(codeId);
+        Map<String, CodeGmSign> signMap = signs.stream().collect(Collectors.toMap(item -> item.getCode(), item -> item, (oldOne, lastOne) -> lastOne));
         for (CodeRecord codeRecord : collect) {
-            CodeGmSign codeGmSign = new CodeGmSign();
-            codeGmSign.setCodeId(codeId);
-            codeGmSign.setCode(codeRecord.getValue());
+            CodeGmSign sign = signMap.get(codeRecord.getValue());
+            if(sign == null){
+                sign = new CodeGmSign();
+            }
             String summary = sm3SignStrategy.summary(codeRecord.getLabel() + codeRecord.getValue());
-            codeGmSign.setDigest(summary);
-            codeGmBPO.save(codeGmSign);
+            sign.setCodeId(codeId);
+            sign.setCode(codeRecord.getValue());
+            sign.setDigest(summary);
+            codeGmBPO.saveOrUpdate(sign);
         }
         return ResponseStatus.success();
     }

+ 4 - 4
dcuc-duceap-service/src/main/java/com/dragoninfo/dcuc/duceap/service/impl/GmVerifyServiceImpl.java

@@ -29,8 +29,8 @@ public class GmVerifyServiceImpl implements IGmVerifyService {
     SM4DESStrategy sm4DesStrategy;
 
     @Override
-    public ResponseStatus gmSm2Verify(String origin, String digest) {
-        boolean verify = sm2SignStrategy.verify(origin, digest);
+    public ResponseStatus gmSm2Verify(String origin, String sign) {
+        boolean verify = sm2SignStrategy.verify(origin, sign);
         if(!verify){
             throw  new GmNonRepudiationException();
         }
@@ -38,8 +38,8 @@ public class GmVerifyServiceImpl implements IGmVerifyService {
     }
 
     @Override
-    public ResponseStatus gmSm3Verify(String origin, String sign) {
-        boolean verify = sm3SignStrategy.verify(origin, sign);
+    public ResponseStatus gmSm3Verify(String origin, String digest) {
+        boolean verify = sm3SignStrategy.verify(origin, digest);
         if(!verify){
             throw new GmIntegrityException();
         }

+ 88 - 0
dcuc-duceap-service/src/test/com.dragoninfo.dcuc.duceap/GMSignTest.java

@@ -0,0 +1,88 @@
+package com.dragoninfo.dcuc.duceap;
+
+import com.alibaba.fastjson.JSON;
+import com.dragoninfo.dcuc.duceap.facade.IGmSignFacade;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.smtools.enums.SM2SignStrategy;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author mazq
+ * @date 2021/5/11
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = DcucDceapApplication.class)
+public class GMSignTest {
+
+    private String codeId = "DM_ROLE_LEVEL";
+    private String origin = "部级0";
+    private String digest = "56F1BC32905E350680226324BC27DE7F1F0C49A4A303F7810344165D58712598";
+    private String sign = "3044022058BE9306F6442C8003AABD0FA59F1B5414346384ACEFAFCE9161BB4E580BC99102202681B7E3230016793B6BB257958E398E413455070F59EC1EAD0F657420C367E9";
+    private String encode = "teeR/VVEAq4f35mnSa8pzw==";
+
+    @Autowired
+    IGmSignFacade gmSignFacade;
+
+    @Autowired
+    SM2SignStrategy sm2SignStrategy;
+
+
+    @Test
+    public void gmSm2Sign(){
+        String sign = sm2SignStrategy.sign(origin);
+        System.out.println(sign);
+    }
+
+    @Test
+    public void codeGmCheck(){
+        ResponseStatus responseStatus = gmSignFacade.codeGmCheck(codeId);
+        System.out.println(JSON.toJSONString(responseStatus));
+    }
+
+    @Test
+    public void codeGmCheckCodes(){
+        ResponseStatus responseStatus = gmSignFacade.codeGmCheckCodes(codeId);
+        System.out.println(JSON.toJSONString(responseStatus));
+
+    }
+
+    @Test
+    public void codeGmSign(){
+        ResponseStatus responseStatus = gmSignFacade.codeGmSign(codeId);
+        System.out.println(JSON.toJSONString(responseStatus));
+
+    }
+
+
+    @Test
+    public void gmSm2Verify(){
+        ResponseStatus responseStatus = gmSignFacade.gmSm2Verify(origin, sign);
+        System.out.println(JSON.toJSONString(responseStatus));
+    }
+
+
+    @Test
+    public void gmSm3Verify(){
+        ResponseStatus responseStatus = gmSignFacade.gmSm3Verify(origin, digest);
+        System.out.println(JSON.toJSONString(responseStatus));
+
+    }
+
+    @Test
+    public void gmSm4Encode(){
+        ResponseStatus responseStatus = gmSignFacade.gmSm4Encode(origin);
+        System.out.println(JSON.toJSONString(responseStatus));
+    }
+
+
+    @Test
+    public void gmSm4Decode(){
+        ResponseStatus responseStatus = gmSignFacade.gmSm4Decode(encode);
+        System.out.println(JSON.toJSONString(responseStatus));
+    }
+
+}

+ 0 - 1
pom.xml

@@ -87,7 +87,6 @@
                 <version>2.0.0-SNAPSHOT</version>
             </dependency>
         </dependencies>
-
     </dependencyManagement>
 
     <!--指定仓库地址-->