c-ipfs/include/ipfs/repo/config/identity.h

47 lines
1.3 KiB
C
Raw Permalink Normal View History

//
// identity.h
// c-ipfs
//
// Created by John Jones on 10/27/16.
// Copyright © 2016 JMJAtlanta. All rights reserved.
//
#ifndef __REPO_CONFIG_IDENTITY_H__
#define __REPO_CONFIG_IDENTITY_H__
2016-11-03 15:22:17 +00:00
#include "libp2p/crypto/rsa.h"
struct Identity {
char* peer_id; // a pretty-printed hash of the public key
2016-11-03 15:22:17 +00:00
struct RsaPrivateKey private_key; // a private key
};
/***
* initializes a new keypair, and puts it in the Identity struct
*/
int repo_config_identity_init(struct Identity* identity, unsigned long num_bits_for_keypair);
/***
* Build a RsaPrivateKey struct from a base64 string of the private key
* @param identity where to put the new struct
* @param base64 the base 64 encoded private key in DER format
* @returns true(1) on success
*/
int repo_config_identity_build_private_key(struct Identity* identity, const char* base64);
/***
* Frees resources held by Identity
* @param identity the identity that we're cleaning up
* @returns true(0)
*/
int repo_config_identity_free(struct Identity* identity);
/***
* Initializes a new identity struct that will need to be identity_free'd
* @param identity the identity to allocate memory for
* @returns true(1) on success
*/
int repo_config_identity_new(struct Identity** identity);
#endif /* identity_h */