Fix/Update #1
							
								
								
									
										29
									
								
								native_crypto_android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								native_crypto_android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | # Miscellaneous | ||||||
|  | *.class | ||||||
|  | *.log | ||||||
|  | *.pyc | ||||||
|  | *.swp | ||||||
|  | .DS_Store | ||||||
|  | .atom/ | ||||||
|  | .buildlog/ | ||||||
|  | .history | ||||||
|  | .svn/ | ||||||
|  | 
 | ||||||
|  | # IntelliJ related | ||||||
|  | *.iml | ||||||
|  | *.ipr | ||||||
|  | *.iws | ||||||
|  | .idea/ | ||||||
|  | 
 | ||||||
|  | # The .vscode folder contains launch configuration and tasks you configure in | ||||||
|  | # VS Code which you may wish to be included in version control, so this line | ||||||
|  | # is commented out by default. | ||||||
|  | #.vscode/ | ||||||
|  | 
 | ||||||
|  | # Flutter/Dart/Pub related | ||||||
|  | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. | ||||||
|  | /pubspec.lock | ||||||
|  | **/doc/api/ | ||||||
|  | .dart_tool/ | ||||||
|  | .packages | ||||||
|  | build/ | ||||||
							
								
								
									
										10
									
								
								native_crypto_android/.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								native_crypto_android/.metadata
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | # This file tracks properties of this Flutter project. | ||||||
|  | # Used by Flutter tool to assess capabilities and perform upgrades etc. | ||||||
|  | # | ||||||
|  | # This file should be version controlled and should not be manually edited. | ||||||
|  | 
 | ||||||
|  | version: | ||||||
|  |   revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b | ||||||
|  |   channel: stable | ||||||
|  | 
 | ||||||
|  | project_type: plugin | ||||||
							
								
								
									
										1
									
								
								native_crypto_android/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								native_crypto_android/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | Check [`native_crypto`](../native_crypto/CHANGELOG.md) plugin's changelog. | ||||||
							
								
								
									
										23
									
								
								native_crypto_android/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								native_crypto_android/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | NativeCrypto - Android Implementation | ||||||
|  | 
 | ||||||
|  | MIT License | ||||||
|  | 
 | ||||||
|  | Copyright (c) 2019 - 2022 Hugo Pointcheval | ||||||
|  | 
 | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  | 
 | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
							
								
								
									
										15
									
								
								native_crypto_android/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								native_crypto_android/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # native_crypto_android | ||||||
|  | 
 | ||||||
|  | A new flutter plugin project. | ||||||
|  | 
 | ||||||
|  | ## Getting Started | ||||||
|  | 
 | ||||||
|  | This project is a starting point for a Flutter | ||||||
|  | [plug-in package](https://flutter.dev/developing-packages/), | ||||||
|  | a specialized package that includes platform-specific implementation code for | ||||||
|  | Android and/or iOS. | ||||||
|  | 
 | ||||||
|  | For help getting started with Flutter, view our | ||||||
|  | [online documentation](https://flutter.dev/docs), which offers tutorials, | ||||||
|  | samples, guidance on mobile development, and a full API reference. | ||||||
|  | 
 | ||||||
							
								
								
									
										8
									
								
								native_crypto_android/android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								native_crypto_android/android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | *.iml | ||||||
|  | .gradle | ||||||
|  | /local.properties | ||||||
|  | /.idea/workspace.xml | ||||||
|  | /.idea/libraries | ||||||
|  | .DS_Store | ||||||
|  | /build | ||||||
|  | /captures | ||||||
							
								
								
									
										50
									
								
								native_crypto_android/android/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								native_crypto_android/android/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | group 'fr.pointcheval.native_crypto_android' | ||||||
|  | version '1.0-SNAPSHOT' | ||||||
|  | 
 | ||||||
|  | buildscript { | ||||||
|  |     ext.kotlin_version = '1.3.50' | ||||||
|  |     repositories { | ||||||
|  |         google() | ||||||
|  |         mavenCentral() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     dependencies { | ||||||
|  |         classpath 'com.android.tools.build:gradle:4.1.0' | ||||||
|  |         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | rootProject.allprojects { | ||||||
|  |     repositories { | ||||||
|  |         google() | ||||||
|  |         mavenCentral() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | apply plugin: 'com.android.library' | ||||||
|  | apply plugin: 'kotlin-android' | ||||||
|  | 
 | ||||||
|  | android { | ||||||
|  |     compileSdkVersion 30 | ||||||
|  | 
 | ||||||
|  |     compileOptions { | ||||||
|  |         sourceCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |         targetCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     kotlinOptions { | ||||||
|  |         jvmTarget = '1.8' | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     sourceSets { | ||||||
|  |         main.java.srcDirs += 'src/main/kotlin' | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     defaultConfig { | ||||||
|  |         minSdkVersion 26 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | dependencies { | ||||||
|  |     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								native_crypto_android/android/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								native_crypto_android/android/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										5
									
								
								native_crypto_android/android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								native_crypto_android/android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | distributionBase=GRADLE_USER_HOME | ||||||
|  | distributionPath=wrapper/dists | ||||||
|  | distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip | ||||||
|  | zipStoreBase=GRADLE_USER_HOME | ||||||
|  | zipStorePath=wrapper/dists | ||||||
							
								
								
									
										185
									
								
								native_crypto_android/android/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										185
									
								
								native_crypto_android/android/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @ -0,0 +1,185 @@ | |||||||
|  | #!/usr/bin/env sh | ||||||
|  | 
 | ||||||
|  | # | ||||||
|  | # Copyright 2015 the original author or authors. | ||||||
|  | # | ||||||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | # you may not use this file except in compliance with the License. | ||||||
|  | # You may obtain a copy of the License at | ||||||
|  | # | ||||||
|  | #      https://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | # Unless required by applicable law or agreed to in writing, software | ||||||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | # See the License for the specific language governing permissions and | ||||||
|  | # limitations under the License. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | ############################################################################## | ||||||
|  | ## | ||||||
|  | ##  Gradle start up script for UN*X | ||||||
|  | ## | ||||||
|  | ############################################################################## | ||||||
|  | 
 | ||||||
|  | # Attempt to set APP_HOME | ||||||
|  | # Resolve links: $0 may be a link | ||||||
|  | PRG="$0" | ||||||
|  | # Need this for relative symlinks. | ||||||
|  | while [ -h "$PRG" ] ; do | ||||||
|  |     ls=`ls -ld "$PRG"` | ||||||
|  |     link=`expr "$ls" : '.*-> \(.*\)$'` | ||||||
|  |     if expr "$link" : '/.*' > /dev/null; then | ||||||
|  |         PRG="$link" | ||||||
|  |     else | ||||||
|  |         PRG=`dirname "$PRG"`"/$link" | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  | SAVED="`pwd`" | ||||||
|  | cd "`dirname \"$PRG\"`/" >/dev/null | ||||||
|  | APP_HOME="`pwd -P`" | ||||||
|  | cd "$SAVED" >/dev/null | ||||||
|  | 
 | ||||||
|  | APP_NAME="Gradle" | ||||||
|  | APP_BASE_NAME=`basename "$0"` | ||||||
|  | 
 | ||||||
|  | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||||
|  | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||||
|  | 
 | ||||||
|  | # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||||
|  | MAX_FD="maximum" | ||||||
|  | 
 | ||||||
|  | warn () { | ||||||
|  |     echo "$*" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | die () { | ||||||
|  |     echo | ||||||
|  |     echo "$*" | ||||||
|  |     echo | ||||||
|  |     exit 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # OS specific support (must be 'true' or 'false'). | ||||||
|  | cygwin=false | ||||||
|  | msys=false | ||||||
|  | darwin=false | ||||||
|  | nonstop=false | ||||||
|  | case "`uname`" in | ||||||
|  |   CYGWIN* ) | ||||||
|  |     cygwin=true | ||||||
|  |     ;; | ||||||
|  |   Darwin* ) | ||||||
|  |     darwin=true | ||||||
|  |     ;; | ||||||
|  |   MINGW* ) | ||||||
|  |     msys=true | ||||||
|  |     ;; | ||||||
|  |   NONSTOP* ) | ||||||
|  |     nonstop=true | ||||||
|  |     ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Determine the Java command to use to start the JVM. | ||||||
|  | if [ -n "$JAVA_HOME" ] ; then | ||||||
|  |     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||||||
|  |         # IBM's JDK on AIX uses strange locations for the executables | ||||||
|  |         JAVACMD="$JAVA_HOME/jre/sh/java" | ||||||
|  |     else | ||||||
|  |         JAVACMD="$JAVA_HOME/bin/java" | ||||||
|  |     fi | ||||||
|  |     if [ ! -x "$JAVACMD" ] ; then | ||||||
|  |         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||||||
|  | 
 | ||||||
|  | Please set the JAVA_HOME variable in your environment to match the | ||||||
|  | location of your Java installation." | ||||||
|  |     fi | ||||||
|  | else | ||||||
|  |     JAVACMD="java" | ||||||
|  |     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||||
|  | 
 | ||||||
|  | Please set the JAVA_HOME variable in your environment to match the | ||||||
|  | location of your Java installation." | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Increase the maximum file descriptors if we can. | ||||||
|  | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||||||
|  |     MAX_FD_LIMIT=`ulimit -H -n` | ||||||
|  |     if [ $? -eq 0 ] ; then | ||||||
|  |         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||||||
|  |             MAX_FD="$MAX_FD_LIMIT" | ||||||
|  |         fi | ||||||
|  |         ulimit -n $MAX_FD | ||||||
|  |         if [ $? -ne 0 ] ; then | ||||||
|  |             warn "Could not set maximum file descriptor limit: $MAX_FD" | ||||||
|  |         fi | ||||||
|  |     else | ||||||
|  |         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||||||
|  |     fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # For Darwin, add options to specify how the application appears in the dock | ||||||
|  | if $darwin; then | ||||||
|  |     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # For Cygwin or MSYS, switch paths to Windows format before running java | ||||||
|  | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then | ||||||
|  |     APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||||||
|  |     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||||||
|  | 
 | ||||||
|  |     JAVACMD=`cygpath --unix "$JAVACMD"` | ||||||
|  | 
 | ||||||
|  |     # We build the pattern for arguments to be converted via cygpath | ||||||
|  |     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||||||
|  |     SEP="" | ||||||
|  |     for dir in $ROOTDIRSRAW ; do | ||||||
|  |         ROOTDIRS="$ROOTDIRS$SEP$dir" | ||||||
|  |         SEP="|" | ||||||
|  |     done | ||||||
|  |     OURCYGPATTERN="(^($ROOTDIRS))" | ||||||
|  |     # Add a user-defined pattern to the cygpath arguments | ||||||
|  |     if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||||||
|  |         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||||||
|  |     fi | ||||||
|  |     # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||||||
|  |     i=0 | ||||||
|  |     for arg in "$@" ; do | ||||||
|  |         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||||||
|  |         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option | ||||||
|  | 
 | ||||||
|  |         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition | ||||||
|  |             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||||||
|  |         else | ||||||
|  |             eval `echo args$i`="\"$arg\"" | ||||||
|  |         fi | ||||||
|  |         i=`expr $i + 1` | ||||||
|  |     done | ||||||
|  |     case $i in | ||||||
|  |         0) set -- ;; | ||||||
|  |         1) set -- "$args0" ;; | ||||||
|  |         2) set -- "$args0" "$args1" ;; | ||||||
|  |         3) set -- "$args0" "$args1" "$args2" ;; | ||||||
|  |         4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||||||
|  |         5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||||||
|  |         6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||||||
|  |         7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||||||
|  |         8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||||||
|  |         9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||||||
|  |     esac | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Escape application args | ||||||
|  | save () { | ||||||
|  |     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||||||
|  |     echo " " | ||||||
|  | } | ||||||
|  | APP_ARGS=`save "$@"` | ||||||
|  | 
 | ||||||
|  | # Collect all arguments for the java command, following the shell quoting and substitution rules | ||||||
|  | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||||||
|  | 
 | ||||||
|  | exec "$JAVACMD" "$@" | ||||||
							
								
								
									
										89
									
								
								native_crypto_android/android/gradlew.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								native_crypto_android/android/gradlew.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | |||||||
|  | @rem | ||||||
|  | @rem Copyright 2015 the original author or authors. | ||||||
|  | @rem | ||||||
|  | @rem Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | @rem you may not use this file except in compliance with the License. | ||||||
|  | @rem You may obtain a copy of the License at | ||||||
|  | @rem | ||||||
|  | @rem      https://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | @rem | ||||||
|  | @rem Unless required by applicable law or agreed to in writing, software | ||||||
|  | @rem distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | @rem See the License for the specific language governing permissions and | ||||||
|  | @rem limitations under the License. | ||||||
|  | @rem | ||||||
|  | 
 | ||||||
|  | @if "%DEBUG%" == "" @echo off | ||||||
|  | @rem ########################################################################## | ||||||
|  | @rem | ||||||
|  | @rem  Gradle startup script for Windows | ||||||
|  | @rem | ||||||
|  | @rem ########################################################################## | ||||||
|  | 
 | ||||||
|  | @rem Set local scope for the variables with windows NT shell | ||||||
|  | if "%OS%"=="Windows_NT" setlocal | ||||||
|  | 
 | ||||||
|  | set DIRNAME=%~dp0 | ||||||
|  | if "%DIRNAME%" == "" set DIRNAME=. | ||||||
|  | set APP_BASE_NAME=%~n0 | ||||||
|  | set APP_HOME=%DIRNAME% | ||||||
|  | 
 | ||||||
|  | @rem Resolve any "." and ".." in APP_HOME to make it shorter. | ||||||
|  | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | ||||||
|  | 
 | ||||||
|  | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||||
|  | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||||
|  | 
 | ||||||
|  | @rem Find java.exe | ||||||
|  | if defined JAVA_HOME goto findJavaFromJavaHome | ||||||
|  | 
 | ||||||
|  | set JAVA_EXE=java.exe | ||||||
|  | %JAVA_EXE% -version >NUL 2>&1 | ||||||
|  | if "%ERRORLEVEL%" == "0" goto execute | ||||||
|  | 
 | ||||||
|  | echo. | ||||||
|  | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||||
|  | echo. | ||||||
|  | echo Please set the JAVA_HOME variable in your environment to match the | ||||||
|  | echo location of your Java installation. | ||||||
|  | 
 | ||||||
|  | goto fail | ||||||
|  | 
 | ||||||
|  | :findJavaFromJavaHome | ||||||
|  | set JAVA_HOME=%JAVA_HOME:"=% | ||||||
|  | set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||||
|  | 
 | ||||||
|  | if exist "%JAVA_EXE%" goto execute | ||||||
|  | 
 | ||||||
|  | echo. | ||||||
|  | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||||
|  | echo. | ||||||
|  | echo Please set the JAVA_HOME variable in your environment to match the | ||||||
|  | echo location of your Java installation. | ||||||
|  | 
 | ||||||
|  | goto fail | ||||||
|  | 
 | ||||||
|  | :execute | ||||||
|  | @rem Setup the command line | ||||||
|  | 
 | ||||||
|  | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @rem Execute Gradle | ||||||
|  | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||||
|  | 
 | ||||||
|  | :end | ||||||
|  | @rem End local scope for the variables with windows NT shell | ||||||
|  | if "%ERRORLEVEL%"=="0" goto mainEnd | ||||||
|  | 
 | ||||||
|  | :fail | ||||||
|  | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||||
|  | rem the _cmd.exe /c_ return code! | ||||||
|  | if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||||
|  | exit /b 1 | ||||||
|  | 
 | ||||||
|  | :mainEnd | ||||||
|  | if "%OS%"=="Windows_NT" endlocal | ||||||
|  | 
 | ||||||
|  | :omega | ||||||
							
								
								
									
										1
									
								
								native_crypto_android/android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								native_crypto_android/android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | rootProject.name = 'native_crypto_android' | ||||||
| @ -0,0 +1,3 @@ | |||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |   package="fr.pointcheval.native_crypto_android"> | ||||||
|  | </manifest> | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android | ||||||
|  | 
 | ||||||
|  | abstract class Cipher { | ||||||
|  |     abstract fun encrypt(data: ByteArray, key: ByteArray) : ByteArray?; | ||||||
|  |     abstract fun decrypt(data: ByteArray, key: ByteArray) : ByteArray?; | ||||||
|  | } | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android | ||||||
|  | 
 | ||||||
|  | import java.security.MessageDigest | ||||||
|  | 
 | ||||||
|  | object Hash { | ||||||
|  |     fun digest(data: ByteArray?, algorithm: HashAlgorithm): ByteArray { | ||||||
|  |         val func : String = when (algorithm) { | ||||||
|  |             HashAlgorithm.SHA256 -> "SHA-256" | ||||||
|  |             HashAlgorithm.SHA384 -> "SHA-384" | ||||||
|  |             HashAlgorithm.SHA512 -> "SHA-512" | ||||||
|  |         } | ||||||
|  |         val md = MessageDigest.getInstance(func) | ||||||
|  |         return md.digest(data) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fun digest(data: ByteArray?, algorithm: String): ByteArray { | ||||||
|  |         val func : HashAlgorithm = when (algorithm) { | ||||||
|  |             "sha256" -> HashAlgorithm.SHA256 | ||||||
|  |             "sha384" -> HashAlgorithm.SHA384 | ||||||
|  |             "sha512" -> HashAlgorithm.SHA512 | ||||||
|  |             else -> HashAlgorithm.SHA256 | ||||||
|  |         } | ||||||
|  |         return digest(data, func) | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android | ||||||
|  | 
 | ||||||
|  | enum class HashAlgorithm(val length : Int) { | ||||||
|  |     SHA256(256), | ||||||
|  |     SHA384(384), | ||||||
|  |     SHA512(512); | ||||||
|  | 
 | ||||||
|  |     fun hmac(): String { | ||||||
|  |         return when (this) { | ||||||
|  |             HashAlgorithm.SHA256 -> "HmacSHA256" | ||||||
|  |             HashAlgorithm.SHA384 -> "HmacSHA384" | ||||||
|  |             HashAlgorithm.SHA512 -> "HmacSHA512" | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android | ||||||
|  | 
 | ||||||
|  | import java.security.SecureRandom | ||||||
|  | import javax.crypto.SecretKeyFactory | ||||||
|  | import javax.crypto.spec.PBEKeySpec | ||||||
|  | 
 | ||||||
|  | object Key { | ||||||
|  |      fun fromSecureRandom(bitsCount: Int) : ByteArray { | ||||||
|  |          val bytes = ByteArray(bitsCount / 8) | ||||||
|  |          SecureRandom.getInstanceStrong().nextBytes(bytes) | ||||||
|  |          return bytes | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |     fun fromPBKDF2(password: String, salt: String, keyBytesCount: Int, iterations: Int, algorithm: String): ByteArray { | ||||||
|  |         val availableHashAlgorithm: Map<String, String> = mapOf( | ||||||
|  |             "sha256" to "PBKDF2WithHmacSHA256", | ||||||
|  |             "sha384" to "PBKDF2withHmacSHA384", | ||||||
|  |             "sha512" to "PBKDF2withHmacSHA512" | ||||||
|  |         ) | ||||||
|  |         val spec = PBEKeySpec(password.toCharArray(), salt.toByteArray(), iterations, keyBytesCount * 8) | ||||||
|  |         val skf: SecretKeyFactory = SecretKeyFactory.getInstance(availableHashAlgorithm[algorithm]) | ||||||
|  |         return skf.generateSecret(spec).encoded | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,77 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android | ||||||
|  | 
 | ||||||
|  | import androidx.annotation.NonNull | ||||||
|  | import fr.pointcheval.native_crypto_android.ciphers.AESCipher | ||||||
|  | 
 | ||||||
|  | import io.flutter.embedding.engine.plugins.FlutterPlugin | ||||||
|  | import io.flutter.plugin.common.MethodCall | ||||||
|  | import io.flutter.plugin.common.MethodChannel | ||||||
|  | import io.flutter.plugin.common.MethodChannel.MethodCallHandler | ||||||
|  | import io.flutter.plugin.common.MethodChannel.Result | ||||||
|  | 
 | ||||||
|  | /** NativeCryptoAndroidPlugin */ | ||||||
|  | class NativeCryptoAndroidPlugin: FlutterPlugin, MethodCallHandler { | ||||||
|  |   /// The MethodChannel that will the communication between Flutter and native Android | ||||||
|  |   /// | ||||||
|  |   /// This local reference serves to register the plugin with the Flutter Engine and unregister it | ||||||
|  |   /// when the Flutter Engine is detached from the Activity | ||||||
|  |   private lateinit var channel : MethodChannel | ||||||
|  | 
 | ||||||
|  |   override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { | ||||||
|  |     channel = MethodChannel(flutterPluginBinding.binaryMessenger, "plugins.hugop.cl/native_crypto") | ||||||
|  |     channel.setMethodCallHandler(this) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { | ||||||
|  |     when (call.method) { | ||||||
|  |       "digest" -> { | ||||||
|  |         val data : ByteArray? = call.argument<ByteArray>("data") | ||||||
|  |         val algorithm : String? = call.argument<String>("algorithm") | ||||||
|  |         // TODO(hpcl): check if algorithm is null | ||||||
|  |         // TODO(hpcl): check if digest is null | ||||||
|  |         result.success(Hash.digest(data, algorithm!!)) | ||||||
|  |       } | ||||||
|  |       "generateSecretKey" -> { | ||||||
|  |         val bitsCount : Int? = call.argument<Int>("bitsCount") | ||||||
|  |         // TODO(hpcl): check null | ||||||
|  |         result.success(Key.fromSecureRandom(bitsCount!!)) | ||||||
|  |       } | ||||||
|  |       "generateKeyPair" -> { | ||||||
|  |         result.notImplemented() | ||||||
|  |       } | ||||||
|  |       "pbkdf2" -> { | ||||||
|  |         val password : String? = call.argument<String>("password") | ||||||
|  |         val salt : String? = call.argument<String>("salt") | ||||||
|  |         val keyBytesCount : Int? = call.argument<Int>("keyBytesCount") | ||||||
|  |         val iterations : Int? = call.argument<Int>("iterations") | ||||||
|  |         val algorithm : String? = call.argument<String>("algorithm") | ||||||
|  |         // TODO(hpcl): check null | ||||||
|  |         result.success(Key.fromPBKDF2(password!!, salt!!, keyBytesCount!!, iterations!!, algorithm!!)) | ||||||
|  |       } | ||||||
|  |       "encrypt" -> { | ||||||
|  |         val data : ByteArray? = call.argument<ByteArray>("data") | ||||||
|  |         val key : ByteArray? = call.argument<ByteArray>("key") | ||||||
|  |         val algorithm : String? = call.argument<String>("algorithm") | ||||||
|  |         // TODO(hpcl): check null | ||||||
|  |         // TODO(hcpl): check algorithm | ||||||
|  |         result.success(AESCipher().encrypt(data!!, key!!)) | ||||||
|  |       } | ||||||
|  |       "decrypt" ->  { | ||||||
|  |         val data : ByteArray? = call.argument<ByteArray>("data") | ||||||
|  |         val key : ByteArray? = call.argument<ByteArray>("key") | ||||||
|  |         val algorithm : String? = call.argument<String>("algorithm") | ||||||
|  |         // TODO(hpcl): check null | ||||||
|  |         // TODO(hcpl): check algorithm | ||||||
|  |         result.success(AESCipher().decrypt(data!!, key!!)) | ||||||
|  |       } | ||||||
|  |       "generateSharedSecretKey" -> { | ||||||
|  |         result.notImplemented() | ||||||
|  |       } | ||||||
|  |       else -> result.notImplemented() | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { | ||||||
|  |     channel.setMethodCallHandler(null) | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android.ciphers | ||||||
|  | 
 | ||||||
|  | import fr.pointcheval.native_crypto_android.Cipher | ||||||
|  | import javax.crypto.SecretKey | ||||||
|  | import javax.crypto.spec.GCMParameterSpec | ||||||
|  | import javax.crypto.spec.SecretKeySpec | ||||||
|  | 
 | ||||||
|  | class AESCipher : Cipher() { | ||||||
|  |     override fun encrypt(data: ByteArray, key: ByteArray): ByteArray { | ||||||
|  |         val sk: SecretKey = SecretKeySpec(key, "AES") | ||||||
|  |         val cipher = javax.crypto.Cipher.getInstance("AES/GCM/NoPadding") | ||||||
|  |         cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sk) | ||||||
|  |         // javax.crypto representation = [CIPHERTEXT(n-28) || TAG(16)] | ||||||
|  |         val bytes = cipher.doFinal(data) | ||||||
|  |         val iv = cipher.iv.copyOf()                                                 // 12 bytes nonce | ||||||
|  |         // native.crypto representation = [NONCE(12) || CIPHERTEXT(n-28) || TAG(16)] | ||||||
|  |         return iv.plus(bytes) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     override fun decrypt(data: ByteArray, key: ByteArray): ByteArray? { | ||||||
|  |         val sk: SecretKey = SecretKeySpec(key, "AES") | ||||||
|  |         // native.crypto representation = [NONCE(12) || CIPHERTEXT(n-28) || TAG(16)] | ||||||
|  |         val iv = data.sliceArray(IntRange(0,11))                              // 12 bytes nonce | ||||||
|  |         // javax.crypto representation = [CIPHERTEXT(n-28) || TAG(16)] | ||||||
|  |         val payload = data.sliceArray(IntRange(12, data.size - 1)) | ||||||
|  |         val spec = GCMParameterSpec(16 * 8, iv) | ||||||
|  |         val cipher = javax.crypto.Cipher.getInstance("AES/GCM/NoPadding") | ||||||
|  |         cipher.init(javax.crypto.Cipher.DECRYPT_MODE, sk, spec) | ||||||
|  |         return cipher.doFinal(payload) | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										46
									
								
								native_crypto_android/example/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								native_crypto_android/example/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | # Miscellaneous | ||||||
|  | *.class | ||||||
|  | *.log | ||||||
|  | *.pyc | ||||||
|  | *.swp | ||||||
|  | .DS_Store | ||||||
|  | .atom/ | ||||||
|  | .buildlog/ | ||||||
|  | .history | ||||||
|  | .svn/ | ||||||
|  | 
 | ||||||
|  | # IntelliJ related | ||||||
|  | *.iml | ||||||
|  | *.ipr | ||||||
|  | *.iws | ||||||
|  | .idea/ | ||||||
|  | 
 | ||||||
|  | # The .vscode folder contains launch configuration and tasks you configure in | ||||||
|  | # VS Code which you may wish to be included in version control, so this line | ||||||
|  | # is commented out by default. | ||||||
|  | #.vscode/ | ||||||
|  | 
 | ||||||
|  | # Flutter/Dart/Pub related | ||||||
|  | **/doc/api/ | ||||||
|  | **/ios/Flutter/.last_build_id | ||||||
|  | .dart_tool/ | ||||||
|  | .flutter-plugins | ||||||
|  | .flutter-plugins-dependencies | ||||||
|  | .packages | ||||||
|  | .pub-cache/ | ||||||
|  | .pub/ | ||||||
|  | /build/ | ||||||
|  | 
 | ||||||
|  | # Web related | ||||||
|  | lib/generated_plugin_registrant.dart | ||||||
|  | 
 | ||||||
|  | # Symbolication related | ||||||
|  | app.*.symbols | ||||||
|  | 
 | ||||||
|  | # Obfuscation related | ||||||
|  | app.*.map.json | ||||||
|  | 
 | ||||||
|  | # Android Studio will place build artifacts here | ||||||
|  | /android/app/debug | ||||||
|  | /android/app/profile | ||||||
|  | /android/app/release | ||||||
							
								
								
									
										10
									
								
								native_crypto_android/example/.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								native_crypto_android/example/.metadata
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | # This file tracks properties of this Flutter project. | ||||||
|  | # Used by Flutter tool to assess capabilities and perform upgrades etc. | ||||||
|  | # | ||||||
|  | # This file should be version controlled and should not be manually edited. | ||||||
|  | 
 | ||||||
|  | version: | ||||||
|  |   revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b | ||||||
|  |   channel: stable | ||||||
|  | 
 | ||||||
|  | project_type: app | ||||||
							
								
								
									
										16
									
								
								native_crypto_android/example/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								native_crypto_android/example/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | # native_crypto_android_example | ||||||
|  | 
 | ||||||
|  | Demonstrates how to use the native_crypto_android plugin. | ||||||
|  | 
 | ||||||
|  | ## Getting Started | ||||||
|  | 
 | ||||||
|  | This project is a starting point for a Flutter application. | ||||||
|  | 
 | ||||||
|  | A few resources to get you started if this is your first Flutter project: | ||||||
|  | 
 | ||||||
|  | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) | ||||||
|  | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) | ||||||
|  | 
 | ||||||
|  | For help getting started with Flutter, view our | ||||||
|  | [online documentation](https://flutter.dev/docs), which offers tutorials, | ||||||
|  | samples, guidance on mobile development, and a full API reference. | ||||||
							
								
								
									
										29
									
								
								native_crypto_android/example/analysis_options.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								native_crypto_android/example/analysis_options.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | # This file configures the analyzer, which statically analyzes Dart code to | ||||||
|  | # check for errors, warnings, and lints. | ||||||
|  | # | ||||||
|  | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled | ||||||
|  | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be | ||||||
|  | # invoked from the command line by running `flutter analyze`. | ||||||
|  | 
 | ||||||
|  | # The following line activates a set of recommended lints for Flutter apps, | ||||||
|  | # packages, and plugins designed to encourage good coding practices. | ||||||
|  | include: package:flutter_lints/flutter.yaml | ||||||
|  | 
 | ||||||
|  | linter: | ||||||
|  |   # The lint rules applied to this project can be customized in the | ||||||
|  |   # section below to disable rules from the `package:flutter_lints/flutter.yaml` | ||||||
|  |   # included above or to enable additional rules. A list of all available lints | ||||||
|  |   # and their documentation is published at | ||||||
|  |   # https://dart-lang.github.io/linter/lints/index.html. | ||||||
|  |   # | ||||||
|  |   # Instead of disabling a lint rule for the entire project in the | ||||||
|  |   # section below, it can also be suppressed for a single line of code | ||||||
|  |   # or a specific dart file by using the `// ignore: name_of_lint` and | ||||||
|  |   # `// ignore_for_file: name_of_lint` syntax on the line or in the file | ||||||
|  |   # producing the lint. | ||||||
|  |   rules: | ||||||
|  |     # avoid_print: false  # Uncomment to disable the `avoid_print` rule | ||||||
|  |     # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule | ||||||
|  | 
 | ||||||
|  | # Additional information about this file can be found at | ||||||
|  | # https://dart.dev/guides/language/analysis-options | ||||||
							
								
								
									
										13
									
								
								native_crypto_android/example/android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								native_crypto_android/example/android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | gradle-wrapper.jar | ||||||
|  | /.gradle | ||||||
|  | /captures/ | ||||||
|  | /gradlew | ||||||
|  | /gradlew.bat | ||||||
|  | /local.properties | ||||||
|  | GeneratedPluginRegistrant.java | ||||||
|  | 
 | ||||||
|  | # Remember to never publicly share your keystore. | ||||||
|  | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app | ||||||
|  | key.properties | ||||||
|  | **/*.keystore | ||||||
|  | **/*.jks | ||||||
							
								
								
									
										68
									
								
								native_crypto_android/example/android/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								native_crypto_android/example/android/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | def localProperties = new Properties() | ||||||
|  | def localPropertiesFile = rootProject.file('local.properties') | ||||||
|  | if (localPropertiesFile.exists()) { | ||||||
|  |     localPropertiesFile.withReader('UTF-8') { reader -> | ||||||
|  |         localProperties.load(reader) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | def flutterRoot = localProperties.getProperty('flutter.sdk') | ||||||
|  | if (flutterRoot == null) { | ||||||
|  |     throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') | ||||||
|  | if (flutterVersionCode == null) { | ||||||
|  |     flutterVersionCode = '1' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | def flutterVersionName = localProperties.getProperty('flutter.versionName') | ||||||
|  | if (flutterVersionName == null) { | ||||||
|  |     flutterVersionName = '1.0' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | apply plugin: 'com.android.application' | ||||||
|  | apply plugin: 'kotlin-android' | ||||||
|  | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" | ||||||
|  | 
 | ||||||
|  | android { | ||||||
|  |     compileSdkVersion flutter.compileSdkVersion | ||||||
|  | 
 | ||||||
|  |     compileOptions { | ||||||
|  |         sourceCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |         targetCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     kotlinOptions { | ||||||
|  |         jvmTarget = '1.8' | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     sourceSets { | ||||||
|  |         main.java.srcDirs += 'src/main/kotlin' | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     defaultConfig { | ||||||
|  |         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). | ||||||
|  |         applicationId "fr.pointcheval.native_crypto_android_example" | ||||||
|  |         minSdkVersion 26 | ||||||
|  |         targetSdkVersion flutter.targetSdkVersion | ||||||
|  |         versionCode flutterVersionCode.toInteger() | ||||||
|  |         versionName flutterVersionName | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     buildTypes { | ||||||
|  |         release { | ||||||
|  |             // TODO: Add your own signing config for the release build. | ||||||
|  |             // Signing with the debug keys for now, so `flutter run --release` works. | ||||||
|  |             signingConfig signingConfigs.debug | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | flutter { | ||||||
|  |     source '../..' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | dependencies { | ||||||
|  |     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     package="fr.pointcheval.native_crypto_android_example"> | ||||||
|  |     <!-- Flutter needs it to communicate with the running application | ||||||
|  |          to allow setting breakpoints, to provide hot reload, etc. | ||||||
|  |     --> | ||||||
|  |     <uses-permission android:name="android.permission.INTERNET"/> | ||||||
|  | </manifest> | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     package="fr.pointcheval.native_crypto_android_example"> | ||||||
|  |    <application | ||||||
|  |         android:label="native_crypto_android_example" | ||||||
|  |         android:name="${applicationName}" | ||||||
|  |         android:icon="@mipmap/ic_launcher"> | ||||||
|  |         <activity | ||||||
|  |             android:name=".MainActivity" | ||||||
|  |             android:exported="true" | ||||||
|  |             android:launchMode="singleTop" | ||||||
|  |             android:theme="@style/LaunchTheme" | ||||||
|  |             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" | ||||||
|  |             android:hardwareAccelerated="true" | ||||||
|  |             android:windowSoftInputMode="adjustResize"> | ||||||
|  |             <!-- Specifies an Android theme to apply to this Activity as soon as | ||||||
|  |                  the Android process has started. This theme is visible to the user | ||||||
|  |                  while the Flutter UI initializes. After that, this theme continues | ||||||
|  |                  to determine the Window background behind the Flutter UI. --> | ||||||
|  |             <meta-data | ||||||
|  |               android:name="io.flutter.embedding.android.NormalTheme" | ||||||
|  |               android:resource="@style/NormalTheme" | ||||||
|  |               /> | ||||||
|  |             <intent-filter> | ||||||
|  |                 <action android:name="android.intent.action.MAIN"/> | ||||||
|  |                 <category android:name="android.intent.category.LAUNCHER"/> | ||||||
|  |             </intent-filter> | ||||||
|  |         </activity> | ||||||
|  |         <!-- Don't delete the meta-data below. | ||||||
|  |              This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> | ||||||
|  |         <meta-data | ||||||
|  |             android:name="flutterEmbedding" | ||||||
|  |             android:value="2" /> | ||||||
|  |     </application> | ||||||
|  | </manifest> | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | package fr.pointcheval.native_crypto_android_example | ||||||
|  | 
 | ||||||
|  | import io.flutter.embedding.android.FlutterActivity | ||||||
|  | 
 | ||||||
|  | class MainActivity: FlutterActivity() { | ||||||
|  | } | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- Modify this file to customize your launch splash screen --> | ||||||
|  | <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|  |     <item android:drawable="?android:colorBackground" /> | ||||||
|  | 
 | ||||||
|  |     <!-- You can insert your own image assets here --> | ||||||
|  |     <!-- <item> | ||||||
|  |         <bitmap | ||||||
|  |             android:gravity="center" | ||||||
|  |             android:src="@mipmap/launch_image" /> | ||||||
|  |     </item> --> | ||||||
|  | </layer-list> | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- Modify this file to customize your launch splash screen --> | ||||||
|  | <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|  |     <item android:drawable="@android:color/white" /> | ||||||
|  | 
 | ||||||
|  |     <!-- You can insert your own image assets here --> | ||||||
|  |     <!-- <item> | ||||||
|  |         <bitmap | ||||||
|  |             android:gravity="center" | ||||||
|  |             android:src="@mipmap/launch_image" /> | ||||||
|  |     </item> --> | ||||||
|  | </layer-list> | ||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 544 B | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 442 B | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 721 B | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.0 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.4 KiB | 
| @ -0,0 +1,18 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <resources> | ||||||
|  |     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> | ||||||
|  |     <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||||
|  |         <!-- Show a splash screen on the activity. Automatically removed when | ||||||
|  |              Flutter draws its first frame --> | ||||||
|  |         <item name="android:windowBackground">@drawable/launch_background</item> | ||||||
|  |     </style> | ||||||
|  |     <!-- Theme applied to the Android Window as soon as the process has started. | ||||||
|  |          This theme determines the color of the Android Window while your | ||||||
|  |          Flutter UI initializes, as well as behind your Flutter UI while its | ||||||
|  |          running. | ||||||
|  | 
 | ||||||
|  |          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||||
|  |     <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||||
|  |         <item name="android:windowBackground">?android:colorBackground</item> | ||||||
|  |     </style> | ||||||
|  | </resources> | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <resources> | ||||||
|  |     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> | ||||||
|  |     <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||||
|  |         <!-- Show a splash screen on the activity. Automatically removed when | ||||||
|  |              Flutter draws its first frame --> | ||||||
|  |         <item name="android:windowBackground">@drawable/launch_background</item> | ||||||
|  |     </style> | ||||||
|  |     <!-- Theme applied to the Android Window as soon as the process has started. | ||||||
|  |          This theme determines the color of the Android Window while your | ||||||
|  |          Flutter UI initializes, as well as behind your Flutter UI while its | ||||||
|  |          running. | ||||||
|  | 
 | ||||||
|  |          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||||
|  |     <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||||
|  |         <item name="android:windowBackground">?android:colorBackground</item> | ||||||
|  |     </style> | ||||||
|  | </resources> | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     package="fr.pointcheval.native_crypto_android_example"> | ||||||
|  |     <!-- Flutter needs it to communicate with the running application | ||||||
|  |          to allow setting breakpoints, to provide hot reload, etc. | ||||||
|  |     --> | ||||||
|  |     <uses-permission android:name="android.permission.INTERNET"/> | ||||||
|  | </manifest> | ||||||
							
								
								
									
										31
									
								
								native_crypto_android/example/android/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								native_crypto_android/example/android/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | buildscript { | ||||||
|  |     ext.kotlin_version = '1.3.50' | ||||||
|  |     repositories { | ||||||
|  |         google() | ||||||
|  |         mavenCentral() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     dependencies { | ||||||
|  |         classpath 'com.android.tools.build:gradle:4.1.0' | ||||||
|  |         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | allprojects { | ||||||
|  |     repositories { | ||||||
|  |         google() | ||||||
|  |         mavenCentral() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | rootProject.buildDir = '../build' | ||||||
|  | subprojects { | ||||||
|  |     project.buildDir = "${rootProject.buildDir}/${project.name}" | ||||||
|  | } | ||||||
|  | subprojects { | ||||||
|  |     project.evaluationDependsOn(':app') | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | task clean(type: Delete) { | ||||||
|  |     delete rootProject.buildDir | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								native_crypto_android/example/android/gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								native_crypto_android/example/android/gradle.properties
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | org.gradle.jvmargs=-Xmx1536M | ||||||
|  | android.useAndroidX=true | ||||||
|  | android.enableJetifier=true | ||||||
							
								
								
									
										6
									
								
								native_crypto_android/example/android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								native_crypto_android/example/android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | #Fri Jun 23 08:50:38 CEST 2017 | ||||||
|  | distributionBase=GRADLE_USER_HOME | ||||||
|  | distributionPath=wrapper/dists | ||||||
|  | zipStoreBase=GRADLE_USER_HOME | ||||||
|  | zipStorePath=wrapper/dists | ||||||
|  | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip | ||||||
							
								
								
									
										11
									
								
								native_crypto_android/example/android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								native_crypto_android/example/android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | include ':app' | ||||||
|  | 
 | ||||||
|  | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") | ||||||
|  | def properties = new Properties() | ||||||
|  | 
 | ||||||
|  | assert localPropertiesFile.exists() | ||||||
|  | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } | ||||||
|  | 
 | ||||||
|  | def flutterSdkPath = properties.getProperty("flutter.sdk") | ||||||
|  | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" | ||||||
|  | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" | ||||||
							
								
								
									
										75
									
								
								native_crypto_android/example/lib/main.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								native_crypto_android/example/lib/main.dart
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | |||||||
|  | import 'dart:typed_data'; | ||||||
|  | 
 | ||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
|  | import 'package:flutter/services.dart'; | ||||||
|  | import 'package:native_crypto_platform_interface/native_crypto_platform_interface.dart'; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |   runApp(const MyApp()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class MyApp extends StatefulWidget { | ||||||
|  |   const MyApp({Key? key}) : super(key: key); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   State<MyApp> createState() => _MyAppState(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class _MyAppState extends State<MyApp> { | ||||||
|  |   String _platformVersion = 'Unknown'; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   void initState() { | ||||||
|  |     super.initState(); | ||||||
|  |     initPlatformState(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Platform messages are asynchronous, so we initialize in an async method. | ||||||
|  |   Future<void> initPlatformState() async { | ||||||
|  |     NativeCryptoPlatform _nativeCryptoPlatform = NativeCryptoPlatform.instance; | ||||||
|  |     String platformVersion; | ||||||
|  |     // Platform messages may fail, so we use a try/catch PlatformException. | ||||||
|  |     // We also handle the message potentially returning null. | ||||||
|  |     Uint8List? sk = await _nativeCryptoPlatform.generateSecretKey(256); | ||||||
|  |     print(sk ?? 'null'); | ||||||
|  | 
 | ||||||
|  |     Uint8List? ciphertext = await _nativeCryptoPlatform.encrypt( | ||||||
|  |         Uint8List.fromList("abc".codeUnits), sk!, "aes"); | ||||||
|  |     print(ciphertext ?? 'null'); | ||||||
|  | 
 | ||||||
|  |     Uint8List? plaintext = | ||||||
|  |         await _nativeCryptoPlatform.decrypt(ciphertext!, sk, "aes"); | ||||||
|  |     print(plaintext ?? 'null'); | ||||||
|  | 
 | ||||||
|  |     try { | ||||||
|  |       platformVersion = 'Unknown platform version'; | ||||||
|  |     } on PlatformException { | ||||||
|  |       platformVersion = 'Failed to get platform version.'; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // If the widget was removed from the tree while the asynchronous platform | ||||||
|  |     // message was in flight, we want to discard the reply rather than calling | ||||||
|  |     // setState to update our non-existent appearance. | ||||||
|  |     if (!mounted) return; | ||||||
|  | 
 | ||||||
|  |     setState(() { | ||||||
|  |       _platformVersion = platformVersion; | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   Widget build(BuildContext context) { | ||||||
|  |     return MaterialApp( | ||||||
|  |       home: Scaffold( | ||||||
|  |         appBar: AppBar( | ||||||
|  |           title: const Text('Plugin example app'), | ||||||
|  |         ), | ||||||
|  |         body: Center( | ||||||
|  |           child: Text('Running on: $_platformVersion\n'), | ||||||
|  |         ), | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										182
									
								
								native_crypto_android/example/pubspec.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								native_crypto_android/example/pubspec.lock
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,182 @@ | |||||||
|  | # Generated by pub | ||||||
|  | # See https://dart.dev/tools/pub/glossary#lockfile | ||||||
|  | packages: | ||||||
|  |   async: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: async | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.8.2" | ||||||
|  |   boolean_selector: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: boolean_selector | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.1.0" | ||||||
|  |   characters: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: characters | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.2.0" | ||||||
|  |   charcode: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: charcode | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.3.1" | ||||||
|  |   clock: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: clock | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.1.0" | ||||||
|  |   collection: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: collection | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.15.0" | ||||||
|  |   cupertino_icons: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: | ||||||
|  |       name: cupertino_icons | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.0.4" | ||||||
|  |   fake_async: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: fake_async | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.2.0" | ||||||
|  |   flutter: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: flutter | ||||||
|  |     source: sdk | ||||||
|  |     version: "0.0.0" | ||||||
|  |   flutter_lints: | ||||||
|  |     dependency: "direct dev" | ||||||
|  |     description: | ||||||
|  |       name: flutter_lints | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.0.4" | ||||||
|  |   flutter_test: | ||||||
|  |     dependency: "direct dev" | ||||||
|  |     description: flutter | ||||||
|  |     source: sdk | ||||||
|  |     version: "0.0.0" | ||||||
|  |   lints: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: lints | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.0.1" | ||||||
|  |   matcher: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: matcher | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "0.12.11" | ||||||
|  |   meta: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: meta | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.7.0" | ||||||
|  |   native_crypto_android: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: | ||||||
|  |       path: ".." | ||||||
|  |       relative: true | ||||||
|  |     source: path | ||||||
|  |     version: "0.1.0" | ||||||
|  |   native_crypto_platform_interface: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: | ||||||
|  |       path: "../../native_crypto_platform_interface" | ||||||
|  |       relative: true | ||||||
|  |     source: path | ||||||
|  |     version: "0.0.7" | ||||||
|  |   path: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: path | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.8.0" | ||||||
|  |   sky_engine: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: flutter | ||||||
|  |     source: sdk | ||||||
|  |     version: "0.0.99" | ||||||
|  |   source_span: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: source_span | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.8.1" | ||||||
|  |   stack_trace: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: stack_trace | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.10.0" | ||||||
|  |   stream_channel: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: stream_channel | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.1.0" | ||||||
|  |   string_scanner: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: string_scanner | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.1.0" | ||||||
|  |   term_glyph: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: term_glyph | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.2.0" | ||||||
|  |   test_api: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: test_api | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "0.4.3" | ||||||
|  |   typed_data: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: typed_data | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.3.0" | ||||||
|  |   vector_math: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: vector_math | ||||||
|  |       url: "https://pub.dartlang.org" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.1.1" | ||||||
|  | sdks: | ||||||
|  |   dart: ">=2.15.1 <3.0.0" | ||||||
|  |   flutter: ">=2.5.0" | ||||||
							
								
								
									
										87
									
								
								native_crypto_android/example/pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								native_crypto_android/example/pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,87 @@ | |||||||
|  | name: native_crypto_android_example | ||||||
|  | description: Demonstrates how to use the native_crypto_android plugin. | ||||||
|  | 
 | ||||||
|  | # The following line prevents the package from being accidentally published to | ||||||
|  | # pub.dev using `flutter pub publish`. This is preferred for private packages. | ||||||
|  | publish_to: 'none' # Remove this line if you wish to publish to pub.dev | ||||||
|  | 
 | ||||||
|  | environment: | ||||||
|  |   sdk: ">=2.15.1 <3.0.0" | ||||||
|  | 
 | ||||||
|  | # Dependencies specify other packages that your package needs in order to work. | ||||||
|  | # To automatically upgrade your package dependencies to the latest versions | ||||||
|  | # consider running `flutter pub upgrade --major-versions`. Alternatively, | ||||||
|  | # dependencies can be manually updated by changing the version numbers below to | ||||||
|  | # the latest version available on pub.dev. To see which dependencies have newer | ||||||
|  | # versions available, run `flutter pub outdated`. | ||||||
|  | dependencies: | ||||||
|  |   flutter: | ||||||
|  |     sdk: flutter | ||||||
|  | 
 | ||||||
|  |   native_crypto_android: | ||||||
|  |     # When depending on this package from a real application you should use: | ||||||
|  |     #   native_crypto_android: ^x.y.z | ||||||
|  |     # See https://dart.dev/tools/pub/dependencies#version-constraints | ||||||
|  |     # The example app is bundled with the plugin so we use a path dependency on | ||||||
|  |     # the parent directory to use the current plugin's version. | ||||||
|  |     path: ../ | ||||||
|  | 
 | ||||||
|  |   native_crypto_platform_interface: | ||||||
|  |     path: ../../native_crypto_platform_interface | ||||||
|  | 
 | ||||||
|  |   # The following adds the Cupertino Icons font to your application. | ||||||
|  |   # Use with the CupertinoIcons class for iOS style icons. | ||||||
|  |   cupertino_icons: ^1.0.2 | ||||||
|  | 
 | ||||||
|  | dev_dependencies: | ||||||
|  |   flutter_test: | ||||||
|  |     sdk: flutter | ||||||
|  | 
 | ||||||
|  |   # The "flutter_lints" package below contains a set of recommended lints to | ||||||
|  |   # encourage good coding practices. The lint set provided by the package is | ||||||
|  |   # activated in the `analysis_options.yaml` file located at the root of your | ||||||
|  |   # package. See that file for information about deactivating specific lint | ||||||
|  |   # rules and activating additional ones. | ||||||
|  |   flutter_lints: ^1.0.0 | ||||||
|  | 
 | ||||||
|  | # For information on the generic Dart part of this file, see the | ||||||
|  | # following page: https://dart.dev/tools/pub/pubspec | ||||||
|  | 
 | ||||||
|  | # The following section is specific to Flutter. | ||||||
|  | flutter: | ||||||
|  | 
 | ||||||
|  |   # The following line ensures that the Material Icons font is | ||||||
|  |   # included with your application, so that you can use the icons in | ||||||
|  |   # the material Icons class. | ||||||
|  |   uses-material-design: true | ||||||
|  | 
 | ||||||
|  |   # To add assets to your application, add an assets section, like this: | ||||||
|  |   # assets: | ||||||
|  |   #   - images/a_dot_burr.jpeg | ||||||
|  |   #   - images/a_dot_ham.jpeg | ||||||
|  | 
 | ||||||
|  |   # An image asset can refer to one or more resolution-specific "variants", see | ||||||
|  |   # https://flutter.dev/assets-and-images/#resolution-aware. | ||||||
|  | 
 | ||||||
|  |   # For details regarding adding assets from package dependencies, see | ||||||
|  |   # https://flutter.dev/assets-and-images/#from-packages | ||||||
|  | 
 | ||||||
|  |   # To add custom fonts to your application, add a fonts section here, | ||||||
|  |   # in this "flutter" section. Each entry in this list should have a | ||||||
|  |   # "family" key with the font family name, and a "fonts" key with a | ||||||
|  |   # list giving the asset and other descriptors for the font. For | ||||||
|  |   # example: | ||||||
|  |   # fonts: | ||||||
|  |   #   - family: Schyler | ||||||
|  |   #     fonts: | ||||||
|  |   #       - asset: fonts/Schyler-Regular.ttf | ||||||
|  |   #       - asset: fonts/Schyler-Italic.ttf | ||||||
|  |   #         style: italic | ||||||
|  |   #   - family: Trajan Pro | ||||||
|  |   #     fonts: | ||||||
|  |   #       - asset: fonts/TrajanPro.ttf | ||||||
|  |   #       - asset: fonts/TrajanPro_Bold.ttf | ||||||
|  |   #         weight: 700 | ||||||
|  |   # | ||||||
|  |   # For details regarding fonts from package dependencies, | ||||||
|  |   # see https://flutter.dev/custom-fonts/#from-packages | ||||||
							
								
								
									
										27
									
								
								native_crypto_android/example/test/widget_test.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								native_crypto_android/example/test/widget_test.dart
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | // This is a basic Flutter widget test. | ||||||
|  | // | ||||||
|  | // To perform an interaction with a widget in your test, use the WidgetTester | ||||||
|  | // utility that Flutter provides. For example, you can send tap and scroll | ||||||
|  | // gestures. You can also use WidgetTester to find child widgets in the widget | ||||||
|  | // tree, read text, and verify that the values of widget properties are correct. | ||||||
|  | 
 | ||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:flutter_test/flutter_test.dart'; | ||||||
|  | 
 | ||||||
|  | import 'package:native_crypto_android_example/main.dart'; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |   testWidgets('Verify Platform version', (WidgetTester tester) async { | ||||||
|  |     // Build our app and trigger a frame. | ||||||
|  |     await tester.pumpWidget(const MyApp()); | ||||||
|  | 
 | ||||||
|  |     // Verify that platform version is retrieved. | ||||||
|  |     expect( | ||||||
|  |       find.byWidgetPredicate( | ||||||
|  |         (Widget widget) => widget is Text && | ||||||
|  |                            widget.data!.startsWith('Running on:'), | ||||||
|  |       ), | ||||||
|  |       findsOneWidget, | ||||||
|  |     ); | ||||||
|  |   }); | ||||||
|  | } | ||||||
							
								
								
									
										23
									
								
								native_crypto_android/pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								native_crypto_android/pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | name: native_crypto_android | ||||||
|  | description: Android implementation of NativeCrypto | ||||||
|  | version: 0.1.0 | ||||||
|  | 
 | ||||||
|  | environment: | ||||||
|  |   sdk: ">=2.15.1 <3.0.0" | ||||||
|  |   flutter: ">=2.5.0" | ||||||
|  | 
 | ||||||
|  | dependencies: | ||||||
|  |   flutter: | ||||||
|  |     sdk: flutter | ||||||
|  | 
 | ||||||
|  | dev_dependencies: | ||||||
|  |   flutter_test: | ||||||
|  |     sdk: flutter | ||||||
|  | 
 | ||||||
|  | flutter: | ||||||
|  |   plugin: | ||||||
|  |     implements: native_crypto | ||||||
|  |     platforms: | ||||||
|  |       android: | ||||||
|  |         package: fr.pointcheval.native_crypto_android | ||||||
|  |         pluginClass: NativeCryptoAndroidPlugin | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user