react-native-des-machine 0.1.0 → 1.0.0

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/ios/DesMachine.mm CHANGED
@@ -20,18 +20,6 @@ static NSString *const FORMAT_HEX = @"HEX";
20
20
 
21
21
  @implementation DesMachine
22
22
 
23
- #pragma mark - Initialization
24
-
25
- - (instancetype)init {
26
- self = [super init];
27
- if (self) {
28
- _mode = MODE_ECB;
29
- _padding = PADDING_PKCS7;
30
- _outputFormat = FORMAT_BASE64;
31
- }
32
- return self;
33
- }
34
-
35
23
  #pragma mark - TurboModule
36
24
 
37
25
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
@@ -48,93 +36,142 @@ static NSString *const FORMAT_HEX = @"HEX";
48
36
  #pragma mark - NativeDesMachineSpec Methods
49
37
 
50
38
  /**
51
- * Set the DES machine parameters including key, mode, padding, and output format.
52
- * @param params NSDictionary containing:
39
+ * Encrypt the provided plaintext using DES algorithm.
40
+ * Stateless operation - all parameters are passed with each call.
41
+ *
42
+ * @param params DesMachineParams containing:
53
43
  * - key: NSString (required, minimum 8 characters)
54
44
  * - mode: NSString (optional, default: ECB) - ECB, CBC, CFB, OFB, CTR
55
45
  * - padding: NSString (optional, default: PKCS7) - PKCS7, ISO10126, ZERO, NONE
56
46
  * - outputFormat: NSString (optional, default: BASE64) - BASE64, HEX
47
+ * @param text The plaintext to encrypt
48
+ * @return Encrypted string in the configured output format (BASE64 or HEX)
57
49
  */
58
- - (void)setMachineParams:(JS::NativeDesMachine::DesMachineParams &)params {
50
+ - (NSString *)encrypt:(JS::NativeDesMachine::DesMachineParams &)params
51
+ text:(NSString *)text {
52
+ // Parse parameters
59
53
  NSString *key = params.key();
60
-
61
54
  if (!key || key.length < 8) {
62
55
  @throw [NSException exceptionWithName:@"InvalidKeyException"
63
56
  reason:@"DES key must be at least 8 characters long"
64
57
  userInfo:nil];
65
58
  }
66
59
 
67
- // Extract optional parameters with defaults
68
- // Codegen returns NSString* (nil if not provided) for optional string params
69
- NSString *modeParam = params.mode();
70
- NSString *paddingParam = params.padding();
71
- NSString *outputFormatParam = params.outputFormat();
72
-
73
- self.mode = (modeParam && modeParam.length > 0) ? modeParam : MODE_ECB;
74
- self.padding = (paddingParam && paddingParam.length > 0) ? paddingParam : PADDING_PKCS7;
75
- self.outputFormat = (outputFormatParam && outputFormatParam.length > 0) ? outputFormatParam : FORMAT_BASE64;
76
-
77
- // Initialize secret key (DES uses 8 bytes)
78
- NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
79
- self.secretKey = [keyData subdataWithRange:NSMakeRange(0, MIN(8, keyData.length))];
80
-
81
- // Pad key to 8 bytes if needed
82
- if (self.secretKey.length < 8) {
83
- NSMutableData *paddedKey = [NSMutableData dataWithData:self.secretKey];
84
- [paddedKey setLength:8];
85
- self.secretKey = paddedKey;
60
+ NSString *iv = params.iv();
61
+ if (iv && iv.length != 8) {
62
+ @throw [NSException exceptionWithName:@"InvalidIVException"
63
+ reason:@"IV must be exactly 8 characters long"
64
+ userInfo:nil];
86
65
  }
87
66
 
88
- // Initialize IV for modes that require it (use first 8 bytes of key)
89
- if (![self.mode isEqualToString:MODE_ECB]) {
90
- self.ivData = [self.secretKey copy];
91
- } else {
92
- self.ivData = nil;
93
- }
94
- }
95
-
96
- /**
97
- * Encrypt the provided plaintext using DES algorithm.
98
- * @param text The plaintext to encrypt
99
- * @return Encrypted string in the configured output format (BASE64 or HEX)
100
- */
101
- - (NSString *)encrypt:(NSString *)text {
102
- if (!self.secretKey) {
103
- @throw [NSException exceptionWithName:@"NotInitializedException"
104
- reason:@"DES not initialized. Call setMachineParams() first."
105
- userInfo:nil];
67
+ NSString *mode = params.mode() ?: MODE_ECB;
68
+ NSString *padding = params.padding() ?: PADDING_PKCS7;
69
+ NSString *outputFormat = params.outputFormat() ?: FORMAT_BASE64;
70
+
71
+ // Prepare key and IV
72
+ NSData *keyData = [self prepareKey:key];
73
+ NSData *ivData = nil;
74
+ if (![mode isEqualToString:MODE_ECB]) {
75
+ ivData = iv ? [self prepareIV:iv] : keyData;
106
76
  }
107
77
 
78
+ // Encrypt
108
79
  NSData *inputData = [text dataUsingEncoding:NSUTF8StringEncoding];
109
- NSData *paddedData = [self applyPadding:inputData];
110
- NSData *encryptedData = [self performDESOperation:kCCEncrypt onData:paddedData];
80
+ NSData *paddedData = [self applyPadding:inputData withPadding:padding];
81
+ NSData *encryptedData = [self performDESOperation:kCCEncrypt
82
+ onData:paddedData
83
+ withKey:keyData
84
+ iv:ivData
85
+ mode:mode
86
+ padding:padding];
111
87
 
112
- return [self formatOutput:encryptedData];
88
+ return [self formatOutput:encryptedData withFormat:outputFormat];
113
89
  }
114
90
 
115
91
  /**
116
92
  * Decrypt the provided ciphertext using DES algorithm.
93
+ * Stateless operation - all parameters are passed with each call.
94
+ *
95
+ * @param params DesMachineParams containing:
96
+ * - key: NSString (required, minimum 8 characters)
97
+ * - mode: NSString (optional, default: ECB) - ECB, CBC, CFB, OFB, CTR
98
+ * - padding: NSString (optional, default: PKCS7) - PKCS7, ISO10126, ZERO, NONE
99
+ * - outputFormat: NSString (optional, default: BASE64) - BASE64, HEX
117
100
  * @param text Encrypted string in the configured format (BASE64 or HEX)
118
101
  * @return Decrypted plaintext
119
102
  */
120
- - (NSString *)decrypt:(NSString *)text {
121
- if (!self.secretKey) {
122
- @throw [NSException exceptionWithName:@"NotInitializedException"
123
- reason:@"DES not initialized. Call setMachineParams() first."
103
+ - (NSString *)decrypt:(JS::NativeDesMachine::DesMachineParams &)params
104
+ text:(NSString *)text {
105
+ // Parse parameters
106
+ NSString *key = params.key();
107
+ if (!key || key.length < 8) {
108
+ @throw [NSException exceptionWithName:@"InvalidKeyException"
109
+ reason:@"DES key must be at least 8 characters long"
110
+ userInfo:nil];
111
+ }
112
+
113
+ NSString *iv = params.iv();
114
+ if (iv && iv.length != 8) {
115
+ @throw [NSException exceptionWithName:@"InvalidIVException"
116
+ reason:@"IV must be exactly 8 characters long"
124
117
  userInfo:nil];
125
118
  }
126
119
 
127
- NSData *encryptedData = [self parseInput:text];
128
- NSData *decryptedData = [self performDESOperation:kCCDecrypt onData:encryptedData];
129
- NSData *unpaddedData = [self removePadding:decryptedData];
120
+ NSString *mode = params.mode() ?: MODE_ECB;
121
+ NSString *padding = params.padding() ?: PADDING_PKCS7;
122
+ NSString *outputFormat = params.outputFormat() ?: FORMAT_BASE64;
123
+
124
+ // Prepare key and IV
125
+ NSData *keyData = [self prepareKey:key];
126
+ NSData *ivData = nil;
127
+ if (![mode isEqualToString:MODE_ECB]) {
128
+ ivData = iv ? [self prepareIV:iv] : keyData;
129
+ }
130
+
131
+ // Decrypt
132
+ NSData *encryptedData = [self parseInput:text withFormat:outputFormat];
133
+ NSData *decryptedData = [self performDESOperation:kCCDecrypt
134
+ onData:encryptedData
135
+ withKey:keyData
136
+ iv:ivData
137
+ mode:mode
138
+ padding:padding];
139
+ NSData *unpaddedData = [self removePadding:decryptedData withPadding:padding];
130
140
 
131
141
  return [[NSString alloc] initWithData:unpaddedData encoding:NSUTF8StringEncoding];
132
142
  }
133
143
 
144
+ #pragma mark - Key and IV Preparation
145
+
146
+ - (NSData *)prepareKey:(NSString *)key {
147
+ NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
148
+ NSData *secretKey = [keyData subdataWithRange:NSMakeRange(0, MIN(8, keyData.length))];
149
+
150
+ // Pad key to 8 bytes if needed
151
+ if (secretKey.length < 8) {
152
+ NSMutableData *paddedKey = [NSMutableData dataWithData:secretKey];
153
+ [paddedKey setLength:8];
154
+ return paddedKey;
155
+ }
156
+
157
+ return secretKey;
158
+ }
159
+
160
+ - (NSData *)prepareIV:(NSString *)iv {
161
+ NSData *ivData = [iv dataUsingEncoding:NSUTF8StringEncoding];
162
+ // IV must be exactly 8 bytes for DES
163
+ return [ivData subdataWithRange:NSMakeRange(0, MIN(8, ivData.length))];
164
+ }
165
+
134
166
  #pragma mark - DES Operations
135
167
 
136
- - (NSData *)performDESOperation:(CCOperation)operation onData:(NSData *)data {
137
- CCOptions options = [self getCCOptions];
168
+ - (NSData *)performDESOperation:(CCOperation)operation
169
+ onData:(NSData *)data
170
+ withKey:(NSData *)key
171
+ iv:(NSData *)iv
172
+ mode:(NSString *)mode
173
+ padding:(NSString *)padding {
174
+ CCOptions options = [self getCCOptionsForMode:mode padding:padding];
138
175
 
139
176
  size_t bufferSize = data.length + kCCBlockSizeDES;
140
177
  void *buffer = malloc(bufferSize);
@@ -144,9 +181,9 @@ static NSString *const FORMAT_HEX = @"HEX";
144
181
  operation,
145
182
  kCCAlgorithmDES,
146
183
  options,
147
- self.secretKey.bytes,
184
+ key.bytes,
148
185
  kCCKeySizeDES,
149
- self.ivData.bytes,
186
+ iv.bytes,
150
187
  data.bytes,
151
188
  data.length,
152
189
  buffer,
@@ -167,16 +204,16 @@ static NSString *const FORMAT_HEX = @"HEX";
167
204
  return result;
168
205
  }
169
206
 
170
- - (CCOptions)getCCOptions {
207
+ - (CCOptions)getCCOptionsForMode:(NSString *)mode padding:(NSString *)padding {
171
208
  CCOptions options = 0;
172
209
 
173
210
  // ECB mode
174
- if ([self.mode isEqualToString:MODE_ECB]) {
211
+ if ([mode isEqualToString:MODE_ECB]) {
175
212
  options |= kCCOptionECBMode;
176
213
  }
177
214
 
178
215
  // Padding
179
- if ([self.padding isEqualToString:PADDING_PKCS7]) {
216
+ if ([padding isEqualToString:PADDING_PKCS7]) {
180
217
  options |= kCCOptionPKCS7Padding;
181
218
  }
182
219
  // For other padding types, we handle manually (no padding flag = NoPadding)
@@ -186,8 +223,8 @@ static NSString *const FORMAT_HEX = @"HEX";
186
223
 
187
224
  #pragma mark - Padding
188
225
 
189
- - (NSData *)applyPadding:(NSData *)data {
190
- if ([self.padding isEqualToString:PADDING_PKCS7]) {
226
+ - (NSData *)applyPadding:(NSData *)data withPadding:(NSString *)padding {
227
+ if ([padding isEqualToString:PADDING_PKCS7]) {
191
228
  // PKCS7 is handled by CommonCrypto
192
229
  return data;
193
230
  }
@@ -195,16 +232,16 @@ static NSString *const FORMAT_HEX = @"HEX";
195
232
  NSUInteger blockSize = kCCBlockSizeDES;
196
233
  NSUInteger paddingLength = blockSize - (data.length % blockSize);
197
234
 
198
- if (paddingLength == blockSize && [self.padding isEqualToString:PADDING_NONE]) {
235
+ if (paddingLength == blockSize && [padding isEqualToString:PADDING_NONE]) {
199
236
  return data;
200
237
  }
201
238
 
202
239
  NSMutableData *paddedData = [NSMutableData dataWithData:data];
203
240
 
204
- if ([self.padding isEqualToString:PADDING_ZERO] || [self.padding isEqualToString:PADDING_NONE]) {
241
+ if ([padding isEqualToString:PADDING_ZERO] || [padding isEqualToString:PADDING_NONE]) {
205
242
  // Zero padding
206
243
  [paddedData setLength:data.length + paddingLength];
207
- } else if ([self.padding isEqualToString:PADDING_ISO10126]) {
244
+ } else if ([padding isEqualToString:PADDING_ISO10126]) {
208
245
  // ISO10126: random bytes followed by padding length
209
246
  uint8_t randomBytes[paddingLength];
210
247
  for (NSUInteger i = 0; i < paddingLength - 1; i++) {
@@ -217,13 +254,13 @@ static NSString *const FORMAT_HEX = @"HEX";
217
254
  return paddedData;
218
255
  }
219
256
 
220
- - (NSData *)removePadding:(NSData *)data {
221
- if ([self.padding isEqualToString:PADDING_PKCS7]) {
257
+ - (NSData *)removePadding:(NSData *)data withPadding:(NSString *)padding {
258
+ if ([padding isEqualToString:PADDING_PKCS7]) {
222
259
  // PKCS7 is handled by CommonCrypto
223
260
  return data;
224
261
  }
225
262
 
226
- if ([self.padding isEqualToString:PADDING_ZERO]) {
263
+ if ([padding isEqualToString:PADDING_ZERO]) {
227
264
  // Find last non-zero byte
228
265
  const uint8_t *bytes = (const uint8_t *)data.bytes;
229
266
  NSInteger lastIndex = data.length - 1;
@@ -233,7 +270,7 @@ static NSString *const FORMAT_HEX = @"HEX";
233
270
  return [data subdataWithRange:NSMakeRange(0, lastIndex + 1)];
234
271
  }
235
272
 
236
- if ([self.padding isEqualToString:PADDING_ISO10126]) {
273
+ if ([padding isEqualToString:PADDING_ISO10126]) {
237
274
  // Last byte indicates padding length
238
275
  const uint8_t *bytes = (const uint8_t *)data.bytes;
239
276
  uint8_t paddingLength = bytes[data.length - 1];
@@ -247,8 +284,8 @@ static NSString *const FORMAT_HEX = @"HEX";
247
284
 
248
285
  #pragma mark - Output Formatting
249
286
 
250
- - (NSString *)formatOutput:(NSData *)data {
251
- if ([self.outputFormat isEqualToString:FORMAT_HEX]) {
287
+ - (NSString *)formatOutput:(NSData *)data withFormat:(NSString *)format {
288
+ if ([format isEqualToString:FORMAT_HEX]) {
252
289
  NSMutableString *hexString = [NSMutableString stringWithCapacity:data.length * 2];
253
290
  const uint8_t *bytes = (const uint8_t *)data.bytes;
254
291
  for (NSUInteger i = 0; i < data.length; i++) {
@@ -261,8 +298,8 @@ static NSString *const FORMAT_HEX = @"HEX";
261
298
  return [data base64EncodedStringWithOptions:0];
262
299
  }
263
300
 
264
- - (NSData *)parseInput:(NSString *)text {
265
- if ([self.outputFormat isEqualToString:FORMAT_HEX]) {
301
+ - (NSData *)parseInput:(NSString *)text withFormat:(NSString *)format {
302
+ if ([format isEqualToString:FORMAT_HEX]) {
266
303
  NSMutableData *data = [NSMutableData dataWithCapacity:text.length / 2];
267
304
  for (NSUInteger i = 0; i < text.length; i += 2) {
268
305
  NSString *hexByte = [text substringWithRange:NSMakeRange(i, 2)];
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDesMachine.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAmBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDesMachine.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AA0CpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import DesMachine from "./NativeDesMachine.js";
3
+ import NativeDesMachine from "./NativeDesMachine.js";
4
+ // Constants
4
5
  const Padding = {
5
6
  PKCS7: 'PKCS7',
6
7
  ISO10126: 'ISO10126',
@@ -18,6 +19,9 @@ const Format = {
18
19
  BASE64: 'BASE64',
19
20
  HEX: 'HEX'
20
21
  };
22
+
23
+ // Options for UI
24
+
21
25
  const modeOptions = [{
22
26
  label: 'ECB (Electronic Codebook)',
23
27
  value: Mode.ECB
@@ -54,22 +58,156 @@ const formatOptions = [{
54
58
  label: 'Hexadecimal',
55
59
  value: Format.HEX
56
60
  }];
61
+
62
+ // Default parameters
57
63
  const defaultParams = {
58
64
  mode: Mode.ECB,
59
65
  padding: Padding.PKCS7,
60
66
  outputFormat: Format.BASE64
61
67
  };
62
- export function setMachineParams(params) {
63
- DesMachine.setMachineParams({
64
- ...defaultParams,
65
- ...params
66
- });
68
+
69
+ /**
70
+ * DES Machine class for encryption and decryption.
71
+ * Supports multiple instances with different configurations.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Create a machine with default settings
76
+ * const machine = new DesMachine({ key: 'mySecretKey123' });
77
+ *
78
+ * // Encrypt and decrypt
79
+ * const encrypted = machine.encrypt('Hello World');
80
+ * const decrypted = machine.decrypt(encrypted);
81
+ *
82
+ * // Create another machine with custom IV for CBC mode
83
+ * const cbcMachine = new DesMachine({
84
+ * key: 'anotherKey1',
85
+ * iv: '12345678', // 8 characters for DES
86
+ * mode: Mode.CBC,
87
+ * outputFormat: Format.HEX,
88
+ * });
89
+ * ```
90
+ */
91
+ class DesMachine {
92
+ /**
93
+ * Create a new DES Machine instance.
94
+ * @param params - Configuration parameters
95
+ * @throws Error if key is missing or less than 8 characters
96
+ * @throws Error if iv is provided but not exactly 8 characters
97
+ */
98
+ constructor(params) {
99
+ if (!params.key) {
100
+ throw new Error('DesMachine: key is required');
101
+ }
102
+ if (params.key.length < 8) {
103
+ throw new Error('DesMachine: key must be at least 8 characters long');
104
+ }
105
+ if (params.iv !== undefined && params.iv.length !== 8) {
106
+ throw new Error('DesMachine: iv must be exactly 8 characters long');
107
+ }
108
+ this.params = {
109
+ key: params.key,
110
+ iv: params.iv,
111
+ mode: params.mode ?? defaultParams.mode,
112
+ padding: params.padding ?? defaultParams.padding,
113
+ outputFormat: params.outputFormat ?? defaultParams.outputFormat
114
+ };
115
+ }
116
+
117
+ /**
118
+ * Encrypt plaintext using DES algorithm.
119
+ * @param text - The plaintext to encrypt
120
+ * @returns Encrypted string in the configured output format
121
+ */
122
+ encrypt(text) {
123
+ return NativeDesMachine.encrypt(this.params, text);
124
+ }
125
+
126
+ /**
127
+ * Decrypt ciphertext using DES algorithm.
128
+ * @param text - The encrypted string to decrypt
129
+ * @returns Decrypted plaintext
130
+ */
131
+ decrypt(text) {
132
+ return NativeDesMachine.decrypt(this.params, text);
133
+ }
134
+
135
+ /**
136
+ * Get the current configuration parameters.
137
+ * @returns A copy of the current parameters (key and iv are masked)
138
+ */
139
+ getParams() {
140
+ return {
141
+ ...this.params,
142
+ key: this.params.key.substring(0, 2) + '***',
143
+ iv: this.params.iv ? this.params.iv.substring(0, 2) + '***' : undefined
144
+ };
145
+ }
146
+
147
+ /**
148
+ * Update configuration parameters.
149
+ * @param params - New parameters to apply (key and iv cannot be changed)
150
+ */
151
+ updateParams(params) {
152
+ if (params.mode) this.params.mode = params.mode;
153
+ if (params.padding) this.params.padding = params.padding;
154
+ if (params.outputFormat) this.params.outputFormat = params.outputFormat;
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Create a new DES Machine instance.
160
+ * @param params - Configuration parameters
161
+ * @returns A new DesMachine instance
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const machine = createDesMachine({ key: 'mySecretKey123' });
166
+ * const encrypted = machine.encrypt('Hello');
167
+ * ```
168
+ */
169
+ function createDesMachine(params) {
170
+ return new DesMachine(params);
67
171
  }
68
- export function encrypt(text) {
69
- return DesMachine.encrypt(text);
172
+
173
+ /**
174
+ * Quick encrypt function for one-off encryption.
175
+ * @param params - Configuration parameters including key
176
+ * @param text - The plaintext to encrypt
177
+ * @returns Encrypted string
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * const encrypted = encrypt({ key: 'mySecretKey123' }, 'Hello World');
182
+ * ```
183
+ */
184
+ function encrypt(params, text) {
185
+ const machine = new DesMachine(params);
186
+ return machine.encrypt(text);
70
187
  }
71
- export function decrypt(text) {
72
- return DesMachine.decrypt(text);
188
+
189
+ /**
190
+ * Quick decrypt function for one-off decryption.
191
+ * @param params - Configuration parameters including key
192
+ * @param text - The encrypted string to decrypt
193
+ * @returns Decrypted plaintext
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * const decrypted = decrypt({ key: 'mySecretKey123' }, encryptedText);
198
+ * ```
199
+ */
200
+ function decrypt(params, text) {
201
+ const machine = new DesMachine(params);
202
+ return machine.decrypt(text);
73
203
  }
74
- export { Mode, Padding, Format, modeOptions, paddingOptions, formatOptions };
204
+ export {
205
+ // Main class
206
+ DesMachine, createDesMachine,
207
+ // Quick functions
208
+ encrypt, decrypt,
209
+ // Constants
210
+ Mode, Padding, Format,
211
+ // Options for UI
212
+ modeOptions, paddingOptions, formatOptions };
75
213
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DesMachine","Padding","PKCS7","ISO10126","ZERO","NONE","Mode","ECB","CBC","CFB","OFB","CTR","Format","BASE64","HEX","modeOptions","label","value","paddingOptions","formatOptions","defaultParams","mode","padding","outputFormat","setMachineParams","params","encrypt","text","decrypt"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAOA,UAAU,MAAiC,uBAAoB;AAOtE,MAAMC,OAA6D,GAAG;EACpEC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,IAAoD,GAAG;EAC3DC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE;AACP,CAAC;AAED,MAAMC,MAAkD,GAAG;EACzDC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE;AACP,CAAC;AAOD,MAAMC,WAA8C,GAAG,CACrD;EAAEC,KAAK,EAAE,2BAA2B;EAAEC,KAAK,EAAEX,IAAI,CAACC;AAAI,CAAC,EACvD;EAAES,KAAK,EAAE,6BAA6B;EAAEC,KAAK,EAAEX,IAAI,CAACE;AAAI,CAAC,EACzD;EAAEQ,KAAK,EAAE,uBAAuB;EAAEC,KAAK,EAAEX,IAAI,CAACG;AAAI,CAAC,EACnD;EAAEO,KAAK,EAAE,uBAAuB;EAAEC,KAAK,EAAEX,IAAI,CAACI;AAAI,CAAC,EACnD;EAAEM,KAAK,EAAE,eAAe;EAAEC,KAAK,EAAEX,IAAI,CAACK;AAAI,CAAC,CAC5C;AAED,MAAMO,cAAoD,GAAG,CAC3D;EAAEF,KAAK,EAAE,OAAO;EAAEC,KAAK,EAAEhB,OAAO,CAACC;AAAM,CAAC,EACxC;EAAEc,KAAK,EAAE,UAAU;EAAEC,KAAK,EAAEhB,OAAO,CAACE;AAAS,CAAC,EAC9C;EAAEa,KAAK,EAAE,cAAc;EAAEC,KAAK,EAAEhB,OAAO,CAACG;AAAK,CAAC,EAC9C;EAAEY,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAEhB,OAAO,CAACI;AAAK,CAAC,CAC7C;AAED,MAAMc,aAA8C,GAAG,CACrD;EAAEH,KAAK,EAAE,QAAQ;EAAEC,KAAK,EAAEL,MAAM,CAACC;AAAO,CAAC,EACzC;EAAEG,KAAK,EAAE,aAAa;EAAEC,KAAK,EAAEL,MAAM,CAACE;AAAI,CAAC,CAC5C;AAED,MAAMM,aAAwC,GAAG;EAC/CC,IAAI,EAAEf,IAAI,CAACC,GAAG;EACde,OAAO,EAAErB,OAAO,CAACC,KAAK;EACtBqB,YAAY,EAAEX,MAAM,CAACC;AACvB,CAAC;AAED,OAAO,SAASW,gBAAgBA,CAACC,MAAwB,EAAQ;EAC/DzB,UAAU,CAACwB,gBAAgB,CAAC;IAC1B,GAAGJ,aAAa;IAChB,GAAGK;EACL,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,OAAOA,CAACC,IAAY,EAAU;EAC5C,OAAO3B,UAAU,CAAC0B,OAAO,CAACC,IAAI,CAAC;AACjC;AAEA,OAAO,SAASC,OAAOA,CAACD,IAAY,EAAU;EAC5C,OAAO3B,UAAU,CAAC4B,OAAO,CAACD,IAAI,CAAC;AACjC;AAEA,SAASrB,IAAI,EAAEL,OAAO,EAAEW,MAAM,EAAEG,WAAW,EAAEG,cAAc,EAAEC,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["NativeDesMachine","Padding","PKCS7","ISO10126","ZERO","NONE","Mode","ECB","CBC","CFB","OFB","CTR","Format","BASE64","HEX","modeOptions","label","value","paddingOptions","formatOptions","defaultParams","mode","padding","outputFormat","DesMachine","constructor","params","key","Error","length","iv","undefined","encrypt","text","decrypt","getParams","substring","updateParams","createDesMachine","machine"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -3,15 +3,37 @@ export type ModeEncryptionType = 'ECB' | 'CBC' | 'CFB' | 'OFB' | 'CTR';
3
3
  export type PaddingEncryptionType = 'PKCS7' | 'ISO10126' | 'ZERO' | 'NONE';
4
4
  export type OutputFormatType = 'BASE64' | 'HEX';
5
5
  export interface DesMachineParams {
6
+ /**
7
+ * Encryption key (minimum 8 characters)
8
+ */
6
9
  key: string;
10
+ /**
11
+ * Initialization Vector for non-ECB modes (exactly 8 characters)
12
+ * If not provided, the first 8 bytes of the key will be used as IV
13
+ */
14
+ iv?: string;
15
+ /**
16
+ * Cipher mode (default: ECB)
17
+ */
7
18
  mode?: ModeEncryptionType;
19
+ /**
20
+ * Padding scheme (default: PKCS7)
21
+ */
8
22
  padding?: PaddingEncryptionType;
23
+ /**
24
+ * Output format (default: BASE64)
25
+ */
9
26
  outputFormat?: OutputFormatType;
10
27
  }
11
28
  export interface Spec extends TurboModule {
12
- setMachineParams(params: DesMachineParams): void;
13
- encrypt(text: string): string;
14
- decrypt(text: string): string;
29
+ /**
30
+ * Encrypt text with provided params (stateless operation)
31
+ */
32
+ encrypt(params: DesMachineParams, text: string): string;
33
+ /**
34
+ * Decrypt text with provided params (stateless operation)
35
+ */
36
+ decrypt(params: DesMachineParams, text: string): string;
15
37
  }
16
38
  declare const _default: Spec;
17
39
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeDesMachine.d.ts","sourceRoot":"","sources":["../../../src/NativeDesMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACvE,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeDesMachine.d.ts","sourceRoot":"","sources":["../../../src/NativeDesMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACvE,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAExD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACzD;;AAED,wBAAoE"}