62 lines
1.5 KiB
C
62 lines
1.5 KiB
C
/***
|
|
* A content id
|
|
*/
|
|
|
|
#ifndef __IPFS_CID_CID_H
|
|
#define __IPFS_CID_CID_H
|
|
|
|
#define CID_PROTOBUF 0x70
|
|
#define CID_CBOR 0x71
|
|
#define CID_RAW 0x72
|
|
#define CID_JSON 0x73
|
|
#define CID_ETHEREUM_BLOCK 0x90
|
|
#define CID_ETHEREUM_TX 0x91
|
|
#define CID_BITCOIN_BLOCK 0xb0
|
|
#define CID_BITCOIN_TX 0xb1
|
|
#define CID_ZCASH_BLOCK 0xc0
|
|
#define CID_ZCASH_TX 0xc1
|
|
|
|
struct Cid {
|
|
int version;
|
|
char codec;
|
|
unsigned char* hash; // a multihash
|
|
size_t hash_length;
|
|
};
|
|
|
|
|
|
/**
|
|
* Create a new CID based on the given hash
|
|
* @param version the version
|
|
* @param hash the multihash
|
|
* @param hash_length the length of the multihash in bytes
|
|
* @param codec the codec to be used (NOTE: For version 0, this should be CID_PROTOBUF)
|
|
* @param cid where to put the results
|
|
* @returns true(1) on success
|
|
*/
|
|
int cid_new(int version, unsigned char* hash, size_t hash_length, const char codec, struct Cid* cid);
|
|
|
|
/***
|
|
* Free the resources from a Cid
|
|
* @param cid the struct
|
|
* @returns 1
|
|
*/
|
|
int cid_free(struct Cid* cid);
|
|
|
|
/***
|
|
* Fill a Cid struct based on a base 58 encoded string
|
|
* @param incoming the string
|
|
* @param incoming_size the size of the string
|
|
* @cid the Cid struct to fill
|
|
* @return true(1) on success
|
|
*/
|
|
int cid_decode_from_string(const unsigned char* incoming, size_t incoming_length, struct Cid* cid);
|
|
|
|
/***
|
|
* Turn a multibase decoded string of bytes into a Cid struct
|
|
* @param incoming the multibase decoded array
|
|
* @param incoming_size the size of the array
|
|
* @param cid the Cid structure to fill
|
|
*/
|
|
int cid_cast(unsigned char* incoming, size_t incoming_size, struct Cid* cid);
|
|
|
|
#endif
|