docs: public byte[] sign(byte[] data, byte[] id) {
  		lock.lock();
  		final SM2Signer signer = getSigner();
  		try {
  			CipherParameters param = new ParametersWithRandom(getCipherParameters(KeyType.PrivateKey));
  			if (id != null) {
  				param = new ParametersWithID(param, id);
  			}
  			signer.init(true, param);
  			signer.update(data, 0, data.length);
  			return signer.generateSignature();
  		} catch (Exception e) {
  			throw new CryptoException(e);
  		} finally {
  			lock.unlock();
  		}
  	}