First commit on a late git install
This commit is contained in:
57
examples/mnemonic_derivation.c
Normal file
57
examples/mnemonic_derivation.c
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Example: Key Derivation from Existing Mnemonic
|
||||
* Demonstrates nostr_derive_keys_from_mnemonic()
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "nostr_core.h"
|
||||
|
||||
int main() {
|
||||
printf("=== NOSTR Key Derivation from Mnemonic Example ===\n\n");
|
||||
|
||||
// Initialize the library
|
||||
if (nostr_init() != NOSTR_SUCCESS) {
|
||||
fprintf(stderr, "Failed to initialize NOSTR library\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Use a well-known test mnemonic
|
||||
const char* test_mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
|
||||
|
||||
printf("Using test mnemonic: %s\n\n", test_mnemonic);
|
||||
|
||||
// Derive keys for multiple accounts
|
||||
for (int account = 0; account < 3; account++) {
|
||||
unsigned char private_key[NOSTR_PRIVATE_KEY_SIZE];
|
||||
unsigned char public_key[NOSTR_PUBLIC_KEY_SIZE];
|
||||
|
||||
int result = nostr_derive_keys_from_mnemonic(test_mnemonic, account,
|
||||
private_key, public_key);
|
||||
if (result != NOSTR_SUCCESS) {
|
||||
fprintf(stderr, "Failed to derive keys for account %d: %s\n",
|
||||
account, nostr_strerror(result));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Convert to bech32 format
|
||||
char nsec[NOSTR_BECH32_KEY_SIZE];
|
||||
char npub[NOSTR_BECH32_KEY_SIZE];
|
||||
|
||||
nostr_key_to_bech32(private_key, "nsec", nsec);
|
||||
nostr_key_to_bech32(public_key, "npub", npub);
|
||||
|
||||
// Display results for this account
|
||||
printf("Account %d (m/44'/1237'/%d'/0/0):\n", account, account);
|
||||
printf(" nsec: %s\n", nsec);
|
||||
printf(" npub: %s\n", npub);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// Cleanup
|
||||
nostr_cleanup();
|
||||
|
||||
printf("✓ Example completed successfully!\n");
|
||||
printf("💡 The same mnemonic always produces the same keys (deterministic)\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user