| @@ -16,10 +16,7 @@ import com.jd.blockchain.ledger.*; | |||||
| import com.jd.blockchain.sdk.BlockchainService; | import com.jd.blockchain.sdk.BlockchainService; | ||||
| import com.jd.blockchain.sdk.BlockchainServiceFactory; | import com.jd.blockchain.sdk.BlockchainServiceFactory; | ||||
| import com.jd.blockchain.sdk.proxy.HttpBlockchainQueryService; | import com.jd.blockchain.sdk.proxy.HttpBlockchainQueryService; | ||||
| import com.jd.blockchain.transaction.BlockchainQueryService; | |||||
| import com.jd.blockchain.transaction.DigitalSignatureBlob; | |||||
| import com.jd.blockchain.transaction.TransactionService; | |||||
| import com.jd.blockchain.transaction.TxRequestMessage; | |||||
| import com.jd.blockchain.transaction.*; | |||||
| import com.jd.blockchain.utils.http.agent.HttpServiceAgent; | import com.jd.blockchain.utils.http.agent.HttpServiceAgent; | ||||
| import com.jd.blockchain.utils.http.agent.ServiceConnection; | import com.jd.blockchain.utils.http.agent.ServiceConnection; | ||||
| import com.jd.blockchain.utils.http.agent.ServiceConnectionManager; | import com.jd.blockchain.utils.http.agent.ServiceConnectionManager; | ||||
| @@ -163,15 +160,20 @@ public class GatewayServiceFactory implements BlockchainServiceFactory, Closeabl | |||||
| //TODO: 未实现按不同的账本的密码参数配置,采用不同的哈希算法和签名算法; | //TODO: 未实现按不同的账本的密码参数配置,采用不同的哈希算法和签名算法; | ||||
| if (!reqMsg.containsEndpointSignature(userKey.getAddress())) { | if (!reqMsg.containsEndpointSignature(userKey.getAddress())) { | ||||
| // TODO: 优化上下文对此 TransactionContent 的多次序列化带来的额外性能开销; | // TODO: 优化上下文对此 TransactionContent 的多次序列化带来的额外性能开销; | ||||
| byte[] txContentBytes = BinaryProtocol.encode(txRequest.getTransactionContent(), | |||||
| TransactionContent.class); | |||||
| PrivKey userPrivKey = userKey.getPrivKey(); | |||||
| SignatureFunction signatureFunction = Crypto.getSignatureFunction(userKey.getAlgorithm()); | |||||
| if (signatureFunction != null) { | |||||
| SignatureDigest signatureDigest = signatureFunction.sign(userPrivKey, txContentBytes); | |||||
| DigitalSignature signature = new DigitalSignatureBlob(userKey.getPubKey(), signatureDigest); | |||||
| reqMsg.addEndpointSignatures(signature); | |||||
| } | |||||
| DigitalSignature signature = SignatureUtils.sign(txRequest.getTransactionContent(), userKey); | |||||
| reqMsg.addEndpointSignatures(signature); | |||||
| // | |||||
| // | |||||
| // | |||||
| // byte[] txContentBytes = BinaryProtocol.encode(txRequest.getTransactionContent(), | |||||
| // TransactionContent.class); | |||||
| // PrivKey userPrivKey = userKey.getPrivKey(); | |||||
| // SignatureFunction signatureFunction = Crypto.getSignatureFunction(userKey.getAlgorithm()); | |||||
| // if (signatureFunction != null) { | |||||
| // SignatureDigest signatureDigest = signatureFunction.sign(userPrivKey, txContentBytes); | |||||
| // DigitalSignature signature = new DigitalSignatureBlob(userKey.getPubKey(), signatureDigest); | |||||
| // reqMsg.addEndpointSignatures(signature); | |||||
| // } | |||||
| } | } | ||||
| return innerService.process(txRequest); | return innerService.process(txRequest); | ||||
| } | } | ||||