code: @Override
  	public byte[] decrypt(byte[] data, KeyType keyType) throws CryptoException {
  		if (KeyType.PrivateKey != keyType) {
  			throw new IllegalArgumentException("Decrypt is only support by private key");
  		}
  		ckeckKey(keyType);
  
  		lock.lock();
  		final SM2Engine engine = getEngine();
  		try {
  			engine.init(false, getCipherParameters(keyType));
  			return engine.processBlock(data, 0, data.length);
  		} finally {
  			lock.unlock();
  		}
  	}
docs: 解密
  
  @param data SM2密文，实际包含三部分：ECC公钥、真正的密文、公钥和原文的SM3-HASH值
  @param keyType 私钥或公钥 {@link KeyType}
  @return 加密后的bytes
  @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常