密钥管理接口

This commit is contained in:
liulu
2024-10-30 15:29:04 +08:00
parent b6ff674d0b
commit f4030f9265
34 changed files with 3052 additions and 39 deletions
@@ -4,22 +4,18 @@ package com.sunyard.chsm.sdf;
import com.sunyard.chsm.sdf.model.EccKey;
import com.sunyard.chsm.sdf.model.EccPriKey;
import com.sunyard.chsm.sdf.model.EccPubKey;
import com.sunyard.chsm.utils.gm.BCSM2Utils;
import com.sunyard.chsm.utils.gm.BCSM3Utils;
import lombok.SneakyThrows;
import org.bouncycastle.asn1.gm.GMNamedCurves;
import org.bouncycastle.asn1.gm.GMObjectIdentifiers;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.spec.ECParameterSpec;
import org.bouncycastle.util.BigIntegers;
import org.springframework.stereotype.Service;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
/**
@@ -40,17 +36,8 @@ public class BCSdfApiService implements SdfApiService {
@SneakyThrows
@Override
public EccKey genKeyPairEcc() {
// 获取SM2参数
X9ECParameters sm2Params = GMNamedCurves.getByOID(GMObjectIdentifiers.sm2p256v1);
ECParameterSpec sm2Spec = new ECParameterSpec(sm2Params.getCurve(), sm2Params.getG(), sm2Params.getN(), sm2Params.getH());
// 创建密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", BouncyCastleProvider.PROVIDER_NAME);
keyPairGenerator.initialize(sm2Spec);
// 生成密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();
KeyPair keyPair = BCSM2Utils.generateKeyPair();
BCECPublicKey pubKey = (BCECPublicKey) keyPair.getPublic();
BCECPrivateKey priKey = (BCECPrivateKey) keyPair.getPrivate();
byte[] x = pubKey.getQ().getXCoord().getEncoded();
@@ -84,11 +71,17 @@ public class BCSdfApiService implements SdfApiService {
@Override
public byte[] hash(byte[] pucData) {
SM3Digest digest = new SM3Digest();
digest.update(pucData, 0, pucData.length);
byte[] hash = new byte[digest.getDigestSize()];
digest.doFinal(hash, 0);
return hash;
return BCSM3Utils.hash(pucData);
}
@Override
public byte[] encryptByMKNoPadding(byte[] data) {
return data;
}
@Override
public byte[] decryptByMKNoPadding(byte[] data) {
return data;
}
}
@@ -54,4 +54,7 @@ public interface SdfApiService {
byte[] hash(byte[] pucData);
byte[] encryptByMKNoPadding(byte[] data);
byte[] decryptByMKNoPadding(byte[] data);
}