|
|
|
|
@ -27,6 +27,9 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
private String centralBankSignature;
|
|
|
|
|
private String confirmationTime;
|
|
|
|
|
private String confirmationMessage;
|
|
|
|
|
private String submittedPublicKey;
|
|
|
|
|
private String submittedPrivateKey;
|
|
|
|
|
private String userInputOriginalText;
|
|
|
|
|
private Status status;
|
|
|
|
|
|
|
|
|
|
private CurrencyGenerationVerification(Long id, long requestId, String requestMessage,
|
|
|
|
|
@ -37,7 +40,8 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
BigDecimal usedQuota, BigDecimal remainingQuota,
|
|
|
|
|
Boolean quotaSufficient, String centralBankKeyId,
|
|
|
|
|
String centralBankSignature, String confirmationTime,
|
|
|
|
|
String confirmationMessage, Status status) {
|
|
|
|
|
String confirmationMessage, String submittedPublicKey,
|
|
|
|
|
String submittedPrivateKey, String userInputOriginalText, Status status) {
|
|
|
|
|
this.id = id;
|
|
|
|
|
this.requestId = requestId;
|
|
|
|
|
this.requestMessage = requestMessage;
|
|
|
|
|
@ -57,6 +61,9 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
this.centralBankSignature = centralBankSignature;
|
|
|
|
|
this.confirmationTime = confirmationTime;
|
|
|
|
|
this.confirmationMessage = confirmationMessage;
|
|
|
|
|
this.submittedPublicKey = submittedPublicKey;
|
|
|
|
|
this.submittedPrivateKey = submittedPrivateKey;
|
|
|
|
|
this.userInputOriginalText = userInputOriginalText;
|
|
|
|
|
this.status = status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -70,7 +77,7 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
}
|
|
|
|
|
return new CurrencyGenerationVerification(null, requestId, requestMessage, requestOriginalText,
|
|
|
|
|
requestDigest, bankSignature, bankKeyId, amount, null, null, null, null, null, null,
|
|
|
|
|
null, null, null, null, null, Status.RECEIVED);
|
|
|
|
|
null, null, null, null, null, null, null, null, Status.RECEIVED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static CurrencyGenerationVerification restore(Long id, long requestId, String requestMessage,
|
|
|
|
|
@ -81,11 +88,14 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
BigDecimal usedQuota, BigDecimal remainingQuota,
|
|
|
|
|
Boolean quotaSufficient, String centralBankKeyId,
|
|
|
|
|
String centralBankSignature, String confirmationTime,
|
|
|
|
|
String confirmationMessage, Status status) {
|
|
|
|
|
String confirmationMessage, String submittedPublicKey,
|
|
|
|
|
String submittedPrivateKey, String userInputOriginalText,
|
|
|
|
|
Status status) {
|
|
|
|
|
return new CurrencyGenerationVerification(id, requestId, requestMessage, requestOriginalText, requestDigest,
|
|
|
|
|
bankSignature, bankKeyId, amount, signatureValid, recomputedDigest, digestMatches, totalQuota,
|
|
|
|
|
usedQuota, remainingQuota, quotaSufficient, centralBankKeyId, centralBankSignature,
|
|
|
|
|
confirmationTime, confirmationMessage, status);
|
|
|
|
|
confirmationTime, confirmationMessage, submittedPublicKey, submittedPrivateKey,
|
|
|
|
|
userInputOriginalText, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void receiveAgain() {
|
|
|
|
|
@ -100,21 +110,26 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
centralBankSignature = null;
|
|
|
|
|
confirmationTime = null;
|
|
|
|
|
confirmationMessage = null;
|
|
|
|
|
submittedPublicKey = null;
|
|
|
|
|
submittedPrivateKey = null;
|
|
|
|
|
userInputOriginalText = null;
|
|
|
|
|
status = Status.RECEIVED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void verifySignature(boolean valid) {
|
|
|
|
|
public void verifySignature(boolean valid, String publicKey) {
|
|
|
|
|
requireBeforeDigestMatch("第二公钥SM2验证");
|
|
|
|
|
if (!valid) throw new IllegalArgumentException("商业银行SM2签名验证未通过");
|
|
|
|
|
signatureValid = true;
|
|
|
|
|
submittedPublicKey = publicKey;
|
|
|
|
|
status = recomputedDigest == null ? Status.SIGNATURE_VERIFIED : Status.DIGEST_CALCULATED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void calculateDigest(String digest) {
|
|
|
|
|
public void calculateDigest(String digest, String userInputOriginalText) {
|
|
|
|
|
if (digest == null || !digest.matches("[0-9A-F]{64}")) {
|
|
|
|
|
throw new IllegalArgumentException("重新计算的摘要一格式不正确");
|
|
|
|
|
}
|
|
|
|
|
recomputedDigest = digest;
|
|
|
|
|
this.userInputOriginalText = userInputOriginalText;
|
|
|
|
|
digestMatches = null;
|
|
|
|
|
if (isBefore(Status.DIGEST_CALCULATED)) {
|
|
|
|
|
status = Status.DIGEST_CALCULATED;
|
|
|
|
|
@ -145,7 +160,7 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void confirm(String keyId, String signature, String time) {
|
|
|
|
|
public void confirm(String keyId, String signature, String time, String privateKey) {
|
|
|
|
|
if (!Boolean.TRUE.equals(quotaSufficient)) {
|
|
|
|
|
throw new IllegalStateException("请先完成额度检查");
|
|
|
|
|
}
|
|
|
|
|
@ -155,6 +170,7 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
centralBankKeyId = keyId;
|
|
|
|
|
centralBankSignature = signature;
|
|
|
|
|
confirmationTime = time;
|
|
|
|
|
submittedPrivateKey = privateKey;
|
|
|
|
|
status = Status.CONFIRMED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -211,5 +227,8 @@ public class CurrencyGenerationVerification {
|
|
|
|
|
public String getCentralBankSignature() { return centralBankSignature; }
|
|
|
|
|
public String getConfirmationTime() { return confirmationTime; }
|
|
|
|
|
public String getConfirmationMessage() { return confirmationMessage; }
|
|
|
|
|
public String getSubmittedPublicKey() { return submittedPublicKey; }
|
|
|
|
|
public String getSubmittedPrivateKey() { return submittedPrivateKey; }
|
|
|
|
|
public String getUserInputOriginalText() { return userInputOriginalText; }
|
|
|
|
|
public Status getStatus() { return status; }
|
|
|
|
|
}
|
|
|
|
|
|