@qntx/nostr-native 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NostrNative.podspec +5 -0
- package/android/CMakeLists.txt +1 -0
- package/android/build.gradle +9 -0
- package/cpp/HybridNostrNative.hpp +2 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -4
- /package/{cpp → include}/nostr_native.h +0 -0
package/NostrNative.podspec
CHANGED
|
@@ -16,6 +16,9 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
s.source_files = [
|
|
17
17
|
# Implementation (C core + C++ HybridObject)
|
|
18
18
|
"cpp/**/*.{h,hpp,c,cpp}",
|
|
19
|
+
# The public C ABI — consumers resolve "nostr_native.h" through the pod's
|
|
20
|
+
# public headers; it is the only header exported to dependents.
|
|
21
|
+
"include/**/*.h",
|
|
19
22
|
# Vendored libsecp256k1: headers plus the two precomputed-table TUs. secp256k1.c is
|
|
20
23
|
# intentionally not here — cpp/nostr_core.c includes it as a single translation unit.
|
|
21
24
|
"vendor/secp256k1/include/**/*.h",
|
|
@@ -24,6 +27,8 @@ Pod::Spec.new do |s|
|
|
|
24
27
|
"vendor/secp256k1/src/precomputed_ecmult_gen.c",
|
|
25
28
|
]
|
|
26
29
|
|
|
30
|
+
s.public_header_files = "include/nostr_native.h"
|
|
31
|
+
|
|
27
32
|
s.pod_target_xcconfig = {
|
|
28
33
|
"GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) ENABLE_MODULE_ECDH=1 ENABLE_MODULE_EXTRAKEYS=1 ENABLE_MODULE_SCHNORRSIG=1",
|
|
29
34
|
}
|
package/android/CMakeLists.txt
CHANGED
package/android/build.gradle
CHANGED
|
@@ -90,7 +90,16 @@ android {
|
|
|
90
90
|
|
|
91
91
|
buildFeatures {
|
|
92
92
|
buildConfig = true
|
|
93
|
+
// Consumes dependency prefabs (fbjni/ReactAndroid/Nitro) and publishes the
|
|
94
|
+
// built library itself so sibling packages can find_package(NostrNative).
|
|
93
95
|
prefab = true
|
|
96
|
+
prefabPublishing = true
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
prefab {
|
|
100
|
+
NostrNative {
|
|
101
|
+
headers "../include"
|
|
102
|
+
}
|
|
94
103
|
}
|
|
95
104
|
|
|
96
105
|
buildTypes {
|
|
@@ -17,6 +17,8 @@ public:
|
|
|
17
17
|
std::shared_ptr<ArrayBuffer> sign(const std::shared_ptr<ArrayBuffer>& id,
|
|
18
18
|
const std::shared_ptr<ArrayBuffer>& secretKey,
|
|
19
19
|
const std::shared_ptr<ArrayBuffer>& auxRand) override;
|
|
20
|
+
std::shared_ptr<ArrayBuffer> ecdhX(const std::shared_ptr<ArrayBuffer>& secretKey,
|
|
21
|
+
const std::shared_ptr<ArrayBuffer>& publicKeyX) override;
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
} // namespace margelo::nitro::nostrnative
|
package/dist/index.d.mts
CHANGED
|
@@ -7,10 +7,10 @@ import { NostrBackend } from "@qntx/nostr/core";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const verifySerialized: NostrBackend["verifySerialized"];
|
|
9
9
|
/**
|
|
10
|
-
* `NostrBackend`
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
13
|
-
* on an invalid secret key or wrong-length input.
|
|
10
|
+
* `NostrBackend` backed by native libsecp256k1 — plug into `Keys.fromSecretKey(secretKey,
|
|
11
|
+
* signing)`, `Keys.generate(signing)`, `new KeysSigner(secretKey, { backend: signing })` or
|
|
12
|
+
* `createEventVerifier(signing)` so signing, ECDH and verification share one randomized context.
|
|
13
|
+
* Throws on an invalid secret key or wrong-length input.
|
|
14
14
|
*/
|
|
15
15
|
export declare const signing: NostrBackend;
|
|
16
16
|
//#endregion
|
package/dist/index.mjs
CHANGED
|
@@ -13,10 +13,10 @@ function asArrayBuffer(view) {
|
|
|
13
13
|
*/
|
|
14
14
|
const verifySerialized = (serializedUtf8, id, pubkey, sig) => nostrNative.verifySerialized(asArrayBuffer(serializedUtf8), asArrayBuffer(id), asArrayBuffer(pubkey), asArrayBuffer(sig));
|
|
15
15
|
/**
|
|
16
|
-
* `NostrBackend`
|
|
17
|
-
*
|
|
18
|
-
* `
|
|
19
|
-
* on an invalid secret key or wrong-length input.
|
|
16
|
+
* `NostrBackend` backed by native libsecp256k1 — plug into `Keys.fromSecretKey(secretKey,
|
|
17
|
+
* signing)`, `Keys.generate(signing)`, `new KeysSigner(secretKey, { backend: signing })` or
|
|
18
|
+
* `createEventVerifier(signing)` so signing, ECDH and verification share one randomized context.
|
|
19
|
+
* Throws on an invalid secret key or wrong-length input.
|
|
20
20
|
*/
|
|
21
21
|
const signing = {
|
|
22
22
|
ecdhX: (secretKey, publicKeyX) => new Uint8Array(nostrNative.ecdhX(asArrayBuffer(secretKey), asArrayBuffer(publicKeyX))),
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { NitroModules } from \"react-native-nitro-modules\";\n\nimport type { NostrBackend } from \"@qntx/nostr/core\";\n\nimport type { NostrNative } from \"./specs/nostr-native.nitro.ts\";\n\nconst nostrNative = NitroModules.createHybridObject<NostrNative>(\"NostrNative\");\n\nfunction asArrayBuffer(view: Uint8Array): ArrayBuffer {\n const { buffer, byteOffset, byteLength } = view;\n if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {\n return buffer;\n }\n return new Uint8Array(view).buffer;\n}\n\n/**\n * `NostrBackend[\"verifySerialized\"]` backed by native libsecp256k1 — plug into\n * `createEventVerifier` from `@qntx/nostr/core`. The Nitro hybrid object is created once at module\n * load.\n */\nexport const verifySerialized: NostrBackend[\"verifySerialized\"] = (\n serializedUtf8,\n id,\n pubkey,\n sig,\n) =>\n nostrNative.verifySerialized(\n asArrayBuffer(serializedUtf8),\n asArrayBuffer(id),\n asArrayBuffer(pubkey),\n asArrayBuffer(sig),\n );\n\n/**\n * `NostrBackend`
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { NitroModules } from \"react-native-nitro-modules\";\n\nimport type { NostrBackend } from \"@qntx/nostr/core\";\n\nimport type { NostrNative } from \"./specs/nostr-native.nitro.ts\";\n\nconst nostrNative = NitroModules.createHybridObject<NostrNative>(\"NostrNative\");\n\nfunction asArrayBuffer(view: Uint8Array): ArrayBuffer {\n const { buffer, byteOffset, byteLength } = view;\n if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {\n return buffer;\n }\n return new Uint8Array(view).buffer;\n}\n\n/**\n * `NostrBackend[\"verifySerialized\"]` backed by native libsecp256k1 — plug into\n * `createEventVerifier` from `@qntx/nostr/core`. The Nitro hybrid object is created once at module\n * load.\n */\nexport const verifySerialized: NostrBackend[\"verifySerialized\"] = (\n serializedUtf8,\n id,\n pubkey,\n sig,\n) =>\n nostrNative.verifySerialized(\n asArrayBuffer(serializedUtf8),\n asArrayBuffer(id),\n asArrayBuffer(pubkey),\n asArrayBuffer(sig),\n );\n\n/**\n * `NostrBackend` backed by native libsecp256k1 — plug into `Keys.fromSecretKey(secretKey,\n * signing)`, `Keys.generate(signing)`, `new KeysSigner(secretKey, { backend: signing })` or\n * `createEventVerifier(signing)` so signing, ECDH and verification share one randomized context.\n * Throws on an invalid secret key or wrong-length input.\n */\nexport const signing: NostrBackend = {\n ecdhX: (secretKey, publicKeyX) =>\n new Uint8Array(nostrNative.ecdhX(asArrayBuffer(secretKey), asArrayBuffer(publicKeyX))),\n verifySerialized,\n publicKey: (secretKey) => new Uint8Array(nostrNative.publicKey(asArrayBuffer(secretKey))),\n sign: (id, secretKey, auxRand) =>\n new Uint8Array(\n nostrNative.sign(asArrayBuffer(id), asArrayBuffer(secretKey), asArrayBuffer(auxRand)),\n ),\n};\n"],"mappings":";;AAMA,MAAM,cAAc,aAAa,mBAAgC,aAAa;AAE9E,SAAS,cAAc,MAA+B;CACpD,MAAM,EAAE,QAAQ,YAAY,eAAe;CAC3C,IAAI,kBAAkB,eAAe,eAAe,KAAK,eAAe,OAAO,YAC7E,OAAO;CAET,OAAO,IAAI,WAAW,IAAI,CAAC,CAAC;AAC9B;;;;;;AAOA,MAAa,oBACX,gBACA,IACA,QACA,QAEA,YAAY,iBACV,cAAc,cAAc,GAC5B,cAAc,EAAE,GAChB,cAAc,MAAM,GACpB,cAAc,GAAG,CACnB;;;;;;;AAQF,MAAa,UAAwB;CACnC,QAAQ,WAAW,eACjB,IAAI,WAAW,YAAY,MAAM,cAAc,SAAS,GAAG,cAAc,UAAU,CAAC,CAAC;CACvF;CACA,YAAY,cAAc,IAAI,WAAW,YAAY,UAAU,cAAc,SAAS,CAAC,CAAC;CACxF,OAAO,IAAI,WAAW,YACpB,IAAI,WACF,YAAY,KAAK,cAAc,EAAE,GAAG,cAAc,SAAS,GAAG,cAAc,OAAO,CAAC,CACtF;AACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qntx/nostr-native",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"description": "Native libsecp256k1 (Nitro) verification and signing backend for @qntx/nostr on React Native",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bip340",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"dist",
|
|
25
25
|
"cpp",
|
|
26
|
+
"include",
|
|
26
27
|
"android/build.gradle",
|
|
27
28
|
"android/CMakeLists.txt",
|
|
28
29
|
"android/gradle.properties",
|
|
@@ -61,17 +62,17 @@
|
|
|
61
62
|
"@arethetypeswrong/cli": "0.18.5",
|
|
62
63
|
"@noble/curves": "2.4.0",
|
|
63
64
|
"@noble/hashes": "2.4.0",
|
|
64
|
-
"@qntx/nostr": "0.15.
|
|
65
|
+
"@qntx/nostr": "0.15.2",
|
|
65
66
|
"@qntx/tsconfig": "1.0.1",
|
|
66
67
|
"@types/node": "26.6.5",
|
|
67
68
|
"nitrogen": "0.37.1",
|
|
68
69
|
"publint": "0.3.25",
|
|
69
70
|
"react-native-nitro-modules": "0.37.1",
|
|
70
71
|
"typescript": "7.0.2",
|
|
71
|
-
"vite-plus": "1.
|
|
72
|
+
"vite-plus": "1.3.0"
|
|
72
73
|
},
|
|
73
74
|
"peerDependencies": {
|
|
74
|
-
"@qntx/nostr": "^0.15.
|
|
75
|
+
"@qntx/nostr": "^0.15.2",
|
|
75
76
|
"react-native": "*",
|
|
76
77
|
"react-native-nitro-modules": "^0.37.1"
|
|
77
78
|
},
|
|
File without changes
|