# 结构实现代码
···
#define TFM_DESC
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "tfm.h"
#include "tomcrypt.h"
unsigned char *get_private(unsigned int *length)
{
prng_state random;
ecc_key key;
unsigned char *buffer;
buffer = malloc(*length = 1000);
ecc_make_key(&random, find_prng("sprng"), 32, &key);
ecc_export(buffer, length, PK_PRIVATE, &key);
return buffer;
}
unsigned char *get_public(unsigned int *length, unsigned char *private)
{
ecc_key key;
unsigned char *buffer;
ecc_import(private, *length, &key);
buffer = malloc(*length = 1000);
ecc_export(buffer, length, PK_PUBLIC, &key);
return buffer;
}
void write_file(char *path, char *substance, int length)
{
FILE *file;
file = fopen(path, "w");
fwrite(substance, 1, length, file);
fclose(file);
}
int string_measure(char *buffer)
{
int *_4721;
_4721 = (int *) (buffer - 4);
return *_4721;
}
uint8_t *create_input(uint32_t index, uint8_t *public, uint8_t *signature, uint8_t *transaction)
{
uint8_t *result;
uint32_t a, b, c;
result = malloc(48 + string_measure(public) + string_measure(signature));
a = 48 + string_measure(public) + string_measure(signature);
b = string_measure(public);
c = string_measure(signature);
memcpy(result, &a, 4);
memcpy(result + 4, &index, 4);
memcpy(result + 8, &b, 4);
memcpy(result + 12, public, b);
memcpy(result + 12 + b, &c, 4);
memcpy(result + 16 + b, signature, c);
memcpy(result + 16 + b + c, transaction, 32);
return result;
}
uint8_t *create_output(uint8_t *address, uint64_t amount)
{
uint8_t *result;
uint32_t a, b;
result = malloc(16 + string_measure(address));
a = 16 + string_measure(address);
b = string_measure(address);
memcpy(result, &a, 4);
memcpy(result + 4, &b, 4);
memcpy(result + 8, address, b);
memcpy(result + 8 + b, &amount, 8);
return result;
}
uint8_t *create_head(uint8_t *current, uint32_t nonce, uint8_t *previous, uint8_t *target, uint32_t time, uint32_t valence)
{
uint8_t *result;
result = malloc(108);
memcpy(result, current, 32);
memcpy(result + 32, &nonce, 4);
memcpy(result + 36, previous, 32);
memcpy(result + 68, target, 32);
memcpy(result + 100, &time, 4);
memcpy(result + 104, &valence, 4);
return result;
}
int main(int count, char **arguments)
{
ltc_mp = tfm_desc;
register_prng(&sprng_desc);
register_hash(&sha256_desc);
char *private, *legible, *public;
int length, outlength;
legible = malloc(outlength = 1000);
private = get_private(&length);
base64_encode(private, length, legible, &outlength);
legible[outlength] = 0;
printf("%s%c%c", legible, 10, 10);
public = get_public(&length, private);
base64_encode(public, length, legible, &outlength);
legible[outlength] = 0;
printf("%s%c", legible, 10);
return 0;
}
···