react-native-quick-crypto 1.0.0-beta.16 → 1.0.0-beta.18
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/android/CMakeLists.txt +2 -0
- package/app.plugin.js +3 -0
- package/cpp/cipher/ChaCha20Cipher.cpp +97 -0
- package/cpp/cipher/ChaCha20Cipher.hpp +25 -0
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +30 -0
- package/cpp/cipher/HybridCipherFactory.hpp +19 -1
- package/deps/fastpbkdf2/fastpbkdf2.c +5 -1
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/expo-plugin/@types.js +2 -0
- package/lib/commonjs/expo-plugin/@types.js.map +1 -0
- package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
- package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
- package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
- package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
- package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
- package/lib/commonjs/expo-plugin/withXCode.js +51 -0
- package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/expo-plugin/@types.js +2 -0
- package/lib/module/expo-plugin/@types.js.map +1 -0
- package/lib/module/expo-plugin/withRNQC.js +21 -0
- package/lib/module/expo-plugin/withRNQC.js.map +1 -0
- package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
- package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/lib/module/expo-plugin/withSodiumIos.js +20 -0
- package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
- package/lib/module/expo-plugin/withXCode.js +46 -0
- package/lib/module/expo-plugin/withXCode.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/cipher.d.ts +3 -1
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/expo-plugin/@types.d.ts +8 -0
- package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
- package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
- package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
- package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
- package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
- package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
- package/package.json +18 -7
- package/src/cipher.ts +7 -0
- package/src/expo-plugin/@types.ts +7 -0
- package/src/expo-plugin/withRNQC.ts +23 -0
- package/src/expo-plugin/withSodiumAndroid.ts +24 -0
- package/src/expo-plugin/withSodiumIos.ts +30 -0
- package/src/expo-plugin/withXCode.ts +55 -0
package/android/CMakeLists.txt
CHANGED
|
@@ -13,6 +13,8 @@ add_library(
|
|
|
13
13
|
../cpp/cipher/HybridCipher.cpp
|
|
14
14
|
../cpp/cipher/OCBCipher.cpp
|
|
15
15
|
../cpp/cipher/XSalsa20Cipher.cpp
|
|
16
|
+
../cpp/cipher/ChaCha20Cipher.cpp
|
|
17
|
+
../cpp/cipher/ChaCha20Poly1305Cipher.cpp
|
|
16
18
|
../cpp/ed25519/HybridEdKeyPair.cpp
|
|
17
19
|
../cpp/hash/HybridHash.cpp
|
|
18
20
|
../cpp/hmac/HybridHmac.cpp
|
package/app.plugin.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#include "ChaCha20Cipher.hpp"
|
|
2
|
+
#include "Utils.hpp"
|
|
3
|
+
#include <openssl/err.h>
|
|
4
|
+
#include <openssl/evp.h>
|
|
5
|
+
#include <stdexcept>
|
|
6
|
+
|
|
7
|
+
namespace margelo::nitro::crypto {
|
|
8
|
+
|
|
9
|
+
void ChaCha20Cipher::init(const std::shared_ptr<ArrayBuffer> cipher_key, const std::shared_ptr<ArrayBuffer> iv) {
|
|
10
|
+
// Clean up any existing context
|
|
11
|
+
if (ctx) {
|
|
12
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
13
|
+
ctx = nullptr;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Get ChaCha20 cipher implementation
|
|
17
|
+
const EVP_CIPHER* cipher = EVP_chacha20();
|
|
18
|
+
if (!cipher) {
|
|
19
|
+
throw std::runtime_error("Failed to get ChaCha20 cipher implementation");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Create a new context
|
|
23
|
+
ctx = EVP_CIPHER_CTX_new();
|
|
24
|
+
if (!ctx) {
|
|
25
|
+
throw std::runtime_error("Failed to create cipher context");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Initialize the encryption/decryption operation
|
|
29
|
+
if (EVP_CipherInit_ex(ctx, cipher, nullptr, nullptr, nullptr, is_cipher) != 1) {
|
|
30
|
+
unsigned long err = ERR_get_error();
|
|
31
|
+
char err_buf[256];
|
|
32
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
33
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
34
|
+
ctx = nullptr;
|
|
35
|
+
throw std::runtime_error("ChaCha20Cipher: Failed initial CipherInit setup: " + std::string(err_buf));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Set key and IV
|
|
39
|
+
auto native_key = ToNativeArrayBuffer(cipher_key);
|
|
40
|
+
auto native_iv = ToNativeArrayBuffer(iv);
|
|
41
|
+
|
|
42
|
+
// Validate key size
|
|
43
|
+
if (native_key->size() != kKeySize) {
|
|
44
|
+
throw std::runtime_error("ChaCha20 key must be 32 bytes");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Validate IV size
|
|
48
|
+
if (native_iv->size() != kIVSize) {
|
|
49
|
+
throw std::runtime_error("ChaCha20 IV must be 16 bytes");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const unsigned char* key_ptr = reinterpret_cast<const unsigned char*>(native_key->data());
|
|
53
|
+
const unsigned char* iv_ptr = reinterpret_cast<const unsigned char*>(native_iv->data());
|
|
54
|
+
|
|
55
|
+
if (EVP_CipherInit_ex(ctx, nullptr, nullptr, key_ptr, iv_ptr, is_cipher) != 1) {
|
|
56
|
+
unsigned long err = ERR_get_error();
|
|
57
|
+
char err_buf[256];
|
|
58
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
59
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
60
|
+
ctx = nullptr;
|
|
61
|
+
throw std::runtime_error("ChaCha20Cipher: Failed to set key/IV: " + std::string(err_buf));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
std::shared_ptr<ArrayBuffer> ChaCha20Cipher::update(const std::shared_ptr<ArrayBuffer>& data) {
|
|
66
|
+
checkCtx();
|
|
67
|
+
auto native_data = ToNativeArrayBuffer(data);
|
|
68
|
+
size_t in_len = native_data->size();
|
|
69
|
+
if (in_len > INT_MAX) {
|
|
70
|
+
throw std::runtime_error("Message too long");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// For ChaCha20, output size equals input size since it's a stream cipher
|
|
74
|
+
int out_len = in_len;
|
|
75
|
+
uint8_t* out = new uint8_t[out_len];
|
|
76
|
+
|
|
77
|
+
// Perform the cipher update operation
|
|
78
|
+
if (EVP_CipherUpdate(ctx, out, &out_len, native_data->data(), in_len) != 1) {
|
|
79
|
+
delete[] out;
|
|
80
|
+
unsigned long err = ERR_get_error();
|
|
81
|
+
char err_buf[256];
|
|
82
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
83
|
+
throw std::runtime_error("ChaCha20Cipher: Failed to update: " + std::string(err_buf));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Create and return a new buffer of exact size needed
|
|
87
|
+
return std::make_shared<NativeArrayBuffer>(out, out_len, [=]() { delete[] out; });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
std::shared_ptr<ArrayBuffer> ChaCha20Cipher::final() {
|
|
91
|
+
checkCtx();
|
|
92
|
+
// For ChaCha20, final() should return an empty buffer since it's a stream cipher
|
|
93
|
+
unsigned char* empty_output = new unsigned char[0];
|
|
94
|
+
return std::make_shared<NativeArrayBuffer>(empty_output, 0, [=]() { delete[] empty_output; });
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "HybridCipher.hpp"
|
|
4
|
+
|
|
5
|
+
namespace margelo::nitro::crypto {
|
|
6
|
+
|
|
7
|
+
class ChaCha20Cipher : public HybridCipher {
|
|
8
|
+
public:
|
|
9
|
+
ChaCha20Cipher() : HybridObject(TAG) {}
|
|
10
|
+
~ChaCha20Cipher() {
|
|
11
|
+
// Let parent destructor free the context
|
|
12
|
+
ctx = nullptr;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
void init(const std::shared_ptr<ArrayBuffer> cipher_key, const std::shared_ptr<ArrayBuffer> iv) override;
|
|
16
|
+
std::shared_ptr<ArrayBuffer> update(const std::shared_ptr<ArrayBuffer>& data) override;
|
|
17
|
+
std::shared_ptr<ArrayBuffer> final() override;
|
|
18
|
+
|
|
19
|
+
private:
|
|
20
|
+
// ChaCha20 uses a 256-bit key (32 bytes) and a 128-bit IV (16 bytes)
|
|
21
|
+
static constexpr int kKeySize = 32;
|
|
22
|
+
static constexpr int kIVSize = 16;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#include "ChaCha20Poly1305Cipher.hpp"
|
|
2
|
+
#include "Utils.hpp"
|
|
3
|
+
#include <openssl/err.h>
|
|
4
|
+
#include <openssl/evp.h>
|
|
5
|
+
#include <stdexcept>
|
|
6
|
+
|
|
7
|
+
namespace margelo::nitro::crypto {
|
|
8
|
+
|
|
9
|
+
void ChaCha20Poly1305Cipher::init(const std::shared_ptr<ArrayBuffer> cipher_key, const std::shared_ptr<ArrayBuffer> iv) {
|
|
10
|
+
// Clean up any existing context
|
|
11
|
+
if (ctx) {
|
|
12
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
13
|
+
ctx = nullptr;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Get ChaCha20-Poly1305 cipher implementation
|
|
17
|
+
const EVP_CIPHER* cipher = EVP_chacha20_poly1305();
|
|
18
|
+
if (!cipher) {
|
|
19
|
+
throw std::runtime_error("Failed to get ChaCha20-Poly1305 cipher implementation");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Create a new context
|
|
23
|
+
ctx = EVP_CIPHER_CTX_new();
|
|
24
|
+
if (!ctx) {
|
|
25
|
+
throw std::runtime_error("Failed to create cipher context");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Initialize the encryption/decryption operation
|
|
29
|
+
if (EVP_CipherInit_ex(ctx, cipher, nullptr, nullptr, nullptr, is_cipher) != 1) {
|
|
30
|
+
unsigned long err = ERR_get_error();
|
|
31
|
+
char err_buf[256];
|
|
32
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
33
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
34
|
+
ctx = nullptr;
|
|
35
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed initial CipherInit setup: " + std::string(err_buf));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Set key and IV
|
|
39
|
+
auto native_key = ToNativeArrayBuffer(cipher_key);
|
|
40
|
+
auto native_iv = ToNativeArrayBuffer(iv);
|
|
41
|
+
|
|
42
|
+
// Validate key size
|
|
43
|
+
if (native_key->size() != kKeySize) {
|
|
44
|
+
throw std::runtime_error("ChaCha20-Poly1305 key must be 32 bytes");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Validate nonce size
|
|
48
|
+
if (native_iv->size() != kNonceSize) {
|
|
49
|
+
throw std::runtime_error("ChaCha20-Poly1305 nonce must be 12 bytes");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const unsigned char* key_ptr = reinterpret_cast<const unsigned char*>(native_key->data());
|
|
53
|
+
const unsigned char* iv_ptr = reinterpret_cast<const unsigned char*>(native_iv->data());
|
|
54
|
+
|
|
55
|
+
if (EVP_CipherInit_ex(ctx, nullptr, nullptr, key_ptr, iv_ptr, is_cipher) != 1) {
|
|
56
|
+
unsigned long err = ERR_get_error();
|
|
57
|
+
char err_buf[256];
|
|
58
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
59
|
+
EVP_CIPHER_CTX_free(ctx);
|
|
60
|
+
ctx = nullptr;
|
|
61
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to set key/IV: " + std::string(err_buf));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Reset final_called flag
|
|
65
|
+
final_called = false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
std::shared_ptr<ArrayBuffer> ChaCha20Poly1305Cipher::update(const std::shared_ptr<ArrayBuffer>& data) {
|
|
69
|
+
checkCtx();
|
|
70
|
+
auto native_data = ToNativeArrayBuffer(data);
|
|
71
|
+
size_t in_len = native_data->size();
|
|
72
|
+
if (in_len > INT_MAX) {
|
|
73
|
+
throw std::runtime_error("Message too long");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// For ChaCha20-Poly1305, output size equals input size since it's a stream cipher
|
|
77
|
+
int out_len = in_len;
|
|
78
|
+
uint8_t* out = new uint8_t[out_len];
|
|
79
|
+
|
|
80
|
+
// Perform the cipher update operation
|
|
81
|
+
if (EVP_CipherUpdate(ctx, out, &out_len, native_data->data(), in_len) != 1) {
|
|
82
|
+
delete[] out;
|
|
83
|
+
unsigned long err = ERR_get_error();
|
|
84
|
+
char err_buf[256];
|
|
85
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
86
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to update: " + std::string(err_buf));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Create and return a new buffer of exact size needed
|
|
90
|
+
return std::make_shared<NativeArrayBuffer>(out, out_len, [=]() { delete[] out; });
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
std::shared_ptr<ArrayBuffer> ChaCha20Poly1305Cipher::final() {
|
|
94
|
+
checkCtx();
|
|
95
|
+
|
|
96
|
+
// For ChaCha20-Poly1305, we need to call final to generate the tag
|
|
97
|
+
int out_len = 0;
|
|
98
|
+
unsigned char* out = new unsigned char[0];
|
|
99
|
+
|
|
100
|
+
if (EVP_CipherFinal_ex(ctx, out, &out_len) != 1) {
|
|
101
|
+
delete[] out;
|
|
102
|
+
unsigned long err = ERR_get_error();
|
|
103
|
+
char err_buf[256];
|
|
104
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
105
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to finalize: " + std::string(err_buf));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
final_called = true;
|
|
109
|
+
return std::make_shared<NativeArrayBuffer>(out, out_len, [=]() { delete[] out; });
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
bool ChaCha20Poly1305Cipher::setAAD(const std::shared_ptr<ArrayBuffer>& data, std::optional<double> plaintextLength) {
|
|
113
|
+
checkCtx();
|
|
114
|
+
auto native_aad = ToNativeArrayBuffer(data);
|
|
115
|
+
size_t aad_len = native_aad->size();
|
|
116
|
+
|
|
117
|
+
// Set AAD data
|
|
118
|
+
int out_len = 0;
|
|
119
|
+
if (EVP_CipherUpdate(ctx, nullptr, &out_len, native_aad->data(), aad_len) != 1) {
|
|
120
|
+
unsigned long err = ERR_get_error();
|
|
121
|
+
char err_buf[256];
|
|
122
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
123
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to set AAD: " + std::string(err_buf));
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
std::shared_ptr<ArrayBuffer> ChaCha20Poly1305Cipher::getAuthTag() {
|
|
129
|
+
checkCtx();
|
|
130
|
+
if (!is_cipher) {
|
|
131
|
+
throw std::runtime_error("getAuthTag can only be called during encryption");
|
|
132
|
+
}
|
|
133
|
+
if (!final_called) {
|
|
134
|
+
throw std::runtime_error("getAuthTag must be called after final()");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Get the authentication tag
|
|
138
|
+
auto tag_buf = std::make_unique<uint8_t[]>(kTagSize);
|
|
139
|
+
if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, kTagSize, tag_buf.get()) != 1) {
|
|
140
|
+
unsigned long err = ERR_get_error();
|
|
141
|
+
char err_buf[256];
|
|
142
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
143
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to get auth tag: " + std::string(err_buf));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
uint8_t* raw_ptr = tag_buf.get();
|
|
147
|
+
return std::make_shared<NativeArrayBuffer>(tag_buf.release(), kTagSize, [raw_ptr]() { delete[] raw_ptr; });
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
bool ChaCha20Poly1305Cipher::setAuthTag(const std::shared_ptr<ArrayBuffer>& tag) {
|
|
151
|
+
checkCtx();
|
|
152
|
+
if (is_cipher) {
|
|
153
|
+
throw std::runtime_error("setAuthTag can only be called during decryption");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
auto native_tag = ToNativeArrayBuffer(tag);
|
|
157
|
+
if (native_tag->size() != kTagSize) {
|
|
158
|
+
throw std::runtime_error("ChaCha20-Poly1305 tag must be 16 bytes");
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, kTagSize, native_tag->data()) != 1) {
|
|
162
|
+
unsigned long err = ERR_get_error();
|
|
163
|
+
char err_buf[256];
|
|
164
|
+
ERR_error_string_n(err, err_buf, sizeof(err_buf));
|
|
165
|
+
throw std::runtime_error("ChaCha20Poly1305Cipher: Failed to set auth tag: " + std::string(err_buf));
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "HybridCipher.hpp"
|
|
4
|
+
|
|
5
|
+
namespace margelo::nitro::crypto {
|
|
6
|
+
|
|
7
|
+
class ChaCha20Poly1305Cipher : public HybridCipher {
|
|
8
|
+
public:
|
|
9
|
+
ChaCha20Poly1305Cipher() : HybridObject(TAG), final_called(false) {}
|
|
10
|
+
~ChaCha20Poly1305Cipher() {
|
|
11
|
+
// Let parent destructor free the context
|
|
12
|
+
ctx = nullptr;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
void init(const std::shared_ptr<ArrayBuffer> cipher_key, const std::shared_ptr<ArrayBuffer> iv) override;
|
|
16
|
+
std::shared_ptr<ArrayBuffer> update(const std::shared_ptr<ArrayBuffer>& data) override;
|
|
17
|
+
std::shared_ptr<ArrayBuffer> final() override;
|
|
18
|
+
bool setAAD(const std::shared_ptr<ArrayBuffer>& data, std::optional<double> plaintextLength) override;
|
|
19
|
+
std::shared_ptr<ArrayBuffer> getAuthTag() override;
|
|
20
|
+
bool setAuthTag(const std::shared_ptr<ArrayBuffer>& tag) override;
|
|
21
|
+
|
|
22
|
+
private:
|
|
23
|
+
// ChaCha20-Poly1305 uses a 256-bit key (32 bytes) and a 96-bit nonce (12 bytes)
|
|
24
|
+
static constexpr int kKeySize = 32;
|
|
25
|
+
static constexpr int kNonceSize = 12;
|
|
26
|
+
static constexpr int kTagSize = 16; // Poly1305 tag is always 16 bytes
|
|
27
|
+
bool final_called;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
#include <string>
|
|
6
6
|
|
|
7
7
|
#include "CCMCipher.hpp"
|
|
8
|
+
#include "ChaCha20Cipher.hpp"
|
|
9
|
+
#include "ChaCha20Poly1305Cipher.hpp"
|
|
8
10
|
#include "HybridCipherFactorySpec.hpp"
|
|
9
11
|
#include "OCBCipher.hpp"
|
|
10
12
|
#include "Utils.hpp"
|
|
@@ -22,7 +24,6 @@ class HybridCipherFactory : public HybridCipherFactorySpec {
|
|
|
22
24
|
public:
|
|
23
25
|
// Factory method exposed to JS
|
|
24
26
|
inline std::shared_ptr<HybridCipherSpec> createCipher(const CipherArgs& args) {
|
|
25
|
-
|
|
26
27
|
// Create the appropriate cipher instance based on mode
|
|
27
28
|
std::shared_ptr<HybridCipher> cipherInstance;
|
|
28
29
|
|
|
@@ -47,7 +48,24 @@ class HybridCipherFactory : public HybridCipherFactorySpec {
|
|
|
47
48
|
cipherInstance->init(args.cipherKey, args.iv);
|
|
48
49
|
return cipherInstance;
|
|
49
50
|
}
|
|
51
|
+
case EVP_CIPH_STREAM_CIPHER: {
|
|
52
|
+
// Check for ChaCha20 variants specifically
|
|
53
|
+
std::string cipherName = toLower(args.cipherType);
|
|
54
|
+
if (cipherName == "chacha20") {
|
|
55
|
+
cipherInstance = std::make_shared<ChaCha20Cipher>();
|
|
56
|
+
cipherInstance->setArgs(args);
|
|
57
|
+
cipherInstance->init(args.cipherKey, args.iv);
|
|
58
|
+
return cipherInstance;
|
|
59
|
+
}
|
|
60
|
+
if (cipherName == "chacha20-poly1305") {
|
|
61
|
+
cipherInstance = std::make_shared<ChaCha20Poly1305Cipher>();
|
|
62
|
+
cipherInstance->setArgs(args);
|
|
63
|
+
cipherInstance->init(args.cipherKey, args.iv);
|
|
64
|
+
return cipherInstance;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
50
67
|
default: {
|
|
68
|
+
// Default case for other ciphers
|
|
51
69
|
cipherInstance = std::make_shared<HybridCipher>();
|
|
52
70
|
cipherInstance->setArgs(args);
|
|
53
71
|
cipherInstance->init(args.cipherKey, args.iv);
|
|
@@ -17,7 +17,11 @@
|
|
|
17
17
|
#include <assert.h>
|
|
18
18
|
#include <string.h>
|
|
19
19
|
#if defined(__GNUC__)
|
|
20
|
-
#
|
|
20
|
+
#if TARGET_OS_MACCATALYST
|
|
21
|
+
#include <machine/endian.h> // Mac Catalyst
|
|
22
|
+
#else
|
|
23
|
+
#include <endian.h> // iOS
|
|
24
|
+
#endif
|
|
21
25
|
#endif
|
|
22
26
|
|
|
23
27
|
#include <openssl/sha.h>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeNitroModules","require","_readableStream","_interopRequireDefault","_reactNativeBuffer","_utils","_cipher","e","__esModule","default","CipherUtils","native","NitroModules","createHybridObject","getSupportedCiphers","getCiphers","CipherCommon","Stream","Transform","constructor","isCipher","cipherType","cipherKey","iv","options","streamOptions","transformKeys","key","authTagLen","getUIntOption","factory","createCipher","binaryLikeToArrayBuffer","update","data","inputEncoding","outputEncoding","defaultEncoding","getDefaultEncoding","validateEncoding","ArrayBuffer","isView","Error","ret","ab2str","Buffer","from","final","_transform","chunk","encoding","callback","push","normalizeEncoding","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sourceRoot":"../../src","sources":["cipher.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AAcA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAKwB,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAXP;;AAmBjB,MAAMG,WAAW,CAAC;EAChB,OAAeC,MAAM,GACnBC,qCAAY,CAACC,kBAAkB,CAAe,QAAQ,CAAC;EACzD,OAAcC,mBAAmBA,CAAA,EAAa;IAC5C,OAAO,IAAI,CAACH,MAAM,CAACG,mBAAmB,CAAC,CAAC;EAC1C;AACF;AAEO,SAASC,UAAUA,CAAA,EAAa;EACrC,OAAOL,WAAW,CAACI,mBAAmB,CAAC,CAAC;AAC1C;AAUA,MAAME,YAAY,SAASC,uBAAM,CAACC,SAAS,CAAC;EAG1CC,WAAWA,CAAC;IAAEC,QAAQ;IAAEC,UAAU;IAAEC,SAAS;IAAEC,EAAE;IAAEC;EAAoB,CAAC,EAAE;IACxE;IACA,MAAMC,aAA+B,GAAG,CAAC,CAAC;IAC1C,IAAID,OAAO,EAAE;MACX;MACA,MAAME,aAA4C,GAAG,CACnD,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX;MACA;MAAA,CACD;MACD,KAAK,MAAMC,GAAG,IAAID,aAAa,EAAE;QAC/B,IAAIC,GAAG,IAAIH,OAAO,EAAE;UAClB;UACCC,aAAa,CAASE,GAAG,CAAC,GAAIH,OAAO,CAASG,GAAG,CAAC;QACrD;MACF;IACF;IACA,KAAK,CAACF,aAAa,CAAC,CAAC,CAAC;;IAEtB,MAAMG,UAAkB,GACtB,IAAAC,qBAAa,EAACL,OAAO,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,GAChD,IAAAK,qBAAa,EAACL,OAAO,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,GAC7C,EAAE,CAAC,CAAC;;IAEV,MAAMM,OAAO,GACXlB,qCAAY,CAACC,kBAAkB,CAAgB,eAAe,CAAC;IACjE,IAAI,CAACF,MAAM,GAAGmB,OAAO,CAACC,YAAY,CAAC;MACjCX,QAAQ;MACRC,UAAU;MACVC,SAAS,EAAE,IAAAU,8BAAuB,EAACV,SAAS,CAAC;MAC7CC,EAAE,EAAE,IAAAS,8BAAuB,EAACT,EAAE,CAAC;MAC/BK;IACF,CAAC,CAAC;EACJ;
|
|
1
|
+
{"version":3,"names":["_reactNativeNitroModules","require","_readableStream","_interopRequireDefault","_reactNativeBuffer","_utils","_cipher","e","__esModule","default","CipherUtils","native","NitroModules","createHybridObject","getSupportedCiphers","getCiphers","CipherCommon","Stream","Transform","constructor","isCipher","cipherType","cipherKey","iv","options","streamOptions","transformKeys","key","authTagLen","getUIntOption","factory","createCipher","binaryLikeToArrayBuffer","update","data","inputEncoding","outputEncoding","defaultEncoding","getDefaultEncoding","validateEncoding","ArrayBuffer","isView","Error","ret","ab2str","Buffer","from","final","_transform","chunk","encoding","callback","push","normalizeEncoding","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sourceRoot":"../../src","sources":["cipher.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["expo-plugin/@types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createRNQCPlugin = createRNQCPlugin;
|
|
7
|
+
var _configPlugins = require("expo/config-plugins");
|
|
8
|
+
var _withSodiumIos = require("./withSodiumIos");
|
|
9
|
+
var _withSodiumAndroid = require("./withSodiumAndroid");
|
|
10
|
+
var _withXCode = require("./withXCode");
|
|
11
|
+
const withRNQCInternal = (config, props = {}) => {
|
|
12
|
+
// add XCode workarounds for some 16.x releases that are not RN-friendly
|
|
13
|
+
config = (0, _withXCode.withXCode)(config, props);
|
|
14
|
+
|
|
15
|
+
// enable libsodium algorithms
|
|
16
|
+
if (props.sodiumEnabled) {
|
|
17
|
+
config = (0, _withSodiumIos.withSodiumIos)(config, props);
|
|
18
|
+
config = (0, _withSodiumAndroid.withSodiumAndroid)(config, props);
|
|
19
|
+
}
|
|
20
|
+
return config;
|
|
21
|
+
};
|
|
22
|
+
function createRNQCPlugin(name, version) {
|
|
23
|
+
return (0, _configPlugins.createRunOncePlugin)(withRNQCInternal, name, version);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=withRNQC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","_withSodiumIos","_withSodiumAndroid","_withXCode","withRNQCInternal","config","props","withXCode","sodiumEnabled","withSodiumIos","withSodiumAndroid","createRNQCPlugin","name","version","createRunOncePlugin"],"sourceRoot":"../../../src","sources":["expo-plugin/withRNQC.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAGA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,MAAMI,gBAA2C,GAAGA,CAACC,MAAM,EAAEC,KAAK,GAAG,CAAC,CAAC,KAAK;EAC1E;EACAD,MAAM,GAAG,IAAAE,oBAAS,EAACF,MAAM,EAAEC,KAAK,CAAC;;EAEjC;EACA,IAAIA,KAAK,CAACE,aAAa,EAAE;IACvBH,MAAM,GAAG,IAAAI,4BAAa,EAACJ,MAAM,EAAEC,KAAK,CAAC;IACrCD,MAAM,GAAG,IAAAK,oCAAiB,EAACL,MAAM,EAAEC,KAAK,CAAC;EAC3C;EAEA,OAAOD,MAAM;AACf,CAAC;AAEM,SAASM,gBAAgBA,CAACC,IAAY,EAAEC,OAAe,EAAE;EAC9D,OAAO,IAAAC,kCAAmB,EAACV,gBAAgB,EAAEQ,IAAI,EAAEC,OAAO,CAAC;AAC7D","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withSodiumAndroid = void 0;
|
|
7
|
+
var _configPlugins = require("expo/config-plugins");
|
|
8
|
+
const withSodiumAndroid = config => {
|
|
9
|
+
return (0, _configPlugins.withGradleProperties)(config, config => {
|
|
10
|
+
config.modResults = config.modResults || [];
|
|
11
|
+
|
|
12
|
+
// Check if the property already exists
|
|
13
|
+
const existingProperty = config.modResults.find(item => item.type === 'property' && item.key === 'sodiumEnabled');
|
|
14
|
+
if (!existingProperty) {
|
|
15
|
+
config.modResults.push({
|
|
16
|
+
type: 'property',
|
|
17
|
+
key: 'sodiumEnabled',
|
|
18
|
+
value: 'true'
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return config;
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
exports.withSodiumAndroid = withSodiumAndroid;
|
|
25
|
+
//# sourceMappingURL=withSodiumAndroid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","withSodiumAndroid","config","withGradleProperties","modResults","existingProperty","find","item","type","key","push","value","exports"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumAndroid.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAGO,MAAMC,iBAA4C,GAAGC,MAAM,IAAI;EACpE,OAAO,IAAAC,mCAAoB,EAACD,MAAM,EAAEA,MAAM,IAAI;IAC5CA,MAAM,CAACE,UAAU,GAAGF,MAAM,CAACE,UAAU,IAAI,EAAE;;IAE3C;IACA,MAAMC,gBAAgB,GAAGH,MAAM,CAACE,UAAU,CAACE,IAAI,CAC7CC,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,UAAU,IAAID,IAAI,CAACE,GAAG,KAAK,eACnD,CAAC;IAED,IAAI,CAACJ,gBAAgB,EAAE;MACrBH,MAAM,CAACE,UAAU,CAACM,IAAI,CAAC;QACrBF,IAAI,EAAE,UAAU;QAChBC,GAAG,EAAE,eAAe;QACpBE,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IAEA,OAAOT,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACU,OAAA,CAAAX,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withSodiumIos = void 0;
|
|
7
|
+
var _configPlugins = require("expo/config-plugins");
|
|
8
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const withSodiumIos = config => {
|
|
12
|
+
return (0, _configPlugins.withDangerousMod)(config, ['ios', config => {
|
|
13
|
+
const podfilePath = _path.default.join(config.modRequest.platformProjectRoot, 'Podfile');
|
|
14
|
+
let contents = _fs.default.readFileSync(podfilePath, 'utf-8');
|
|
15
|
+
|
|
16
|
+
// Check if SODIUM_ENABLED is already set
|
|
17
|
+
if (!contents.includes("ENV['SODIUM_ENABLED']")) {
|
|
18
|
+
// Add it right after the RCT_NEW_ARCH_ENABLED ENV variable
|
|
19
|
+
contents = contents.replace(/^(ENV\['RCT_NEW_ARCH_ENABLED'\].*$)/m, `$1\nENV['SODIUM_ENABLED'] = '1'`);
|
|
20
|
+
_fs.default.writeFileSync(podfilePath, contents);
|
|
21
|
+
}
|
|
22
|
+
return config;
|
|
23
|
+
}]);
|
|
24
|
+
};
|
|
25
|
+
exports.withSodiumIos = withSodiumIos;
|
|
26
|
+
//# sourceMappingURL=withSodiumIos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","_fs","_interopRequireDefault","_path","e","__esModule","default","withSodiumIos","config","withDangerousMod","podfilePath","path","join","modRequest","platformProjectRoot","contents","fs","readFileSync","includes","replace","writeFileSync","exports"],"sourceRoot":"../../../src","sources":["expo-plugin/withSodiumIos.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,GAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAwB,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGjB,MAAMG,aAAwC,GAAGC,MAAM,IAAI;EAChE,OAAO,IAAAC,+BAAgB,EAACD,MAAM,EAAE,CAC9B,KAAK,EACLA,MAAM,IAAI;IACR,MAAME,WAAW,GAAGC,aAAI,CAACC,IAAI,CAC3BJ,MAAM,CAACK,UAAU,CAACC,mBAAmB,EACrC,SACF,CAAC;IACD,IAAIC,QAAQ,GAAGC,WAAE,CAACC,YAAY,CAACP,WAAW,EAAE,OAAO,CAAC;;IAEpD;IACA,IAAI,CAACK,QAAQ,CAACG,QAAQ,CAAC,uBAAuB,CAAC,EAAE;MAC/C;MACAH,QAAQ,GAAGA,QAAQ,CAACI,OAAO,CACzB,sCAAsC,EACtC,iCACF,CAAC;MACDH,WAAE,CAACI,aAAa,CAACV,WAAW,EAAEK,QAAQ,CAAC;IACzC;IAEA,OAAOP,MAAM;EACf,CAAC,CACF,CAAC;AACJ,CAAC;AAACa,OAAA,CAAAd,aAAA,GAAAA,aAAA","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withXCode = void 0;
|
|
7
|
+
var _expoBuildProperties = require("expo-build-properties");
|
|
8
|
+
var _configPlugins = require("expo/config-plugins");
|
|
9
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
/**
|
|
13
|
+
* Workaround for some jank XCode releases that break React Native native modules
|
|
14
|
+
*
|
|
15
|
+
* see: https://github.com/mrousavy/nitro/issues/422#issuecomment-2545988256
|
|
16
|
+
*/
|
|
17
|
+
const withXCode = config => {
|
|
18
|
+
// Use expo-build-properties to bump iOS deployment target
|
|
19
|
+
config = (0, _expoBuildProperties.withBuildProperties)(config, {
|
|
20
|
+
ios: {
|
|
21
|
+
deploymentTarget: '16.0'
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
// Patch the generated Podfile fallback to ensure platform is always 16.0
|
|
25
|
+
config = (0, _configPlugins.withDangerousMod)(config, ['ios', modConfig => {
|
|
26
|
+
const podfilePath = _path.default.join(modConfig.modRequest.platformProjectRoot, 'Podfile');
|
|
27
|
+
let contents = _fs.default.readFileSync(podfilePath, 'utf-8');
|
|
28
|
+
|
|
29
|
+
// Check if the IPHONEOS_DEPLOYMENT_TARGET setting is already present
|
|
30
|
+
// We search for the key being assigned, e.g., config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] =
|
|
31
|
+
const deploymentTargetSettingExists = /\.build_settings\s*\[\s*['"]IPHONEOS_DEPLOYMENT_TARGET['"]\s*\]\s*=/.test(contents);
|
|
32
|
+
if (!deploymentTargetSettingExists) {
|
|
33
|
+
// IPHONEOS_DEPLOYMENT_TARGET setting not found, proceed to add it.
|
|
34
|
+
contents = contents.replace(/(post_install\s+do\s+\|installer\|[\s\S]*?)(\r?\n\s\send\s*)$/m, `$1
|
|
35
|
+
|
|
36
|
+
# Expo Build Properties: force deployment target
|
|
37
|
+
# https://github.com/mrousavy/nitro/issues/422#issuecomment-2545988256
|
|
38
|
+
installer.pods_project.targets.each do |target|
|
|
39
|
+
target.build_configurations.each do |config|
|
|
40
|
+
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
$2`);
|
|
44
|
+
}
|
|
45
|
+
_fs.default.writeFileSync(podfilePath, contents);
|
|
46
|
+
return modConfig;
|
|
47
|
+
}]);
|
|
48
|
+
return config;
|
|
49
|
+
};
|
|
50
|
+
exports.withXCode = withXCode;
|
|
51
|
+
//# sourceMappingURL=withXCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_expoBuildProperties","require","_configPlugins","_fs","_interopRequireDefault","_path","e","__esModule","default","withXCode","config","withBuildProperties","ios","deploymentTarget","withDangerousMod","modConfig","podfilePath","path","join","modRequest","platformProjectRoot","contents","fs","readFileSync","deploymentTargetSettingExists","test","replace","writeFileSync","exports"],"sourceRoot":"../../../src","sources":["expo-plugin/withXCode.ts"],"mappings":";;;;;;AAEA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,GAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAD,sBAAA,CAAAH,OAAA;AAAwB,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExB;AACA;AACA;AACA;AACA;AACO,MAAMG,SAAoC,GAAGC,MAAM,IAAI;EAC5D;EACAA,MAAM,GAAG,IAAAC,wCAAmB,EAACD,MAAM,EAAE;IAAEE,GAAG,EAAE;MAAEC,gBAAgB,EAAE;IAAO;EAAE,CAAC,CAAC;EAC3E;EACAH,MAAM,GAAG,IAAAI,+BAAgB,EAACJ,MAAM,EAAE,CAChC,KAAK,EACLK,SAAS,IAAI;IACX,MAAMC,WAAW,GAAGC,aAAI,CAACC,IAAI,CAC3BH,SAAS,CAACI,UAAU,CAACC,mBAAmB,EACxC,SACF,CAAC;IACD,IAAIC,QAAQ,GAAGC,WAAE,CAACC,YAAY,CAACP,WAAW,EAAE,OAAO,CAAC;;IAEpD;IACA;IACA,MAAMQ,6BAA6B,GACjC,qEAAqE,CAACC,IAAI,CACxEJ,QACF,CAAC;IAEH,IAAI,CAACG,6BAA6B,EAAE;MAClC;MACAH,QAAQ,GAAGA,QAAQ,CAACK,OAAO,CACzB,gEAAgE,EAChE;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACQ,CAAC;IACH;IAEAJ,WAAE,CAACK,aAAa,CAACX,WAAW,EAAEK,QAAQ,CAAC;IACvC,OAAON,SAAS;EAClB,CAAC,CACF,CAAC;EACF,OAAOL,MAAM;AACf,CAAC;AAACkB,OAAA,CAAAnB,SAAA,GAAAA,SAAA","ignoreList":[]}
|
package/lib/module/cipher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroModules","Stream","Buffer","ab2str","binaryLikeToArrayBuffer","getDefaultEncoding","getUIntOption","normalizeEncoding","validateEncoding","CipherUtils","native","createHybridObject","getSupportedCiphers","getCiphers","CipherCommon","Transform","constructor","isCipher","cipherType","cipherKey","iv","options","streamOptions","transformKeys","key","authTagLen","factory","createCipher","update","data","inputEncoding","outputEncoding","defaultEncoding","ArrayBuffer","isView","Error","ret","from","final","_transform","chunk","encoding","callback","push","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sourceRoot":"../../src","sources":["cipher.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AACzD,OAAOC,MAAM,MAAiC,iBAAiB;AAC/D,SAASC,MAAM,QAAQ,gCAAgC;;AAStC;;AAKjB,SAASC,MAAM,EAAEC,uBAAuB,QAAQ,SAAS;AACzD,SACEC,kBAAkB,EAClBC,aAAa,EACbC,iBAAiB,EACjBC,gBAAgB,QACX,gBAAgB;AAQvB,MAAMC,WAAW,CAAC;EAChB,OAAeC,MAAM,GACnBV,YAAY,CAACW,kBAAkB,CAAe,QAAQ,CAAC;EACzD,OAAcC,mBAAmBA,CAAA,EAAa;IAC5C,OAAO,IAAI,CAACF,MAAM,CAACE,mBAAmB,CAAC,CAAC;EAC1C;AACF;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAa;EACrC,OAAOJ,WAAW,CAACG,mBAAmB,CAAC,CAAC;AAC1C;AAUA,MAAME,YAAY,SAASb,MAAM,CAACc,SAAS,CAAC;EAG1CC,WAAWA,CAAC;IAAEC,QAAQ;IAAEC,UAAU;IAAEC,SAAS;IAAEC,EAAE;IAAEC;EAAoB,CAAC,EAAE;IACxE;IACA,MAAMC,aAA+B,GAAG,CAAC,CAAC;IAC1C,IAAID,OAAO,EAAE;MACX;MACA,MAAME,aAA4C,GAAG,CACnD,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX;MACA;MAAA,CACD;MACD,KAAK,MAAMC,GAAG,IAAID,aAAa,EAAE;QAC/B,IAAIC,GAAG,IAAIH,OAAO,EAAE;UAClB;UACCC,aAAa,CAASE,GAAG,CAAC,GAAIH,OAAO,CAASG,GAAG,CAAC;QACrD;MACF;IACF;IACA,KAAK,CAACF,aAAa,CAAC,CAAC,CAAC;;IAEtB,MAAMG,UAAkB,GACtBnB,aAAa,CAACe,OAAO,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,GAChDf,aAAa,CAACe,OAAO,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,GAC7C,EAAE,CAAC,CAAC;;IAEV,MAAMK,OAAO,GACX1B,YAAY,CAACW,kBAAkB,CAAgB,eAAe,CAAC;IACjE,IAAI,CAACD,MAAM,GAAGgB,OAAO,CAACC,YAAY,CAAC;MACjCV,QAAQ;MACRC,UAAU;MACVC,SAAS,EAAEf,uBAAuB,CAACe,SAAS,CAAC;MAC7CC,EAAE,EAAEhB,uBAAuB,CAACgB,EAAE,CAAC;MAC/BK;IACF,CAAC,CAAC;EACJ;
|
|
1
|
+
{"version":3,"names":["NitroModules","Stream","Buffer","ab2str","binaryLikeToArrayBuffer","getDefaultEncoding","getUIntOption","normalizeEncoding","validateEncoding","CipherUtils","native","createHybridObject","getSupportedCiphers","getCiphers","CipherCommon","Transform","constructor","isCipher","cipherType","cipherKey","iv","options","streamOptions","transformKeys","key","authTagLen","factory","createCipher","update","data","inputEncoding","outputEncoding","defaultEncoding","ArrayBuffer","isView","Error","ret","from","final","_transform","chunk","encoding","callback","push","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sourceRoot":"../../src","sources":["cipher.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["expo-plugin/@types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createRunOncePlugin } from 'expo/config-plugins';
|
|
4
|
+
import { withSodiumIos } from './withSodiumIos';
|
|
5
|
+
import { withSodiumAndroid } from './withSodiumAndroid';
|
|
6
|
+
import { withXCode } from './withXCode';
|
|
7
|
+
const withRNQCInternal = (config, props = {}) => {
|
|
8
|
+
// add XCode workarounds for some 16.x releases that are not RN-friendly
|
|
9
|
+
config = withXCode(config, props);
|
|
10
|
+
|
|
11
|
+
// enable libsodium algorithms
|
|
12
|
+
if (props.sodiumEnabled) {
|
|
13
|
+
config = withSodiumIos(config, props);
|
|
14
|
+
config = withSodiumAndroid(config, props);
|
|
15
|
+
}
|
|
16
|
+
return config;
|
|
17
|
+
};
|
|
18
|
+
export function createRNQCPlugin(name, version) {
|
|
19
|
+
return createRunOncePlugin(withRNQCInternal, name, version);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=withRNQC.js.map
|