feat(interface)!: set pigeon as default implementation
This commit is contained in:
parent
c8ff1149d7
commit
f570ed076a
@ -2,7 +2,7 @@ NativeCrypto - Platform Interface
|
|||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 - 2022 Hugo Pointcheval
|
Copyright (c) 2019 - 2023 Hugo Pointcheval
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -8,5 +8,13 @@ This interface allows platform-specific implementations of the `native_crypto` p
|
|||||||
|
|
||||||
To implement a new platform-specific implementation of `native_crypto`, extend [`NativeCryptoPlatform`][2] with an implementation that performs the platform-specific behavior, and when you register your plugin, set the default `NativeCryptoPlatform` by calling `NativeCryptoPlatform.instance = MyNativeCryptoPlatform()`.
|
To implement a new platform-specific implementation of `native_crypto`, extend [`NativeCryptoPlatform`][2] with an implementation that performs the platform-specific behavior, and when you register your plugin, set the default `NativeCryptoPlatform` by calling `NativeCryptoPlatform.instance = MyNativeCryptoPlatform()`.
|
||||||
|
|
||||||
|
## Pigeon
|
||||||
|
|
||||||
|
This package uses [Pigeon](https://pub.dev/packages/pigeon) to generate the platform interface code.
|
||||||
|
|
||||||
|
Run generator with `flutter pub run pigeon --input pigeons/messages.dart`.
|
||||||
|
|
||||||
|
> Note: Make sure the `lib/src/gen` folder exists before running the generator.
|
||||||
|
|
||||||
[1]: ../native_crypto
|
[1]: ../native_crypto
|
||||||
[2]: lib/native_crypto_platform_interface.dart
|
[2]: lib/native_crypto_platform_interface.dart
|
@ -1,6 +1 @@
|
|||||||
include: package:wyatt_analysis/analysis_options.flutter.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.yaml
|
||||||
|
|
||||||
analyzer:
|
|
||||||
exclude:
|
|
||||||
- "**/*.pigeon.dart"
|
|
||||||
- "lib/src/pigeon/test_api.dart"
|
|
@ -10,8 +10,6 @@ library native_crypto_platform_interface;
|
|||||||
export 'src/core/enums/exception_code.dart';
|
export 'src/core/enums/exception_code.dart';
|
||||||
export 'src/core/enums/methods.dart';
|
export 'src/core/enums/methods.dart';
|
||||||
export 'src/core/exceptions/exception.dart';
|
export 'src/core/exceptions/exception.dart';
|
||||||
|
export 'src/gen/test.g.dart';
|
||||||
export 'src/implementations/basic_message_channel_native_crypto.dart';
|
export 'src/implementations/basic_message_channel_native_crypto.dart';
|
||||||
export 'src/implementations/method_channel_native_crypto.dart';
|
|
||||||
export 'src/interface/native_crypto_platform.dart';
|
export 'src/interface/native_crypto_platform.dart';
|
||||||
export 'src/pigeon/messages.pigeon.dart';
|
|
||||||
export 'src/pigeon/test_api.dart';
|
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright 2019-2023 Hugo Pointcheval
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by an MIT-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://opensource.org/licenses/MIT.
|
||||||
|
|
||||||
|
/// The interface that implementations of native_crypto must implement.
|
||||||
|
library native_crypto_platform_interface;
|
||||||
|
|
||||||
|
export 'src/gen/messages.g.dart';
|
||||||
|
export 'src/gen/test.g.dart';
|
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2019-2023 Hugo Pointcheval
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by an MIT-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://opensource.org/licenses/MIT.
|
||||||
|
|
||||||
|
import 'package:native_crypto_platform_interface/src/gen/messages.g.dart';
|
||||||
|
|
||||||
|
abstract class EnumParser {
|
||||||
|
static HashAlgorithm hashAlgorithmFromString(String value) {
|
||||||
|
for (final algorithm in HashAlgorithm.values) {
|
||||||
|
if (algorithm.name == value) {
|
||||||
|
return algorithm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw ArgumentError('Invalid algorithm: $value');
|
||||||
|
}
|
||||||
|
|
||||||
|
static CipherAlgorithm cipherAlgorithmFromString(String value) {
|
||||||
|
for (final algorithm in CipherAlgorithm.values) {
|
||||||
|
if (algorithm.name == value) {
|
||||||
|
return algorithm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw ArgumentError('Invalid algorithm: $value');
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,256 @@
|
|||||||
|
// Copyright 2019-2023 Hugo Pointcheval
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by an MIT-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://opensource.org/licenses/MIT.
|
||||||
|
// --
|
||||||
|
// Autogenerated from Pigeon (v9.2.0), do not edit directly.
|
||||||
|
// See also: https://pub.dev/packages/pigeon
|
||||||
|
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import
|
||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List;
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
enum HashAlgorithm {
|
||||||
|
sha256,
|
||||||
|
sha384,
|
||||||
|
sha512,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CipherAlgorithm {
|
||||||
|
aes,
|
||||||
|
}
|
||||||
|
|
||||||
|
class NativeCryptoAPI {
|
||||||
|
/// Constructor for [NativeCryptoAPI]. The [binaryMessenger] named argument is
|
||||||
|
/// available for dependency injection. If it is left null, the default
|
||||||
|
/// BinaryMessenger will be used which routes to the host platform.
|
||||||
|
NativeCryptoAPI({BinaryMessenger? binaryMessenger})
|
||||||
|
: _binaryMessenger = binaryMessenger;
|
||||||
|
final BinaryMessenger? _binaryMessenger;
|
||||||
|
|
||||||
|
static const MessageCodec<Object?> codec = StandardMessageCodec();
|
||||||
|
|
||||||
|
Future<Uint8List?> hash(Uint8List arg_data, HashAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.hash', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_data, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> hmac(Uint8List arg_data, Uint8List arg_key, HashAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.hmac', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_data, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> generateSecureRandom(int arg_length) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_length]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> pbkdf2(Uint8List arg_password, Uint8List arg_salt, int arg_length, int arg_iterations, HashAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.pbkdf2', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_password, arg_salt, arg_length, arg_iterations, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> encrypt(Uint8List arg_plainText, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encrypt', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_plainText, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> encryptWithIV(Uint8List arg_plainText, Uint8List arg_iv, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_plainText, arg_iv, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Uint8List?> decrypt(Uint8List arg_cipherText, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.decrypt', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_cipherText, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as Uint8List?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool?> encryptFile(String arg_plainTextPath, String arg_cipherTextPath, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptFile', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_plainTextPath, arg_cipherTextPath, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as bool?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool?> encryptFileWithIV(String arg_plainTextPath, String arg_cipherTextPath, Uint8List arg_iv, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_plainTextPath, arg_cipherTextPath, arg_iv, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as bool?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool?> decryptFile(String arg_cipherTextPath, String arg_plainTextPath, Uint8List arg_key, CipherAlgorithm arg_algorithm) async {
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.decryptFile', codec,
|
||||||
|
binaryMessenger: _binaryMessenger);
|
||||||
|
final List<Object?>? replyList =
|
||||||
|
await channel.send(<Object?>[arg_cipherTextPath, arg_plainTextPath, arg_key, arg_algorithm.index]) as List<Object?>?;
|
||||||
|
if (replyList == null) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: 'channel-error',
|
||||||
|
message: 'Unable to establish connection on channel.',
|
||||||
|
);
|
||||||
|
} else if (replyList.length > 1) {
|
||||||
|
throw PlatformException(
|
||||||
|
code: replyList[0]! as String,
|
||||||
|
message: replyList[1] as String?,
|
||||||
|
details: replyList[2],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (replyList[0] as bool?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,307 @@
|
|||||||
|
// Copyright 2019-2023 Hugo Pointcheval
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by an MIT-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://opensource.org/licenses/MIT.
|
||||||
|
// --
|
||||||
|
// Autogenerated from Pigeon (v9.2.0), do not edit directly.
|
||||||
|
// See also: https://pub.dev/packages/pigeon
|
||||||
|
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import
|
||||||
|
// ignore_for_file: avoid_relative_lib_imports
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List;
|
||||||
|
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
|
import 'messages.g.dart';
|
||||||
|
|
||||||
|
abstract class TestNativeCryptoAPI {
|
||||||
|
static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance;
|
||||||
|
static const MessageCodec<Object?> codec = StandardMessageCodec();
|
||||||
|
|
||||||
|
Uint8List? hash(Uint8List data, HashAlgorithm algorithm);
|
||||||
|
|
||||||
|
Uint8List? hmac(Uint8List data, Uint8List key, HashAlgorithm algorithm);
|
||||||
|
|
||||||
|
Uint8List? generateSecureRandom(int length);
|
||||||
|
|
||||||
|
Uint8List? pbkdf2(Uint8List password, Uint8List salt, int length, int iterations, HashAlgorithm algorithm);
|
||||||
|
|
||||||
|
Uint8List? encrypt(Uint8List plainText, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
Uint8List? encryptWithIV(Uint8List plainText, Uint8List iv, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
Uint8List? decrypt(Uint8List cipherText, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
bool? encryptFile(String plainTextPath, String cipherTextPath, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
bool? encryptFileWithIV(String plainTextPath, String cipherTextPath, Uint8List iv, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
bool? decryptFile(String cipherTextPath, String plainTextPath, Uint8List key, CipherAlgorithm algorithm);
|
||||||
|
|
||||||
|
static void setup(TestNativeCryptoAPI? api, {BinaryMessenger? binaryMessenger}) {
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.hash', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hash was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_data = (args[0] as Uint8List?);
|
||||||
|
assert(arg_data != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hash was null, expected non-null Uint8List.');
|
||||||
|
final HashAlgorithm? arg_algorithm = args[1] == null ? null : HashAlgorithm.values[args[1] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hash was null, expected non-null HashAlgorithm.');
|
||||||
|
final Uint8List? output = api.hash(arg_data!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.hmac', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_data = (args[0] as Uint8List?);
|
||||||
|
assert(arg_data != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_key = (args[1] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null, expected non-null Uint8List.');
|
||||||
|
final HashAlgorithm? arg_algorithm = args[2] == null ? null : HashAlgorithm.values[args[2] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null, expected non-null HashAlgorithm.');
|
||||||
|
final Uint8List? output = api.hmac(arg_data!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final int? arg_length = (args[0] as int?);
|
||||||
|
assert(arg_length != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom was null, expected non-null int.');
|
||||||
|
final Uint8List? output = api.generateSecureRandom(arg_length!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.pbkdf2', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_password = (args[0] as Uint8List?);
|
||||||
|
assert(arg_password != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_salt = (args[1] as Uint8List?);
|
||||||
|
assert(arg_salt != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null Uint8List.');
|
||||||
|
final int? arg_length = (args[2] as int?);
|
||||||
|
assert(arg_length != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null int.');
|
||||||
|
final int? arg_iterations = (args[3] as int?);
|
||||||
|
assert(arg_iterations != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null int.');
|
||||||
|
final HashAlgorithm? arg_algorithm = args[4] == null ? null : HashAlgorithm.values[args[4] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null HashAlgorithm.');
|
||||||
|
final Uint8List? output = api.pbkdf2(arg_password!, arg_salt!, arg_length!, arg_iterations!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encrypt', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_plainText = (args[0] as Uint8List?);
|
||||||
|
assert(arg_plainText != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_key = (args[1] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[2] == null ? null : CipherAlgorithm.values[args[2] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null, expected non-null CipherAlgorithm.');
|
||||||
|
final Uint8List? output = api.encrypt(arg_plainText!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_plainText = (args[0] as Uint8List?);
|
||||||
|
assert(arg_plainText != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_iv = (args[1] as Uint8List?);
|
||||||
|
assert(arg_iv != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_key = (args[2] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[3] == null ? null : CipherAlgorithm.values[args[3] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null, expected non-null CipherAlgorithm.');
|
||||||
|
final Uint8List? output = api.encryptWithIV(arg_plainText!, arg_iv!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.decrypt', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final Uint8List? arg_cipherText = (args[0] as Uint8List?);
|
||||||
|
assert(arg_cipherText != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_key = (args[1] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[2] == null ? null : CipherAlgorithm.values[args[2] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null, expected non-null CipherAlgorithm.');
|
||||||
|
final Uint8List? output = api.decrypt(arg_cipherText!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptFile', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final String? arg_plainTextPath = (args[0] as String?);
|
||||||
|
assert(arg_plainTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null, expected non-null String.');
|
||||||
|
final String? arg_cipherTextPath = (args[1] as String?);
|
||||||
|
assert(arg_cipherTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null, expected non-null String.');
|
||||||
|
final Uint8List? arg_key = (args[2] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[3] == null ? null : CipherAlgorithm.values[args[3] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null, expected non-null CipherAlgorithm.');
|
||||||
|
final bool? output = api.encryptFile(arg_plainTextPath!, arg_cipherTextPath!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final String? arg_plainTextPath = (args[0] as String?);
|
||||||
|
assert(arg_plainTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null, expected non-null String.');
|
||||||
|
final String? arg_cipherTextPath = (args[1] as String?);
|
||||||
|
assert(arg_cipherTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null, expected non-null String.');
|
||||||
|
final Uint8List? arg_iv = (args[2] as Uint8List?);
|
||||||
|
assert(arg_iv != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null, expected non-null Uint8List.');
|
||||||
|
final Uint8List? arg_key = (args[3] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[4] == null ? null : CipherAlgorithm.values[args[4] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFileWithIV was null, expected non-null CipherAlgorithm.');
|
||||||
|
final bool? output = api.encryptFileWithIV(arg_plainTextPath!, arg_cipherTextPath!, arg_iv!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
||||||
|
'dev.flutter.pigeon.NativeCryptoAPI.decryptFile', codec,
|
||||||
|
binaryMessenger: binaryMessenger);
|
||||||
|
if (api == null) {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, null);
|
||||||
|
} else {
|
||||||
|
_testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler<Object?>(channel, (Object? message) async {
|
||||||
|
assert(message != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null.');
|
||||||
|
final List<Object?> args = (message as List<Object?>?)!;
|
||||||
|
final String? arg_cipherTextPath = (args[0] as String?);
|
||||||
|
assert(arg_cipherTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null, expected non-null String.');
|
||||||
|
final String? arg_plainTextPath = (args[1] as String?);
|
||||||
|
assert(arg_plainTextPath != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null, expected non-null String.');
|
||||||
|
final Uint8List? arg_key = (args[2] as Uint8List?);
|
||||||
|
assert(arg_key != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null, expected non-null Uint8List.');
|
||||||
|
final CipherAlgorithm? arg_algorithm = args[3] == null ? null : CipherAlgorithm.values[args[3] as int];
|
||||||
|
assert(arg_algorithm != null,
|
||||||
|
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null, expected non-null CipherAlgorithm.');
|
||||||
|
final bool? output = api.decryptFile(arg_cipherTextPath!, arg_plainTextPath!, arg_key!, arg_algorithm!);
|
||||||
|
return <Object?>[output];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:native_crypto_platform_interface/native_crypto_platform_interface.dart';
|
import 'package:native_crypto_platform_interface/native_crypto_platform_interface.dart';
|
||||||
|
import 'package:native_crypto_platform_interface/src/core/utils/enum_parser.dart';
|
||||||
|
import 'package:native_crypto_platform_interface/src/gen/messages.g.dart';
|
||||||
|
|
||||||
/// An implementation of [NativeCryptoPlatform] that uses Pigeon generated code.
|
/// An implementation of [NativeCryptoPlatform] that uses Pigeon generated code.
|
||||||
class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
||||||
@ -22,14 +24,10 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
@override
|
@override
|
||||||
Future<Uint8List?> hash(Uint8List data, {required String algorithm}) async {
|
Future<Uint8List?> hash(Uint8List data, {required String algorithm}) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.hash(
|
||||||
.hash(
|
data,
|
||||||
HashRequest(
|
EnumParser.hashAlgorithmFromString(algorithm),
|
||||||
data: data,
|
);
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.hash);
|
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
@ -42,15 +40,11 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
required String algorithm,
|
required String algorithm,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.hmac(
|
||||||
.hmac(
|
data,
|
||||||
HmacRequest(
|
key,
|
||||||
data: data,
|
EnumParser.hashAlgorithmFromString(algorithm),
|
||||||
key: key,
|
);
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.hmac);
|
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
@ -59,13 +53,7 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
@override
|
@override
|
||||||
Future<Uint8List?> generateSecureRandom(int length) async {
|
Future<Uint8List?> generateSecureRandom(int length) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.generateSecureRandom(length);
|
||||||
.generateSecureRandom(
|
|
||||||
GenerateSecureRandomRequest(
|
|
||||||
length: length,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.random);
|
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
@ -80,17 +68,13 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
required String hashAlgorithm,
|
required String hashAlgorithm,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.pbkdf2(
|
||||||
.pbkdf2(
|
password,
|
||||||
Pbkdf2Request(
|
salt,
|
||||||
password: password,
|
length,
|
||||||
salt: salt,
|
iterations,
|
||||||
length: length,
|
EnumParser.hashAlgorithmFromString(hashAlgorithm),
|
||||||
iterations: iterations,
|
);
|
||||||
hashAlgorithm: hashAlgorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.key);
|
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
@ -103,82 +87,11 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
required String algorithm,
|
required String algorithm,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.encrypt(
|
||||||
.encrypt(
|
plainText,
|
||||||
EncryptRequest(
|
key,
|
||||||
plainText: plainText,
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
key: key,
|
);
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.cipherText);
|
|
||||||
} catch (e, s) {
|
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Uint8List?> decrypt(
|
|
||||||
Uint8List cipherText, {
|
|
||||||
required Uint8List key,
|
|
||||||
required String algorithm,
|
|
||||||
}) async {
|
|
||||||
try {
|
|
||||||
return api
|
|
||||||
.decrypt(
|
|
||||||
DecryptRequest(
|
|
||||||
cipherText: cipherText,
|
|
||||||
key: key,
|
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.plainText);
|
|
||||||
} catch (e, s) {
|
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<bool?> encryptFile({
|
|
||||||
required String plainTextPath,
|
|
||||||
required String cipherTextPath,
|
|
||||||
required Uint8List key,
|
|
||||||
required String algorithm,
|
|
||||||
}) async {
|
|
||||||
try {
|
|
||||||
return api
|
|
||||||
.encryptFile(
|
|
||||||
EncryptFileRequest(
|
|
||||||
plainTextPath: plainTextPath,
|
|
||||||
cipherTextPath: cipherTextPath,
|
|
||||||
key: key,
|
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.success);
|
|
||||||
} catch (e, s) {
|
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<bool?> decryptFile({
|
|
||||||
required String cipherTextPath,
|
|
||||||
required String plainTextPath,
|
|
||||||
required Uint8List key,
|
|
||||||
required String algorithm,
|
|
||||||
}) async {
|
|
||||||
try {
|
|
||||||
return api
|
|
||||||
.decryptFile(
|
|
||||||
DecryptFileRequest(
|
|
||||||
cipherTextPath: cipherTextPath,
|
|
||||||
plainTextPath: plainTextPath,
|
|
||||||
key: key,
|
|
||||||
algorithm: algorithm,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.then((value) => value.success);
|
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
@ -192,16 +105,88 @@ class BasicMessageChannelNativeCrypto extends NativeCryptoPlatform {
|
|||||||
required String algorithm,
|
required String algorithm,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
return api
|
return api.encryptWithIV(
|
||||||
.encryptWithIV(
|
plainText,
|
||||||
EncryptWithIVRequest(
|
iv,
|
||||||
plainText: plainText,
|
key,
|
||||||
iv: iv,
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
key: key,
|
);
|
||||||
algorithm: algorithm,
|
} catch (e, s) {
|
||||||
),
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
)
|
}
|
||||||
.then((value) => value.cipherText);
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<Uint8List?> decrypt(
|
||||||
|
Uint8List cipherText, {
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) async {
|
||||||
|
try {
|
||||||
|
return api.decrypt(
|
||||||
|
cipherText,
|
||||||
|
key,
|
||||||
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
|
);
|
||||||
|
} catch (e, s) {
|
||||||
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<bool?> encryptFile({
|
||||||
|
required String plainTextPath,
|
||||||
|
required String cipherTextPath,
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) async {
|
||||||
|
try {
|
||||||
|
return api.encryptFile(
|
||||||
|
plainTextPath,
|
||||||
|
cipherTextPath,
|
||||||
|
key,
|
||||||
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
|
);
|
||||||
|
} catch (e, s) {
|
||||||
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<bool?> encryptFileWithIV({
|
||||||
|
required String plainTextPath,
|
||||||
|
required String cipherTextPath,
|
||||||
|
required Uint8List iv,
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) async {
|
||||||
|
try {
|
||||||
|
return api.encryptFileWithIV(
|
||||||
|
plainTextPath,
|
||||||
|
cipherTextPath,
|
||||||
|
iv,
|
||||||
|
key,
|
||||||
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
|
);
|
||||||
|
} catch (e, s) {
|
||||||
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<bool?> decryptFile({
|
||||||
|
required String cipherTextPath,
|
||||||
|
required String plainTextPath,
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) async {
|
||||||
|
try {
|
||||||
|
return api.decryptFile(
|
||||||
|
cipherTextPath,
|
||||||
|
plainTextPath,
|
||||||
|
key,
|
||||||
|
EnumParser.cipherAlgorithmFromString(algorithm),
|
||||||
|
);
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
NativeCryptoException.convertPlatformException(e, s);
|
NativeCryptoException.convertPlatformException(e, s);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:native_crypto_platform_interface/native_crypto_platform_interface.dart';
|
import 'package:native_crypto_platform_interface/native_crypto_platform_interface.dart';
|
||||||
import 'package:native_crypto_platform_interface/src/implementations/method_channel_native_crypto.dart';
|
|
||||||
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
|
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
|
||||||
|
|
||||||
/// The interface that implementations of native_crypto must implement.
|
/// The interface that implementations of native_crypto must implement.
|
||||||
@ -24,11 +23,11 @@ abstract class NativeCryptoPlatform extends PlatformInterface {
|
|||||||
|
|
||||||
static final Object _token = Object();
|
static final Object _token = Object();
|
||||||
|
|
||||||
static NativeCryptoPlatform _instance = MethodChannelNativeCrypto();
|
static NativeCryptoPlatform _instance = BasicMessageChannelNativeCrypto();
|
||||||
|
|
||||||
/// The default instance of [NativeCryptoPlatform] to use.
|
/// The default instance of [NativeCryptoPlatform] to use.
|
||||||
///
|
///
|
||||||
/// Defaults to [MethodChannelNativeCrypto].
|
/// Defaults to [BasicMessageChannelNativeCrypto].
|
||||||
static NativeCryptoPlatform get instance => _instance;
|
static NativeCryptoPlatform get instance => _instance;
|
||||||
|
|
||||||
/// Platform-specific plugins should set this with their own platform-specific
|
/// Platform-specific plugins should set this with their own platform-specific
|
||||||
@ -77,6 +76,18 @@ abstract class NativeCryptoPlatform extends PlatformInterface {
|
|||||||
throw UnimplementedError('encrypt is not implemented');
|
throw UnimplementedError('encrypt is not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Encrypts the given data using the given key, algorithm and iv.
|
||||||
|
///
|
||||||
|
/// Users should use [encrypt] instead if they don't need to specify the iv.
|
||||||
|
Future<Uint8List?> encryptWithIV({
|
||||||
|
required Uint8List plainText,
|
||||||
|
required Uint8List iv,
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) {
|
||||||
|
throw UnimplementedError('encryptWithIV is not implemented');
|
||||||
|
}
|
||||||
|
|
||||||
/// Decrypts the given data using the given key and algorithm.
|
/// Decrypts the given data using the given key and algorithm.
|
||||||
Future<Uint8List?> decrypt(
|
Future<Uint8List?> decrypt(
|
||||||
Uint8List cipherText, {
|
Uint8List cipherText, {
|
||||||
@ -96,6 +107,20 @@ abstract class NativeCryptoPlatform extends PlatformInterface {
|
|||||||
throw UnimplementedError('encryptFile is not implemented');
|
throw UnimplementedError('encryptFile is not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Encrypts the given file using the given key, algorithm and iv.
|
||||||
|
///
|
||||||
|
/// Users should use [encryptFile] instead if they don't need to specify
|
||||||
|
/// the iv.
|
||||||
|
Future<bool?> encryptFileWithIV({
|
||||||
|
required String plainTextPath,
|
||||||
|
required String cipherTextPath,
|
||||||
|
required Uint8List iv,
|
||||||
|
required Uint8List key,
|
||||||
|
required String algorithm,
|
||||||
|
}) {
|
||||||
|
throw UnimplementedError('encryptFileWithIV is not implemented');
|
||||||
|
}
|
||||||
|
|
||||||
/// Decrypts the given file using the given key and algorithm.
|
/// Decrypts the given file using the given key and algorithm.
|
||||||
Future<bool?> decryptFile({
|
Future<bool?> decryptFile({
|
||||||
required String cipherTextPath,
|
required String cipherTextPath,
|
||||||
@ -105,16 +130,4 @@ abstract class NativeCryptoPlatform extends PlatformInterface {
|
|||||||
}) {
|
}) {
|
||||||
throw UnimplementedError('decryptFile is not implemented');
|
throw UnimplementedError('decryptFile is not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encrypts the given data using the given key, algorithm and iv.
|
|
||||||
///
|
|
||||||
/// Users should use [encrypt] instead if they don't need to specify the iv.
|
|
||||||
Future<Uint8List?> encryptWithIV({
|
|
||||||
required Uint8List plainText,
|
|
||||||
required Uint8List iv,
|
|
||||||
required Uint8List key,
|
|
||||||
required String algorithm,
|
|
||||||
}) {
|
|
||||||
throw UnimplementedError('encryptWithIV is not implemented');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,829 +0,0 @@
|
|||||||
// Copyright 2019-2023 Hugo Pointcheval
|
|
||||||
//
|
|
||||||
// Use of this source code is governed by an MIT-style
|
|
||||||
// license that can be found in the LICENSE file or at
|
|
||||||
// https://opensource.org/licenses/MIT.
|
|
||||||
// --
|
|
||||||
// Autogenerated from Pigeon (v9.0.0), do not edit directly.
|
|
||||||
// See also: https://pub.dev/packages/pigeon
|
|
||||||
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import
|
|
||||||
|
|
||||||
import 'dart:async';
|
|
||||||
import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List;
|
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
|
|
||||||
class HashRequest {
|
|
||||||
HashRequest({
|
|
||||||
this.data,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? data;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
data,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static HashRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return HashRequest(
|
|
||||||
data: result[0] as Uint8List?,
|
|
||||||
algorithm: result[1] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class HashResponse {
|
|
||||||
HashResponse({
|
|
||||||
this.hash,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? hash;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
hash,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static HashResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return HashResponse(
|
|
||||||
hash: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class HmacRequest {
|
|
||||||
HmacRequest({
|
|
||||||
this.data,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? data;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
data,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static HmacRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return HmacRequest(
|
|
||||||
data: result[0] as Uint8List?,
|
|
||||||
key: result[1] as Uint8List?,
|
|
||||||
algorithm: result[2] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class HmacResponse {
|
|
||||||
HmacResponse({
|
|
||||||
this.hmac,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? hmac;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
hmac,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static HmacResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return HmacResponse(
|
|
||||||
hmac: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GenerateSecureRandomRequest {
|
|
||||||
GenerateSecureRandomRequest({
|
|
||||||
this.length,
|
|
||||||
});
|
|
||||||
|
|
||||||
int? length;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
length,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static GenerateSecureRandomRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return GenerateSecureRandomRequest(
|
|
||||||
length: result[0] as int?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class GenerateSecureRandomResponse {
|
|
||||||
GenerateSecureRandomResponse({
|
|
||||||
this.random,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? random;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
random,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static GenerateSecureRandomResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return GenerateSecureRandomResponse(
|
|
||||||
random: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Pbkdf2Request {
|
|
||||||
Pbkdf2Request({
|
|
||||||
this.password,
|
|
||||||
this.salt,
|
|
||||||
this.length,
|
|
||||||
this.iterations,
|
|
||||||
this.hashAlgorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? password;
|
|
||||||
|
|
||||||
Uint8List? salt;
|
|
||||||
|
|
||||||
int? length;
|
|
||||||
|
|
||||||
int? iterations;
|
|
||||||
|
|
||||||
String? hashAlgorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
password,
|
|
||||||
salt,
|
|
||||||
length,
|
|
||||||
iterations,
|
|
||||||
hashAlgorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static Pbkdf2Request decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return Pbkdf2Request(
|
|
||||||
password: result[0] as Uint8List?,
|
|
||||||
salt: result[1] as Uint8List?,
|
|
||||||
length: result[2] as int?,
|
|
||||||
iterations: result[3] as int?,
|
|
||||||
hashAlgorithm: result[4] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Pbkdf2Response {
|
|
||||||
Pbkdf2Response({
|
|
||||||
this.key,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
key,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static Pbkdf2Response decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return Pbkdf2Response(
|
|
||||||
key: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptRequest {
|
|
||||||
EncryptRequest({
|
|
||||||
this.plainText,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? plainText;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
plainText,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static EncryptRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return EncryptRequest(
|
|
||||||
plainText: result[0] as Uint8List?,
|
|
||||||
key: result[1] as Uint8List?,
|
|
||||||
algorithm: result[2] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptResponse {
|
|
||||||
EncryptResponse({
|
|
||||||
this.cipherText,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? cipherText;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
cipherText,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static EncryptResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return EncryptResponse(
|
|
||||||
cipherText: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptRequest {
|
|
||||||
DecryptRequest({
|
|
||||||
this.cipherText,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? cipherText;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
cipherText,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static DecryptRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return DecryptRequest(
|
|
||||||
cipherText: result[0] as Uint8List?,
|
|
||||||
key: result[1] as Uint8List?,
|
|
||||||
algorithm: result[2] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptResponse {
|
|
||||||
DecryptResponse({
|
|
||||||
this.plainText,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? plainText;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
plainText,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static DecryptResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return DecryptResponse(
|
|
||||||
plainText: result[0] as Uint8List?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptFileRequest {
|
|
||||||
EncryptFileRequest({
|
|
||||||
this.plainTextPath,
|
|
||||||
this.cipherTextPath,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
String? plainTextPath;
|
|
||||||
|
|
||||||
String? cipherTextPath;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
plainTextPath,
|
|
||||||
cipherTextPath,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static EncryptFileRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return EncryptFileRequest(
|
|
||||||
plainTextPath: result[0] as String?,
|
|
||||||
cipherTextPath: result[1] as String?,
|
|
||||||
key: result[2] as Uint8List?,
|
|
||||||
algorithm: result[3] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptFileResponse {
|
|
||||||
EncryptFileResponse({
|
|
||||||
this.success,
|
|
||||||
});
|
|
||||||
|
|
||||||
bool? success;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
success,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static EncryptFileResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return EncryptFileResponse(
|
|
||||||
success: result[0] as bool?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptFileRequest {
|
|
||||||
DecryptFileRequest({
|
|
||||||
this.cipherTextPath,
|
|
||||||
this.plainTextPath,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
String? cipherTextPath;
|
|
||||||
|
|
||||||
String? plainTextPath;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
cipherTextPath,
|
|
||||||
plainTextPath,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static DecryptFileRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return DecryptFileRequest(
|
|
||||||
cipherTextPath: result[0] as String?,
|
|
||||||
plainTextPath: result[1] as String?,
|
|
||||||
key: result[2] as Uint8List?,
|
|
||||||
algorithm: result[3] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptFileResponse {
|
|
||||||
DecryptFileResponse({
|
|
||||||
this.success,
|
|
||||||
});
|
|
||||||
|
|
||||||
bool? success;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
success,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static DecryptFileResponse decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return DecryptFileResponse(
|
|
||||||
success: result[0] as bool?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptWithIVRequest {
|
|
||||||
EncryptWithIVRequest({
|
|
||||||
this.plainText,
|
|
||||||
this.iv,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
Uint8List? plainText;
|
|
||||||
|
|
||||||
Uint8List? iv;
|
|
||||||
|
|
||||||
Uint8List? key;
|
|
||||||
|
|
||||||
String? algorithm;
|
|
||||||
|
|
||||||
Object encode() {
|
|
||||||
return <Object?>[
|
|
||||||
plainText,
|
|
||||||
iv,
|
|
||||||
key,
|
|
||||||
algorithm,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static EncryptWithIVRequest decode(Object result) {
|
|
||||||
result as List<Object?>;
|
|
||||||
return EncryptWithIVRequest(
|
|
||||||
plainText: result[0] as Uint8List?,
|
|
||||||
iv: result[1] as Uint8List?,
|
|
||||||
key: result[2] as Uint8List?,
|
|
||||||
algorithm: result[3] as String?,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class _NativeCryptoAPICodec extends StandardMessageCodec {
|
|
||||||
const _NativeCryptoAPICodec();
|
|
||||||
@override
|
|
||||||
void writeValue(WriteBuffer buffer, Object? value) {
|
|
||||||
if (value is DecryptFileRequest) {
|
|
||||||
buffer.putUint8(128);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptFileResponse) {
|
|
||||||
buffer.putUint8(129);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptRequest) {
|
|
||||||
buffer.putUint8(130);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptResponse) {
|
|
||||||
buffer.putUint8(131);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptFileRequest) {
|
|
||||||
buffer.putUint8(132);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptFileResponse) {
|
|
||||||
buffer.putUint8(133);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptRequest) {
|
|
||||||
buffer.putUint8(134);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptResponse) {
|
|
||||||
buffer.putUint8(135);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptWithIVRequest) {
|
|
||||||
buffer.putUint8(136);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is GenerateSecureRandomRequest) {
|
|
||||||
buffer.putUint8(137);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is GenerateSecureRandomResponse) {
|
|
||||||
buffer.putUint8(138);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HashRequest) {
|
|
||||||
buffer.putUint8(139);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HashResponse) {
|
|
||||||
buffer.putUint8(140);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HmacRequest) {
|
|
||||||
buffer.putUint8(141);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HmacResponse) {
|
|
||||||
buffer.putUint8(142);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is Pbkdf2Request) {
|
|
||||||
buffer.putUint8(143);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is Pbkdf2Response) {
|
|
||||||
buffer.putUint8(144);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else {
|
|
||||||
super.writeValue(buffer, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Object? readValueOfType(int type, ReadBuffer buffer) {
|
|
||||||
switch (type) {
|
|
||||||
case 128:
|
|
||||||
return DecryptFileRequest.decode(readValue(buffer)!);
|
|
||||||
case 129:
|
|
||||||
return DecryptFileResponse.decode(readValue(buffer)!);
|
|
||||||
case 130:
|
|
||||||
return DecryptRequest.decode(readValue(buffer)!);
|
|
||||||
case 131:
|
|
||||||
return DecryptResponse.decode(readValue(buffer)!);
|
|
||||||
case 132:
|
|
||||||
return EncryptFileRequest.decode(readValue(buffer)!);
|
|
||||||
case 133:
|
|
||||||
return EncryptFileResponse.decode(readValue(buffer)!);
|
|
||||||
case 134:
|
|
||||||
return EncryptRequest.decode(readValue(buffer)!);
|
|
||||||
case 135:
|
|
||||||
return EncryptResponse.decode(readValue(buffer)!);
|
|
||||||
case 136:
|
|
||||||
return EncryptWithIVRequest.decode(readValue(buffer)!);
|
|
||||||
case 137:
|
|
||||||
return GenerateSecureRandomRequest.decode(readValue(buffer)!);
|
|
||||||
case 138:
|
|
||||||
return GenerateSecureRandomResponse.decode(readValue(buffer)!);
|
|
||||||
case 139:
|
|
||||||
return HashRequest.decode(readValue(buffer)!);
|
|
||||||
case 140:
|
|
||||||
return HashResponse.decode(readValue(buffer)!);
|
|
||||||
case 141:
|
|
||||||
return HmacRequest.decode(readValue(buffer)!);
|
|
||||||
case 142:
|
|
||||||
return HmacResponse.decode(readValue(buffer)!);
|
|
||||||
case 143:
|
|
||||||
return Pbkdf2Request.decode(readValue(buffer)!);
|
|
||||||
case 144:
|
|
||||||
return Pbkdf2Response.decode(readValue(buffer)!);
|
|
||||||
default:
|
|
||||||
return super.readValueOfType(type, buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class NativeCryptoAPI {
|
|
||||||
/// Constructor for [NativeCryptoAPI]. The [binaryMessenger] named argument is
|
|
||||||
/// available for dependency injection. If it is left null, the default
|
|
||||||
/// BinaryMessenger will be used which routes to the host platform.
|
|
||||||
NativeCryptoAPI({BinaryMessenger? binaryMessenger})
|
|
||||||
: _binaryMessenger = binaryMessenger;
|
|
||||||
final BinaryMessenger? _binaryMessenger;
|
|
||||||
|
|
||||||
static const MessageCodec<Object?> codec = _NativeCryptoAPICodec();
|
|
||||||
|
|
||||||
Future<HashResponse> hash(HashRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.hash', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as HashResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<HmacResponse> hmac(HmacRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.hmac', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as HmacResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<GenerateSecureRandomResponse> generateSecureRandom(GenerateSecureRandomRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as GenerateSecureRandomResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Pbkdf2Response> pbkdf2(Pbkdf2Request arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.pbkdf2', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as Pbkdf2Response?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<EncryptResponse> encrypt(EncryptRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encrypt', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as EncryptResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<DecryptResponse> decrypt(DecryptRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.decrypt', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as DecryptResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<EncryptFileResponse> encryptFile(EncryptFileRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encryptFile', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as EncryptFileResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<DecryptFileResponse> decryptFile(DecryptFileRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.decryptFile', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as DecryptFileResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<EncryptResponse> encryptWithIV(EncryptWithIVRequest arg_request) async {
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV', codec,
|
|
||||||
binaryMessenger: _binaryMessenger);
|
|
||||||
final List<Object?>? replyList =
|
|
||||||
await channel.send(<Object?>[arg_request]) as List<Object?>?;
|
|
||||||
if (replyList == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'channel-error',
|
|
||||||
message: 'Unable to establish connection on channel.',
|
|
||||||
);
|
|
||||||
} else if (replyList.length > 1) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: replyList[0]! as String,
|
|
||||||
message: replyList[1] as String?,
|
|
||||||
details: replyList[2],
|
|
||||||
);
|
|
||||||
} else if (replyList[0] == null) {
|
|
||||||
throw PlatformException(
|
|
||||||
code: 'null-error',
|
|
||||||
message: 'Host platform returned null value for non-null return value.',
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (replyList[0] as EncryptResponse?)!;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,316 +0,0 @@
|
|||||||
// Copyright 2019-2023 Hugo Pointcheval
|
|
||||||
//
|
|
||||||
// Use of this source code is governed by an MIT-style
|
|
||||||
// license that can be found in the LICENSE file or at
|
|
||||||
// https://opensource.org/licenses/MIT.
|
|
||||||
// --
|
|
||||||
// Autogenerated from Pigeon (v9.0.0), do not edit directly.
|
|
||||||
// See also: https://pub.dev/packages/pigeon
|
|
||||||
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import
|
|
||||||
// ignore_for_file: avoid_relative_lib_imports
|
|
||||||
import 'dart:async';
|
|
||||||
import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List;
|
|
||||||
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
|
|
||||||
import 'messages.pigeon.dart';
|
|
||||||
|
|
||||||
class _TestNativeCryptoAPICodec extends StandardMessageCodec {
|
|
||||||
const _TestNativeCryptoAPICodec();
|
|
||||||
@override
|
|
||||||
void writeValue(WriteBuffer buffer, Object? value) {
|
|
||||||
if (value is DecryptFileRequest) {
|
|
||||||
buffer.putUint8(128);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptFileResponse) {
|
|
||||||
buffer.putUint8(129);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptRequest) {
|
|
||||||
buffer.putUint8(130);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is DecryptResponse) {
|
|
||||||
buffer.putUint8(131);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptFileRequest) {
|
|
||||||
buffer.putUint8(132);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptFileResponse) {
|
|
||||||
buffer.putUint8(133);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptRequest) {
|
|
||||||
buffer.putUint8(134);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptResponse) {
|
|
||||||
buffer.putUint8(135);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is EncryptWithIVRequest) {
|
|
||||||
buffer.putUint8(136);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is GenerateSecureRandomRequest) {
|
|
||||||
buffer.putUint8(137);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is GenerateSecureRandomResponse) {
|
|
||||||
buffer.putUint8(138);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HashRequest) {
|
|
||||||
buffer.putUint8(139);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HashResponse) {
|
|
||||||
buffer.putUint8(140);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HmacRequest) {
|
|
||||||
buffer.putUint8(141);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is HmacResponse) {
|
|
||||||
buffer.putUint8(142);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is Pbkdf2Request) {
|
|
||||||
buffer.putUint8(143);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else if (value is Pbkdf2Response) {
|
|
||||||
buffer.putUint8(144);
|
|
||||||
writeValue(buffer, value.encode());
|
|
||||||
} else {
|
|
||||||
super.writeValue(buffer, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Object? readValueOfType(int type, ReadBuffer buffer) {
|
|
||||||
switch (type) {
|
|
||||||
case 128:
|
|
||||||
return DecryptFileRequest.decode(readValue(buffer)!);
|
|
||||||
case 129:
|
|
||||||
return DecryptFileResponse.decode(readValue(buffer)!);
|
|
||||||
case 130:
|
|
||||||
return DecryptRequest.decode(readValue(buffer)!);
|
|
||||||
case 131:
|
|
||||||
return DecryptResponse.decode(readValue(buffer)!);
|
|
||||||
case 132:
|
|
||||||
return EncryptFileRequest.decode(readValue(buffer)!);
|
|
||||||
case 133:
|
|
||||||
return EncryptFileResponse.decode(readValue(buffer)!);
|
|
||||||
case 134:
|
|
||||||
return EncryptRequest.decode(readValue(buffer)!);
|
|
||||||
case 135:
|
|
||||||
return EncryptResponse.decode(readValue(buffer)!);
|
|
||||||
case 136:
|
|
||||||
return EncryptWithIVRequest.decode(readValue(buffer)!);
|
|
||||||
case 137:
|
|
||||||
return GenerateSecureRandomRequest.decode(readValue(buffer)!);
|
|
||||||
case 138:
|
|
||||||
return GenerateSecureRandomResponse.decode(readValue(buffer)!);
|
|
||||||
case 139:
|
|
||||||
return HashRequest.decode(readValue(buffer)!);
|
|
||||||
case 140:
|
|
||||||
return HashResponse.decode(readValue(buffer)!);
|
|
||||||
case 141:
|
|
||||||
return HmacRequest.decode(readValue(buffer)!);
|
|
||||||
case 142:
|
|
||||||
return HmacResponse.decode(readValue(buffer)!);
|
|
||||||
case 143:
|
|
||||||
return Pbkdf2Request.decode(readValue(buffer)!);
|
|
||||||
case 144:
|
|
||||||
return Pbkdf2Response.decode(readValue(buffer)!);
|
|
||||||
default:
|
|
||||||
return super.readValueOfType(type, buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class TestNativeCryptoAPI {
|
|
||||||
static const MessageCodec<Object?> codec = _TestNativeCryptoAPICodec();
|
|
||||||
|
|
||||||
HashResponse hash(HashRequest request);
|
|
||||||
|
|
||||||
HmacResponse hmac(HmacRequest request);
|
|
||||||
|
|
||||||
GenerateSecureRandomResponse generateSecureRandom(GenerateSecureRandomRequest request);
|
|
||||||
|
|
||||||
Pbkdf2Response pbkdf2(Pbkdf2Request request);
|
|
||||||
|
|
||||||
EncryptResponse encrypt(EncryptRequest request);
|
|
||||||
|
|
||||||
DecryptResponse decrypt(DecryptRequest request);
|
|
||||||
|
|
||||||
EncryptFileResponse encryptFile(EncryptFileRequest request);
|
|
||||||
|
|
||||||
DecryptFileResponse decryptFile(DecryptFileRequest request);
|
|
||||||
|
|
||||||
EncryptResponse encryptWithIV(EncryptWithIVRequest request);
|
|
||||||
|
|
||||||
static void setup(TestNativeCryptoAPI? api, {BinaryMessenger? binaryMessenger}) {
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.hash', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hash was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final HashRequest? arg_request = (args[0] as HashRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hash was null, expected non-null HashRequest.');
|
|
||||||
final HashResponse output = api.hash(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.hmac', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final HmacRequest? arg_request = (args[0] as HmacRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.hmac was null, expected non-null HmacRequest.');
|
|
||||||
final HmacResponse output = api.hmac(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final GenerateSecureRandomRequest? arg_request = (args[0] as GenerateSecureRandomRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.generateSecureRandom was null, expected non-null GenerateSecureRandomRequest.');
|
|
||||||
final GenerateSecureRandomResponse output = api.generateSecureRandom(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.pbkdf2', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final Pbkdf2Request? arg_request = (args[0] as Pbkdf2Request?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.pbkdf2 was null, expected non-null Pbkdf2Request.');
|
|
||||||
final Pbkdf2Response output = api.pbkdf2(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encrypt', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final EncryptRequest? arg_request = (args[0] as EncryptRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encrypt was null, expected non-null EncryptRequest.');
|
|
||||||
final EncryptResponse output = api.encrypt(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.decrypt', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final DecryptRequest? arg_request = (args[0] as DecryptRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decrypt was null, expected non-null DecryptRequest.');
|
|
||||||
final DecryptResponse output = api.decrypt(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encryptFile', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final EncryptFileRequest? arg_request = (args[0] as EncryptFileRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptFile was null, expected non-null EncryptFileRequest.');
|
|
||||||
final EncryptFileResponse output = api.encryptFile(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.decryptFile', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final DecryptFileRequest? arg_request = (args[0] as DecryptFileRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.decryptFile was null, expected non-null DecryptFileRequest.');
|
|
||||||
final DecryptFileResponse output = api.decryptFile(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
|
|
||||||
'dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV', codec,
|
|
||||||
binaryMessenger: binaryMessenger);
|
|
||||||
if (api == null) {
|
|
||||||
channel.setMockMessageHandler(null);
|
|
||||||
} else {
|
|
||||||
channel.setMockMessageHandler((Object? message) async {
|
|
||||||
assert(message != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null.');
|
|
||||||
final List<Object?> args = (message as List<Object?>?)!;
|
|
||||||
final EncryptWithIVRequest? arg_request = (args[0] as EncryptWithIVRequest?);
|
|
||||||
assert(arg_request != null,
|
|
||||||
'Argument for dev.flutter.pigeon.NativeCryptoAPI.encryptWithIV was null, expected non-null EncryptWithIVRequest.');
|
|
||||||
final EncryptResponse output = api.encryptWithIV(arg_request!);
|
|
||||||
return <Object?>[output];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,3 @@
|
|||||||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
|
||||||
// Copyright 2019-2023 Hugo Pointcheval
|
// Copyright 2019-2023 Hugo Pointcheval
|
||||||
//
|
//
|
||||||
// Use of this source code is governed by an MIT-style
|
// Use of this source code is governed by an MIT-style
|
||||||
@ -10,213 +9,80 @@ import 'package:pigeon/pigeon.dart';
|
|||||||
@ConfigurePigeon(
|
@ConfigurePigeon(
|
||||||
PigeonOptions(
|
PigeonOptions(
|
||||||
copyrightHeader: 'pigeons/copyright_header.txt',
|
copyrightHeader: 'pigeons/copyright_header.txt',
|
||||||
dartOut: 'lib/src/pigeon/messages.pigeon.dart',
|
dartOut: 'lib/src/gen/messages.g.dart',
|
||||||
// We export in the lib folder to expose the class to other packages.
|
// We export in the lib folder to expose the class to other packages.
|
||||||
dartTestOut: 'lib/src/pigeon/test_api.dart',
|
dartTestOut: 'lib/src/gen/test.g.dart',
|
||||||
javaOut:
|
kotlinOut:
|
||||||
'../native_crypto_android/android/src/main/java/fr/pointcheval/native_crypto_android/GeneratedAndroidNativeCrypto.java',
|
'../native_crypto_android/android/src/main/kotlin/fr/pointcheval/native_crypto_android/Pigeon.kt',
|
||||||
javaOptions: JavaOptions(
|
kotlinOptions: KotlinOptions(
|
||||||
package: 'fr.pointcheval.native_crypto_android',
|
package: 'fr.pointcheval.native_crypto_android',
|
||||||
className: 'GeneratedAndroidNativeCrypto',
|
|
||||||
),
|
),
|
||||||
objcHeaderOut: '../native_crypto_ios/ios/Classes/Public/messages.g.h',
|
swiftOut: '../native_crypto_ios/ios/Classes/messages.g.swift',
|
||||||
objcSourceOut: '../native_crypto_ios/ios/Classes/messages.g.m',
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
class HashRequest {
|
enum HashAlgorithm {
|
||||||
const HashRequest({
|
sha256,
|
||||||
this.data,
|
sha384,
|
||||||
this.algorithm,
|
sha512;
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? data;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class HashResponse {
|
enum CipherAlgorithm {
|
||||||
const HashResponse({
|
aes;
|
||||||
this.hash,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
class HmacRequest {
|
|
||||||
const HmacRequest({
|
|
||||||
this.data,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? data;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class HmacResponse {
|
|
||||||
const HmacResponse({
|
|
||||||
this.hmac,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? hmac;
|
|
||||||
}
|
|
||||||
|
|
||||||
class GenerateSecureRandomRequest {
|
|
||||||
const GenerateSecureRandomRequest({
|
|
||||||
this.length,
|
|
||||||
});
|
|
||||||
|
|
||||||
final int? length;
|
|
||||||
}
|
|
||||||
|
|
||||||
class GenerateSecureRandomResponse {
|
|
||||||
const GenerateSecureRandomResponse({
|
|
||||||
this.random,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? random;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Pbkdf2Request {
|
|
||||||
const Pbkdf2Request({
|
|
||||||
this.password,
|
|
||||||
this.salt,
|
|
||||||
this.length,
|
|
||||||
this.iterations,
|
|
||||||
this.hashAlgorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? password;
|
|
||||||
final Uint8List? salt;
|
|
||||||
final int? length;
|
|
||||||
final int? iterations;
|
|
||||||
final String? hashAlgorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Pbkdf2Response {
|
|
||||||
const Pbkdf2Response({
|
|
||||||
this.key,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? key;
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptRequest {
|
|
||||||
const EncryptRequest({
|
|
||||||
this.plainText,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? plainText;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptResponse {
|
|
||||||
const EncryptResponse({
|
|
||||||
this.cipherText,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? cipherText;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptRequest {
|
|
||||||
const DecryptRequest({
|
|
||||||
this.cipherText,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? cipherText;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptResponse {
|
|
||||||
const DecryptResponse({
|
|
||||||
this.plainText,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? plainText;
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptFileRequest {
|
|
||||||
const EncryptFileRequest({
|
|
||||||
this.plainTextPath,
|
|
||||||
this.cipherTextPath,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final String? plainTextPath;
|
|
||||||
final String? cipherTextPath;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptFileResponse {
|
|
||||||
const EncryptFileResponse({
|
|
||||||
this.success,
|
|
||||||
});
|
|
||||||
|
|
||||||
final bool? success;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptFileRequest {
|
|
||||||
const DecryptFileRequest({
|
|
||||||
this.cipherTextPath,
|
|
||||||
this.plainTextPath,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final String? cipherTextPath;
|
|
||||||
final String? plainTextPath;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DecryptFileResponse {
|
|
||||||
const DecryptFileResponse({
|
|
||||||
this.success,
|
|
||||||
});
|
|
||||||
|
|
||||||
final bool? success;
|
|
||||||
}
|
|
||||||
|
|
||||||
class EncryptWithIVRequest {
|
|
||||||
const EncryptWithIVRequest({
|
|
||||||
this.plainText,
|
|
||||||
this.iv,
|
|
||||||
this.key,
|
|
||||||
this.algorithm,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Uint8List? plainText;
|
|
||||||
final Uint8List? iv;
|
|
||||||
final Uint8List? key;
|
|
||||||
final String? algorithm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@HostApi(dartHostTestHandler: 'TestNativeCryptoAPI')
|
@HostApi(dartHostTestHandler: 'TestNativeCryptoAPI')
|
||||||
abstract class NativeCryptoAPI {
|
abstract class NativeCryptoAPI {
|
||||||
HashResponse hash(HashRequest request);
|
Uint8List? hash(Uint8List data, HashAlgorithm algorithm);
|
||||||
HmacResponse hmac(HmacRequest request);
|
Uint8List? hmac(Uint8List data, Uint8List key, HashAlgorithm algorithm);
|
||||||
|
Uint8List? generateSecureRandom(int length);
|
||||||
|
|
||||||
GenerateSecureRandomResponse generateSecureRandom(
|
Uint8List? pbkdf2(
|
||||||
GenerateSecureRandomRequest request,
|
Uint8List password,
|
||||||
|
Uint8List salt,
|
||||||
|
int length,
|
||||||
|
int iterations,
|
||||||
|
HashAlgorithm algorithm,
|
||||||
);
|
);
|
||||||
|
|
||||||
Pbkdf2Response pbkdf2(Pbkdf2Request request);
|
Uint8List? encrypt(
|
||||||
|
Uint8List plainText,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
EncryptResponse encrypt(EncryptRequest request);
|
Uint8List? encryptWithIV(
|
||||||
|
Uint8List plainText,
|
||||||
|
Uint8List iv,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
DecryptResponse decrypt(DecryptRequest request);
|
Uint8List? decrypt(
|
||||||
|
Uint8List cipherText,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
EncryptFileResponse encryptFile(EncryptFileRequest request);
|
bool? encryptFile(
|
||||||
|
String plainTextPath,
|
||||||
|
String cipherTextPath,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
DecryptFileResponse decryptFile(DecryptFileRequest request);
|
bool? encryptFileWithIV(
|
||||||
|
String plainTextPath,
|
||||||
|
String cipherTextPath,
|
||||||
|
Uint8List iv,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
|
bool? decryptFile(
|
||||||
|
String cipherTextPath,
|
||||||
|
String plainTextPath,
|
||||||
|
Uint8List key,
|
||||||
|
CipherAlgorithm algorithm,
|
||||||
|
);
|
||||||
|
|
||||||
EncryptResponse encryptWithIV(EncryptWithIVRequest request);
|
|
||||||
}
|
}
|
||||||
|
@ -10,16 +10,16 @@ dependencies:
|
|||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
flutter: { sdk: flutter }
|
flutter: { sdk: flutter }
|
||||||
|
|
||||||
plugin_platform_interface: ^2.1.3
|
plugin_platform_interface: ^2.1.4
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
|
|
||||||
mockito: ^5.3.2
|
mockito: ^5.4.0
|
||||||
pigeon: ^9.0.0
|
pigeon: ^9.2.0
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted:
|
hosted:
|
||||||
url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
name: wyatt_analysis
|
name: wyatt_analysis
|
||||||
version: 2.4.0
|
version: 2.4.1
|
||||||
|
@ -4,18 +4,18 @@
|
|||||||
// license that can be found in the LICENSE file or at
|
// license that can be found in the LICENSE file or at
|
||||||
// https://opensource.org/licenses/MIT.
|
// https://opensource.org/licenses/MIT.
|
||||||
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:mockito/mockito.dart';
|
import 'package:mockito/mockito.dart';
|
||||||
import 'package:native_crypto_platform_interface/src/implementations/basic_message_channel_native_crypto.dart';
|
import 'package:native_crypto_platform_interface/src/implementations/basic_message_channel_native_crypto.dart';
|
||||||
import 'package:native_crypto_platform_interface/src/implementations/method_channel_native_crypto.dart';
|
|
||||||
import 'package:native_crypto_platform_interface/src/interface/native_crypto_platform.dart';
|
import 'package:native_crypto_platform_interface/src/interface/native_crypto_platform.dart';
|
||||||
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
|
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
|
||||||
|
|
||||||
class ImplementsNativeCryptoPlatform
|
class ImplementsNativeCryptoPlatform
|
||||||
// ignore: prefer_mixin
|
// ignore: prefer_mixin
|
||||||
with Mock
|
with
|
||||||
implements NativeCryptoPlatform {}
|
Mock
|
||||||
|
implements
|
||||||
|
NativeCryptoPlatform {}
|
||||||
|
|
||||||
class ExtendsNativeCryptoPlatform extends NativeCryptoPlatform {}
|
class ExtendsNativeCryptoPlatform extends NativeCryptoPlatform {}
|
||||||
|
|
||||||
@ -31,10 +31,6 @@ void main() {
|
|||||||
|
|
||||||
group('$NativeCryptoPlatform', () {
|
group('$NativeCryptoPlatform', () {
|
||||||
// should allow read of default app from native
|
// should allow read of default app from native
|
||||||
test('$MethodChannelNativeCrypto is the default instance', () {
|
|
||||||
expect(NativeCryptoPlatform.instance, isA<MethodChannelNativeCrypto>());
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Can be extended', () {
|
test('Can be extended', () {
|
||||||
NativeCryptoPlatform.instance = ExtendsNativeCryptoPlatform();
|
NativeCryptoPlatform.instance = ExtendsNativeCryptoPlatform();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user