Skip to content

Commit 551967b

Browse files
authored
Merge pull request #2 from yougotwill/feat/no-ref/blind_version_sign_request
feat: added support for blinding method to sign requests
2 parents 8aef9d0 + 7c01713 commit 551967b

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

src/blinding/blinding.hpp

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
1818

1919
public:
2020
BlindingWrapper(const Napi::CallbackInfo& info) : Napi::ObjectWrap<BlindingWrapper>{info} {
21-
throw std::invalid_argument(
22-
"BlindingWrapper is static and doesn't need to be constructed");
21+
throw std::invalid_argument("BlindingWrapper is static and doesn't need to be constructed");
2322
}
2423

2524
static void Init(Napi::Env env, Napi::Object exports) {
@@ -32,11 +31,14 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
3231
"blindVersionPubkey",
3332
static_cast<napi_property_attributes>(
3433
napi_writable | napi_configurable)),
34+
StaticMethod<&BlindingWrapper::blindVersionSignRequest>(
35+
"blindVersionSignRequest",
36+
static_cast<napi_property_attributes>(
37+
napi_writable | napi_configurable)),
3538
StaticMethod<&BlindingWrapper::blindVersionSign>(
3639
"blindVersionSign",
3740
static_cast<napi_property_attributes>(
3841
napi_writable | napi_configurable)),
39-
4042
});
4143
}
4244

@@ -67,6 +69,43 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
6769
});
6870
};
6971

72+
static Napi::Value blindVersionSignRequest(const Napi::CallbackInfo& info) {
73+
return wrapResult(info, [&] {
74+
assertInfoLength(info, 1);
75+
assertIsObject(info[0]);
76+
auto obj = info[0].As<Napi::Object>();
77+
78+
if (obj.IsEmpty())
79+
throw std::invalid_argument("blindVersionSignRequest received empty");
80+
81+
assertIsUInt8Array(
82+
obj.Get("ed25519SecretKey"), "blindVersionSignRequest.ed25519SecretKey");
83+
auto ed25519_secret_key = toCppBuffer(
84+
obj.Get("ed25519SecretKey"), "blindVersionSignRequest.ed25519SecretKey");
85+
86+
assertIsNumber(
87+
obj.Get("sigTimestampSeconds"), "blindVersionSignRequest.sigTimestampSeconds");
88+
auto sig_timestamp = toCppInteger(
89+
obj.Get("sigTimestampSeconds"),
90+
"blindVersionSignRequest.sigTimestampSeconds",
91+
false);
92+
93+
assertIsString(obj.Get("sigMethod"));
94+
auto sig_method =
95+
toCppString(obj.Get("sigMethod"), "blindVersionSignRequest.sigMethod");
96+
97+
assertIsString(obj.Get("sigPath"));
98+
auto sig_path = toCppString(obj.Get("sigPath"), "blindVersionSignRequest.sigPath");
99+
100+
assertIsUInt8ArrayOrNull(obj.Get("sigBody"));
101+
auto sig_body =
102+
maybeNonemptyBuffer(obj.Get("sigBody"), "blindVersionSignRequest.sigBody");
103+
104+
return session::blind_version_sign_request(
105+
ed25519_secret_key, sig_timestamp, sig_method, sig_path, sig_body);
106+
});
107+
};
108+
70109
static Napi::Value blindVersionSign(const Napi::CallbackInfo& info) {
71110
return wrapResult(info, [&] {
72111
assertInfoLength(info, 1);

types/blinding/blinding.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ declare module 'libsession_util_nodejs' {
88
*/
99
ed25519SecretKey: Uint8Array;
1010
}) => string;
11+
blindVersionSignRequest: (opts: {
12+
/**
13+
* len 64: ed25519 secretKey with pubkey
14+
*/
15+
ed25519SecretKey: Uint8Array;
16+
sigTimestampSeconds: number;
17+
sigMethod: string;
18+
sigPath: string;
19+
sigBody: Uint8Array | null;
20+
}) => Uint8Array;
1121
blindVersionSign: (opts: {
1222
/**
1323
* len 64: ed25519 secretKey with pubkey
@@ -24,6 +34,7 @@ declare module 'libsession_util_nodejs' {
2434
*/
2535
export class BlindingWrapperNode {
2636
public static blindVersionPubkey: BlindingWrapper['blindVersionPubkey'];
37+
public static blindVersionSignRequest: BlindingWrapper['blindVersionSignRequest'];
2738
public static blindVersionSign: BlindingWrapper['blindVersionSign'];
2839
}
2940

@@ -34,5 +45,6 @@ declare module 'libsession_util_nodejs' {
3445
*/
3546
export type BlindingActionsType =
3647
| MakeActionCall<BlindingWrapper, 'blindVersionPubkey'>
48+
| MakeActionCall<BlindingWrapper, 'blindVersionSignRequest'>
3749
| MakeActionCall<BlindingWrapper, 'blindVersionSign'>;
3850
}

0 commit comments

Comments
 (0)