Release v1.1.3 - Add NIP-49 ncryptsec export feature
- Add ncryptsec page for exporting encrypted private keys (NIP-49) - Implement password-based encryption using scrypt + XChaCha20-Poly1305 - Display QR code for easy mobile scanning of encrypted key - Add click-to-copy functionality for ncryptsec string - Add privkeyToNcryptsec() method to NostrHelper using nostr-tools nip49 Files modified: - projects/common/src/lib/helpers/nostr-helper.ts - projects/chrome/src/app/app.routes.ts - projects/chrome/src/app/components/edit-identity/keys/keys.component.* - projects/chrome/src/app/components/edit-identity/ncryptsec/ (new) - projects/firefox/src/app/app.routes.ts - projects/firefox/src/app/components/edit-identity/keys/keys.component.* - projects/firefox/src/app/components/edit-identity/ncryptsec/ (new) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import { bech32 } from '@scure/base';
|
||||
import * as utils from '@noble/curves/abstract/utils';
|
||||
import { getPublicKey } from 'nostr-tools';
|
||||
import { encrypt as nip49Encrypt } from 'nostr-tools/nip49';
|
||||
|
||||
export interface NostrHexObject {
|
||||
represents: string;
|
||||
@@ -125,4 +126,21 @@ export class NostrHelper {
|
||||
hex: utils.bytesToHex(data),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Encrypts a private key (hex) with a password using NIP-49.
|
||||
* Returns an ncryptsec bech32 string.
|
||||
* @param privkeyHex - The private key in hex format
|
||||
* @param password - The password to encrypt with
|
||||
* @param logN - Optional log2(N) parameter for scrypt (default: 16)
|
||||
* @returns Promise<string> - The ncryptsec bech32 encoded encrypted key
|
||||
*/
|
||||
static async privkeyToNcryptsec(
|
||||
privkeyHex: string,
|
||||
password: string,
|
||||
logN = 16
|
||||
): Promise<string> {
|
||||
const privkeyBytes = utils.hexToBytes(privkeyHex);
|
||||
return nip49Encrypt(privkeyBytes, password, logN);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user