Skip to content

Commit 739513a

Browse files
committed
feat: added support for blinding method to sign requests
1 parent 278d0cd commit 739513a

File tree

3 files changed

+53
-3
lines changed

3 files changed

+53
-3
lines changed

src/blinding/blinding.hpp

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
1919
public:
2020
BlindingWrapper(const Napi::CallbackInfo& info) : Napi::ObjectWrap<BlindingWrapper>{info} {
2121
throw std::invalid_argument(
22-
"BlindingWrapper is all static and don't need to be constructed");
22+
"BlindingWrapper is all static and doesn't need to be constructed");
2323
}
2424

2525
static void Init(Napi::Env env, Napi::Object exports) {
@@ -32,11 +32,14 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
3232
"blindVersionPubkey",
3333
static_cast<napi_property_attributes>(
3434
napi_writable | napi_configurable)),
35+
StaticMethod<&BlindingWrapper::blindVersionSignRequest>(
36+
"blindVersionSignRequest",
37+
static_cast<napi_property_attributes>(
38+
napi_writable | napi_configurable)),
3539
StaticMethod<&BlindingWrapper::blindVersionSign>(
3640
"blindVersionSign",
3741
static_cast<napi_property_attributes>(
3842
napi_writable | napi_configurable)),
39-
4043
});
4144
}
4245

@@ -67,6 +70,41 @@ class BlindingWrapper : public Napi::ObjectWrap<BlindingWrapper> {
6770
});
6871
};
6972

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