public Signature(byte[] data) throws Exception { if (data == null) { throw new SDKException(ErrorCode.ParamError); } if (data.length < 2) { throw new Exception(ErrorCode.InvalidSignatureDataLen); } this.scheme = SignatureScheme.values()[data[0]]; if (scheme == SignatureScheme.SM3WITHSM2) { int i = 0; while (i < data.length && data[i] != 0){ i++; } if (i >= data.length) { throw new Exception(ErrorCode.InvalidSignatureData); } this.param = new SM2ParameterSpec(Arrays.copyOfRange(data, 1, i)); this.value = Arrays.copyOfRange(data, i + 1, data.length); } else { this.value = Arrays.copyOfRange(data, 1, data.length); } }
public Signature(byte[] data) throws Exception { if (data == null) { throw new SDKException(ErrorCode.ParamError); } if (data.length < 2) { throw new Exception(ErrorCode.InvalidSignatureDataLen); } this.scheme = SignatureScheme.values()[data[0]]; if (scheme == SignatureScheme.SM3WITHSM2) { int i = 0; while (i < data.length && data[i] != 0){ i++; } if (i >= data.length) { throw new Exception(ErrorCode.InvalidSignatureData); } this.param = new SM2ParameterSpec(Arrays.copyOfRange(data, 1, i)); this.value = Arrays.copyOfRange(data, i + 1, data.length); } else { this.value = Arrays.copyOfRange(data, 1, data.length); } }
public byte[] generateSignature(byte[] msg, SignatureScheme scheme, Object param) throws Exception { if (msg == null || msg.length == 0) { throw new Exception(ErrorCode.InvalidMessage); } if (this.privateKey == null) { throw new Exception(ErrorCode.WithoutPrivate); } SignatureHandler ctx = new SignatureHandler(keyType, signatureScheme); AlgorithmParameterSpec paramSpec = null; if (signatureScheme == SignatureScheme.SM3WITHSM2) { if (param instanceof String) { paramSpec = new SM2ParameterSpec(Strings.toByteArray((String) param)); } else if (param == null) { paramSpec = new SM2ParameterSpec("1234567812345678".getBytes()); } else { throw new Exception(ErrorCode.InvalidSM2Signature); } } byte[] signature = new Signature( signatureScheme, paramSpec, ctx.generateSignature(privateKey, msg, paramSpec) ).toBytes(); return signature; }
public byte[] generateSignature(byte[] msg, SignatureScheme scheme, Object param) throws Exception { if (msg == null || msg.length == 0) { throw new Exception(ErrorCode.InvalidMessage); } if (this.privateKey == null) { throw new Exception(ErrorCode.WithoutPrivate); } SignatureHandler ctx = new SignatureHandler(keyType, signatureScheme); AlgorithmParameterSpec paramSpec = null; if (signatureScheme == SignatureScheme.SM3WITHSM2) { if (param instanceof String) { paramSpec = new SM2ParameterSpec(Strings.toByteArray((String) param)); } else if (param == null) { paramSpec = new SM2ParameterSpec("1234567812345678".getBytes()); } else { throw new Exception(ErrorCode.InvalidSM2Signature); } } byte[] signature = new Signature( signatureScheme, paramSpec, ctx.generateSignature(privateKey, msg, paramSpec) ).toBytes(); return signature; }