First commit on a late git install
This commit is contained in:
95
examples/simple_keygen.c
Normal file
95
examples/simple_keygen.c
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Simple Key Generation Example
|
||||
*
|
||||
* This example demonstrates basic NOSTR key generation using the nostr_core library.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "nostr_core.h"
|
||||
|
||||
int main() {
|
||||
printf("NOSTR Core Library - Simple Key Generation Example\n");
|
||||
printf("==================================================\n\n");
|
||||
|
||||
// Initialize the library
|
||||
if (nostr_init() != NOSTR_SUCCESS) {
|
||||
fprintf(stderr, "Failed to initialize NOSTR core library\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("✓ NOSTR core library initialized\n\n");
|
||||
|
||||
// Generate a random keypair
|
||||
unsigned char private_key[NOSTR_PRIVATE_KEY_SIZE];
|
||||
unsigned char public_key[NOSTR_PUBLIC_KEY_SIZE];
|
||||
|
||||
printf("Generating random NOSTR keypair...\n");
|
||||
int result = nostr_generate_keypair(private_key, public_key);
|
||||
|
||||
if (result != NOSTR_SUCCESS) {
|
||||
fprintf(stderr, "Failed to generate keypair: %s\n", nostr_strerror(result));
|
||||
nostr_cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Convert keys to hex format
|
||||
char private_hex[NOSTR_HEX_KEY_SIZE];
|
||||
char public_hex[NOSTR_HEX_KEY_SIZE];
|
||||
|
||||
nostr_bytes_to_hex(private_key, NOSTR_PRIVATE_KEY_SIZE, private_hex);
|
||||
nostr_bytes_to_hex(public_key, NOSTR_PUBLIC_KEY_SIZE, public_hex);
|
||||
|
||||
// Convert keys to bech32 format
|
||||
char nsec_bech32[NOSTR_BECH32_KEY_SIZE];
|
||||
char npub_bech32[NOSTR_BECH32_KEY_SIZE];
|
||||
|
||||
if (nostr_key_to_bech32(private_key, "nsec", nsec_bech32) != NOSTR_SUCCESS ||
|
||||
nostr_key_to_bech32(public_key, "npub", npub_bech32) != NOSTR_SUCCESS) {
|
||||
fprintf(stderr, "Failed to convert keys to bech32 format\n");
|
||||
nostr_cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Display the generated keys
|
||||
printf("✓ Keypair generated successfully!\n\n");
|
||||
printf("Private Key (hex): %s\n", private_hex);
|
||||
printf("Public Key (hex): %s\n", public_hex);
|
||||
printf("nsec (bech32): %s\n", nsec_bech32);
|
||||
printf("npub (bech32): %s\n", npub_bech32);
|
||||
|
||||
printf("\n=== Key Validation Test ===\n");
|
||||
|
||||
// Test key validation by decoding the generated nsec
|
||||
unsigned char decoded_private_key[NOSTR_PRIVATE_KEY_SIZE];
|
||||
result = nostr_decode_nsec(nsec_bech32, decoded_private_key);
|
||||
|
||||
if (result == NOSTR_SUCCESS) {
|
||||
printf("✓ nsec validation: PASSED\n");
|
||||
|
||||
// Verify the decoded key matches the original
|
||||
int keys_match = 1;
|
||||
for (int i = 0; i < NOSTR_PRIVATE_KEY_SIZE; i++) {
|
||||
if (private_key[i] != decoded_private_key[i]) {
|
||||
keys_match = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (keys_match) {
|
||||
printf("✓ Key consistency: PASSED\n");
|
||||
} else {
|
||||
printf("✗ Key consistency: FAILED\n");
|
||||
}
|
||||
} else {
|
||||
printf("✗ nsec validation: FAILED (%s)\n", nostr_strerror(result));
|
||||
}
|
||||
|
||||
// Cleanup
|
||||
nostr_cleanup();
|
||||
|
||||
printf("\nExample completed successfully!\n");
|
||||
printf("You can now use these keys with NOSTR applications.\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user