private NewPubKeyPayload GenarateStorePayload(PublicKeyStoreDto publicKeyDto) { var dataHashHex = publicKeyDto.EntityData.Sha512Digest().BytesToHexString(); byte[] dataHashBytes = Encoding.UTF8.GetBytes(dataHashHex); var hashSignature = publicKeyDto.KeyPair.GetCryptoServiceProvider().SignData(dataHashBytes, HASH_ALGORITHM); return(new NewPubKeyPayload { EntityType = NewPubKeyPayload.Types.EntityType.Personal, PublicKeyType = NewPubKeyPayload.Types.PubKeyType.Rsa, EntityHash = dataHashBytes.BytesToHexString(), EntityHashSignature = hashSignature.BytesToHexString(), PublicKey = publicKeyDto.KeyPair.GetPublicKeyPem(), ValidFrom = publicKeyDto.ValidityFrom, ValidTo = publicKeyDto.ValidityTo }); }
public async Task <BaseTransactionResponse> Store(PublicKeyStoreDto publicKeyDto) { var storePayload = GenarateStorePayload(publicKeyDto); var remmeTransaction = _remmeTransactionService.GetTransactionPayload(storePayload, 0); var nodeStoragePublicKey = (await _remmeTransactionService.GetNodeConfig()).StoragePublicKey; var pubKeyAddress = REMChainUtils.GetAddressFromData(publicKeyDto.KeyPair.GetPublicKeyPem(), FAMILY_NAME); var inputsOutputs = _remmeTransactionService.GetDataInputOutput(pubKeyAddress); inputsOutputs.Add(REMChainUtils.GetSettingsAddressFromData("remme.economy_enabled")); inputsOutputs.Add(REMChainUtils.GetSettingsAddressFromData("remme.settings.storage_pub_key")); inputsOutputs.Add(REMChainUtils.GetAddressFromData(nodeStoragePublicKey, RemmeAccount.ACCOUNT_FAMILY_NAME)); var transactionDto = _remmeTransactionService.GenerateTransactionDto( remmeTransaction, inputsOutputs, FAMILY_NAME, FAMILY_VERSION); var resultTrans = await _remmeTransactionService.CreateTransaction(transactionDto); return(await _remmeTransactionService.SendTransaction(resultTrans)); }