本文不对SM2做过多的介绍,主要介绍java bouncycastle库关于SM2的相关API的使用及注意事项
1. SM2 签名:
注意:
1)签名格式ASN1(描述了一种对数据进行表示、编码、传输和解码的数据格式),包括两个大整数。
2)注意USER_ID的一致性(规范默认是"1234567812345678"),否则影响验签。
主要代码
SM2Signer localSM2Signer = newSM2Signer();
Security.addProvider(newBouncyCastleProvider());
PublicKey publicKey=cert.getPublicKey();
ECPublicKeyParameters param= null;if (publicKey instanceofBCECPublicKey)
{
BCECPublicKey localECPublicKey=(BCECPublicKey)publicKey;
ECParameterSpec localECParameterSpec=localECPublicKey.getParameters();
ECDomainParameters localECDomainParameters= newECDomainParameters(localECParameterSpec.getCurve(),
localECParameterSpec.getG(), localECParameterSpec.getN());
param= newECPublicKeyParameters(localECPublicKey.getQ(),localECDomainParameters);