From 608c7f4a0efbf0511a117c07f1fb98f497f5fe44 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Wed, 7 Nov 2018 16:43:53 -0700 Subject: [PATCH 01/91] moving libsovtoken over to sovrin Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 52 ++++++++++++++--------------- devops/aws-codebuild/Jenkinsfile.ci | 22 ++++++------ 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 80280b0ea..2f76d03e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,14 +1,14 @@ #!groovy -def evLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( - github(credentialsId: 'evernym-github-machine-user', repoOwner: 'evernym', repository: 'jenkins-shared') -)).com.evernym.pipeline +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.1.0-aws-codebuild', retriever: modernSCM( + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') +)).com.sovrin.pipeline -logger = evLibrary.Logger.new(this) +logger = sovLibrary.Logger.new(this) logger.setGlobalLevel('TRACE') -notifier = evLibrary.Notifier.new(this) -utils = evLibrary.Utils.new(this) +notifier = sovLibrary.Notifier.new(this) +utils = sovLibrary.Utils.new(this) // TODO set proper labels def nodeLabels = [ @@ -36,11 +36,11 @@ def codeBuildPipelines = { checkout scm } - def evernymRepo = evLibrary.EvernymRepo.new(this) - def sovrinRepo = evLibrary.SovrinRepo.new(this) - def git = evLibrary.Git.new(this) - def buildCtx = evLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') - def awsCBHelper = evLibrary.AwsCodeBuildHelper.new(this, buildCtx) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def git = sovLibrary.Git.new(this) + def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') + def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) stage('Resolve current source version') { srcVersion = utils.srcVersion(projectType: 'rust') @@ -73,7 +73,7 @@ def codeBuildPipelines = { 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_android_build' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_ANDROID_BUILD_DOCKER_TAG', value: buildImageTag], @@ -102,14 +102,14 @@ def codeBuildPipelines = { } } - stage('Upload android archives to Evernym repo') { + stage('Upload android archives to Sovrin repo') { String archName dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") - logger.info("Uploading package '$archName' to evernym repo") - evernymRepo.upload { + logger.info("Uploading package '$archName' to sovrin repo") + sovrinRepo.upload { repoDistr = 'android' packagePath = archName } @@ -133,7 +133,7 @@ def codeBuildPipelines = { def cratePVersion stage('Resolve last debian revision') { - lastRevision = evernymRepo.getLastRevision { + lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion repoDistr = 'agency-dev' @@ -150,7 +150,7 @@ def codeBuildPipelines = { def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') - logger.info("Package version for evernym repo: $debPVersion") + logger.info("Package version for sovrin repo: $debPVersion") // TODO crate and rpm //cratePVersion = utils.packageVersion('crate', srcVersion, releaseVersion) @@ -172,7 +172,7 @@ def codeBuildPipelines = { 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_base' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_BASE_DOCKER_TAG', value: buildImageTag], @@ -207,8 +207,8 @@ def codeBuildPipelines = { dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { debName = utils.shStdout("ls $packageName*$debPVersion*.deb") - logger.info("Uploading debian package '$debName' to evernym repo") - evernymRepo.upload { + logger.info("Uploading debian package '$debName' to sovrin repo") + sovrinRepo.upload { repoDistr = 'agency_dev' packagePath = debName } @@ -235,7 +235,7 @@ def codeBuildPipelines = { /* ['agency_dev', 'agency_qa'].each { distr -> stage("Promote deb from $distr") { - evernymRepo.promote { + sovrinRepo.promote { repoDistr = distr delegate.packageName = packageName delegate.packageVersion = debPVersion @@ -295,8 +295,8 @@ def macOSPipeline = { checkout scm } - def evernymRepo = evLibrary.EvernymRepo.new(this) - def utils = evLibrary.Utils.new(this) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def utils = sovLibrary.Utils.new(this) withEnv([ @@ -317,14 +317,14 @@ def macOSPipeline = { } dir('libsovtoken') { - stage('Upload libsovtoken universal package to Evernym repo') { + stage('Upload libsovtoken universal package to Sovrin repo') { String pkgName def repoUrl pkgName = utils.shStdout("ls ${packageName}*.zip") - logger.info("Uploading libsovtoken package '$pkgName' to evernym repo") + logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - evernymRepo.upload { + sovrinRepo.upload { repoDistr = 'ios' packagePath = pkgName } diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index bc23f59a2..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,11 +1,11 @@ #!groovy -def evLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( - github(credentialsId: 'evernym-github-machine-user', repoOwner: 'evernym', repository: 'jenkins-shared') -)).com.evernym.pipeline +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') +)).com.sovrin.pipeline -logger = evLibrary.Logger.new(this) -notifier = evLibrary.Notifier.new(this) +logger = sovLibrary.Logger.new(this) +notifier = sovLibrary.Notifier.new(this) logger.setGlobalLevel('TRACE') pipelineWrapper({ @@ -29,11 +29,11 @@ pipelineWrapper({ checkout scm } - def utils = evLibrary.Utils.new(this) + def utils = sovLibrary.Utils.new(this) // TODO Cargo.toml is necessary only for variable in makefile which is not used for that context, thus // shouldn't be taken into account when deciding to rebuild docker images - def buildCtx = evLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken', ['devops', 'libsovtoken/Cargo.toml']) - def awsCBHelper = evLibrary.AwsCodeBuildHelper.new(this, buildCtx) + def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken', ['devops', 'libsovtoken/Cargo.toml']) + def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) stage('Upload source to S3') { awsCBHelper.uploadSourceToS3() @@ -46,10 +46,10 @@ pipelineWrapper({ if (osname == 'xenial') { stage('Download plugin debs') { - // TODO remove that code once repo.corp evernym.com + // TODO remove that code once repo.corp sovrin.com // become available from AWS CodeBuild - // TODO Aptly on repo.copr.evernym.com removes '+' signs + // TODO Aptly on repo.copr.sovrin.com removes '+' signs // from debian packages making versions in filenames // not accurate (it concatenates them): // debian package version: + @@ -93,7 +93,7 @@ pipelineWrapper({ 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_ci' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_CI_DOCKER_TAG', value: buildImageTag], From 56ac83f3aa9c350aa523746f5f11c3e6b252740c Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Wed, 7 Nov 2018 16:55:24 -0700 Subject: [PATCH 02/91] switching branch to master Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 2f76d03e8..776eec2a1 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.1.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 74e08e4f1c01da3918f018c823924643351362fa Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 8 Nov 2018 17:51:11 -0700 Subject: [PATCH 03/91] cd fixes Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 776eec2a1..414aad6e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -36,7 +36,6 @@ def codeBuildPipelines = { checkout scm } - def sovrinRepo = sovLibrary.SovrinRepo.new(this) def sovrinRepo = sovLibrary.SovrinRepo.new(this) def git = sovLibrary.Git.new(this) def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') @@ -213,16 +212,6 @@ def codeBuildPipelines = { packagePath = debName } - if (env.BRANCH_NAME == 'stable') { - logger.info("Uploading debian package '$debName' to sovrin repo") - sshagent(credentials: ['SovrinRepoSSHKey']) { - sovrinRepo.upload { - repoDistr = 'sdk' - packagePath = debName - component = 'rc' - } - } - } } notifier.email { From d7d075182c37ba8592b3e11149c9058d99722b9f Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 10:10:10 -0700 Subject: [PATCH 04/91] test Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..66fec9b3a 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin%2Dfoundation', repository: 'jenkins-shared') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From 9a44dc27191b24b9aa9e652405032ad7f7ca8f28 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:05:30 -0700 Subject: [PATCH 05/91] reverting to - Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 66fec9b3a..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin%2Dfoundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From f8b39abaad3290571143944d652011e10a865be5 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:32:00 -0700 Subject: [PATCH 06/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 414aad6e8..5e9ab936b 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From b5eab05e700ca36d4b5927c39b8418d4d8be483d Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:44:29 -0700 Subject: [PATCH 07/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 5e9ab936b..1d0aac312 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..7bc493cb1 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From f654f294eed87b999612ad6569ddc3dc55ae01a3 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:46:34 -0700 Subject: [PATCH 08/91] Revert "more testing" This reverts commit b5eab05e700ca36d4b5927c39b8418d4d8be483d. Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 1d0aac312..5e9ab936b 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7bc493cb1..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 1155df60b9d80cd695d6f18c72d5a28067b8ceab Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:48:40 -0700 Subject: [PATCH 09/91] testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 5e9ab936b..12fe0dbce 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..11083db83 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 9cadaba3d322cbb84a4ce0018eb0580a0d83c481 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:53:05 -0700 Subject: [PATCH 10/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 12fe0dbce..414aad6e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 11083db83..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 069b23929bd70fe24f26eea25f7c31f8977289a5 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 15:18:13 -0700 Subject: [PATCH 11/91] changing name of the repo Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 414aad6e8..c6e157e21 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..87256b009 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From 180a6e8f3af30400153e35f502b6384381871888 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 13 Nov 2018 09:36:28 -0700 Subject: [PATCH 12/91] removing evernym string. using sovrin Signed-off-by: Felippe Burk --- devops/Makefile | 8 ++++---- devops/README.md | 12 ++++++------ devops/docker/.env | 2 +- devops/docker/android_build/xenial/Dockerfile | 4 ++-- devops/docker/android_ndk/xenial/Dockerfile | 4 ++-- devops/docker/base/centos7/Dockerfile | 2 +- devops/docker/base/xenial/Dockerfile | 2 +- devops/docker/ci/centos7/Dockerfile | 2 +- devops/docker/ci/xenial/Dockerfile | 4 ++-- devops/ext/.gitrepo | 8 ++++---- devops/ext/Makefile | 2 +- .../ext/docker/android_ndk/xenial/Dockerfile.0.1.0 | 2 +- .../ext/docker/android_ndk/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/docker-compose.yml | 8 ++++---- devops/ext/docker/python3/xenial/Dockerfile.0.1.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.3.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.4.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.2.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.3.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.4.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.1.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.3.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.4.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.6.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.7.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.8.0 | 2 +- devops/setup.android.env.sh | 2 +- 32 files changed, 49 insertions(+), 49 deletions(-) diff --git a/devops/Makefile b/devops/Makefile index 27fe84caf..9a2f7ab0b 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -38,10 +38,10 @@ LIBS = $(LIB_DYNAMIC) $(LIB_STATIC) # package related variables PACKAGE_NAME ?= $(LIBNAME) PRE_PACKAGE_GOALS := pre_package $(LIB_DYNAMIC) -FPM_P_MAINTAINER := Evernym -FPM_P_URL := https://github.com/evernym/libsovtoken +FPM_P_MAINTAINER := Sovrin +FPM_P_URL := https://github.com/sovrin/libsovtoken FPM_P_LICENSE := Apache License 2.0 -FPM_P_VENDOR := Evernym +FPM_P_VENDOR := Sovrin FPM_P_DESCRIPTION := libsovtoken writen in Rust FPM_P_NAME = $(PACKAGE_NAME) FPM_P_VERSION ?= $(SRC_VERSION) @@ -50,7 +50,7 @@ FPM_P_OUTPUT_DIR = $(LIB_TARGET_DIR) FPM_ARGS = $(LIB_DYNAMIC)=/usr/lib/ # docker related variables -DOCKER_NAME ?= evernym/libsovtoken +DOCKER_NAME ?= sovrin/libsovtoken LST_BASE_DOCKER_TAG ?= LST_CI_DOCKER_TAG ?= LST_ANDROID_NDK_DOCKER_TAG ?= diff --git a/devops/README.md b/devops/README.md index 3975071fc..c18aa84d5 100644 --- a/devops/README.md +++ b/devops/README.md @@ -4,7 +4,7 @@ This folder includes devops related routine and consists of the following parts: - [Makefile](Makefile) automates devops tasks like test, package and publish to [crates.io](https://crates.io/) which could be performed either on-host or in-docker - [docker](docker) folder holds docker related routine - [aws-codebuild](aws-codebuild) folder consists of files that describes AWS CodeBuild based CI/CD pipelines -- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/evernym/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. +- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/sovrin/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. [d003158e]: https://github.com/ingydotnet/git-subrepo "git-subrepo" @@ -14,7 +14,7 @@ Aurora wallet is shipped with dockerfiles for ubuntu [xenial](docker/ci/xenial/D ## CI pipeline -CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/evernym/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. +CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. CI pipeline stages: - clone the GitHub repository @@ -29,7 +29,7 @@ CI pipeline stages: ## CD pipeline -CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/evernym/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: +CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: - debian package for ubuntu `xenial` - zip archive with shared and dynamic libraries for android on the following architectures: `arm`, `armv7`, `arm64`, `x86`, `x86_64` @@ -37,7 +37,7 @@ CD pipeline stages: - clone the GitHub repository - resolve the following parameters: - current source version from [Cargo.toml](../libsovtoken/Cargo.toml) - - last revision number among the debian packages with the same source version in [Evernym debian repo](https://repo.corp.evernym.com/deb/dists/evernym-agency-dev-ubuntu/) + - last revision number among the debian packages with the same source version in [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) - evaluate new debian package version basing on source version, last revision number and current build number - upload current HEAD as zip archive to AWS S3 bucket used by CodeBuild project - launch a CodeBuild project using the same `AwsCodeBuildHelper.build` API as CI does. The main difference here is that CD pipeline doesn't build an image for AWS ECR repository assuming that it has been done previously by CI pipeline. Its sub-stages: @@ -45,7 +45,7 @@ CD pipeline stages: - run the CodeBuild project to perform debian packaging - download logs - archive logs -- upload created debian package to [Evernym debian repo](https://repo.corp.evernym.com/deb/dists/evernym-agency-dev-ubuntu/) +- upload created debian package to [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) ## Makefile @@ -91,7 +91,7 @@ Each target could be run in two ways - with or without `_in_docker` postfix: e.g | `ANDROID_ARCHS` |`package_android` | target architectures for android builds |`arm`, `armv7`, `arm64`, `x86`, `x86_64`| | `CRATE_P_VERSION` | all | if set overwrites `version` field of `[package]` section in [Cargo.toml](../libsovtoken/Cargo.toml) before crate publishing| not set | | `CARGO_LOGIN_TOKEN` | all | token to perform `cargo login` during crate publishing |not set| -| `DOCKER_NAME` | all | name of the image built by `image_lst_ci` target |`evernym/libsovtoken`| +| `DOCKER_NAME` | all | name of the image built by `image_lst_ci` target |`sovrin/libsovtoken`| | `DOCKER_TAG` | all | tag of the image built by `image_lst_ci` target| `-$(OSNAME)-ci`, where `VERSION` is value of `CI_ENV_VERSION` environment variable in accordant dockerfile | Please refer to [ext/README.md](ext/README.md) for list of environment variables inherited from there diff --git a/devops/docker/.env b/devops/docker/.env index f601ef574..b6e05f7fd 100644 --- a/devops/docker/.env +++ b/devops/docker/.env @@ -1,6 +1,6 @@ OSNAME=xenial # TODO refactor the following logic once the PR is merged: # https://github.com/docker/compose/pull/5268 -CI_DOCKER_NAME=evernym/libsovtoken +CI_DOCKER_NAME=sovrin/libsovtoken LSTBASE_DOCKER_TAG=xenial-base CI_DOCKER_TAG=xenial-ci diff --git a/devops/docker/android_build/xenial/Dockerfile b/devops/docker/android_build/xenial/Dockerfile index e923fba94..a5af3306a 100644 --- a/devops/docker/android_build/xenial/Dockerfile +++ b/devops/docker/android_build/xenial/Dockerfile @@ -1,6 +1,6 @@ ARG ANDROID_PREBUILT_DIR=/tmp/android/libsovtoken_prebuilt -FROM evernym/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG ANDROID_PREBUILT_DIR @@ -12,7 +12,7 @@ RUN chmod -R 777 ${ANDROID_PREBUILT_DIR} ############################################ -FROM evernym/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/android_ndk/xenial/Dockerfile b/devops/docker/android_ndk/xenial/Dockerfile index 4a329e008..9cf357589 100644 --- a/devops/docker/android_ndk/xenial/Dockerfile +++ b/devops/docker/android_ndk/xenial/Dockerfile @@ -1,7 +1,7 @@ ARG ANDROID_NDK_DIR=/tmp/android/android_ndk ARG ANDROID_NDK_VERSION=r16b -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG ANDROID_NDK_VERSION @@ -14,7 +14,7 @@ RUN chmod -R 777 ${ANDROID_NDK_DIR} ############################################ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/docker/base/centos7/Dockerfile b/devops/docker/base/centos7/Dockerfile index 79287a2a3..e640c1682 100644 --- a/devops/docker/base/centos7/Dockerfile +++ b/devops/docker/base/centos7/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-centos7-0.5.0 +FROM sovrin/dockerbase:rust-centos7-0.5.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index a93d2db5c..68d9af7f3 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/ci/centos7/Dockerfile b/devops/docker/ci/centos7/Dockerfile index 24f891824..1ca3e45d7 100644 --- a/devops/docker/ci/centos7/Dockerfile +++ b/devops/docker/ci/centos7/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-centos7-0.2.0 +FROM sovrin/libsovtoken:base-centos7-0.2.0 # TODO LABEL maintainer="Name " ENV LIBSOVTOKEN_CI_ENV_VERSION=0.6.0 diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 61394d401..c77573a49 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.12.0 +FROM sovrin/libsovtoken:base-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -7,7 +7,7 @@ ARG INDY_PLENUM_VERSION ARG INDY_ANONCREDS_VERSION ARG INDY_NODE_VERSION -ARG EVERNYM_REPO_IP +ARG SOVRIN_REPO_IP ARG POOL_IP USER root diff --git a/devops/ext/.gitrepo b/devops/ext/.gitrepo index 64e766a96..78e3d8f77 100644 --- a/devops/ext/.gitrepo +++ b/devops/ext/.gitrepo @@ -4,8 +4,8 @@ ; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme ; [subrepo] - remote = git@github.com:evernym/jenkins-shared.git - branch = devops-shared - commit = b5a66d849305d92b27c63a66823c98326133b125 - parent = 8e9ced906b91c26fb41aaf92de813c02aa8f58cb + remote = git@github.com:sovrin-foundation/aws-codebuild-pipeline-plugin.git + branch = master + commit = 54befadc69efa4ebd82908fe1cff56cba4858a05 + parent = 60e81af3f38b3c0d1691e363b472ccd3f828d559 cmdver = 0.3.1 diff --git a/devops/ext/Makefile b/devops/ext/Makefile index a5c5b0826..44ff4d85b 100644 --- a/devops/ext/Makefile +++ b/devops/ext/Makefile @@ -21,7 +21,7 @@ check_defined = $(if $(value $1),, $(error Undefined $1$(if $2, ($2))$(if $(valu log_var = $(info Value of $1 is [$($1)]) # DOCKER ROUTINE -LIB_IMG_NAME=evernym/dockerbase +LIB_IMG_NAME=sovrin/dockerbase docker_env_value = $(call check_non_empty,$(shell grep '^ENV $(1)=' $(2) | cut -d '=' -f 2), \ "Value for ENV $(1) not found in dockerfile $(2)") diff --git a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 index d7174b591..b34c68cec 100644 --- a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.6.0 +FROM sovrin/dockerbase:rust-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 index c6a6840e5..56d531c90 100644 --- a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/docker-compose.yml b/devops/ext/docker/docker-compose.yml index 7ae9566c4..fe8147508 100644 --- a/devops/ext/docker/docker-compose.yml +++ b/devops/ext/docker/docker-compose.yml @@ -7,7 +7,7 @@ services: dockerfile: Dockerfile.${BASE_DOCKER_VERSION} context: base/$OSNAME network: ${DOCKER_BUILD_NETWORK:-bridge} - image: evernym/dockerbase:base-${OSNAME}-${BASE_DOCKER_VERSION} + image: sovrin/dockerbase:base-${OSNAME}-${BASE_DOCKER_VERSION} rust: build: @@ -16,7 +16,7 @@ services: network: ${DOCKER_BUILD_NETWORK:-bridge} args: - RUST_VERSION - image: evernym/dockerbase:rust-${OSNAME}-${RUST_DOCKER_VERSION} + image: sovrin/dockerbase:rust-${OSNAME}-${RUST_DOCKER_VERSION} python3: build: @@ -25,7 +25,7 @@ services: network: ${DOCKER_BUILD_NETWORK:-bridge} args: - PYTHON3_VERSION - image: evernym/dockerbase:python3-${OSNAME}-${PYTHON3_DOCKER_VERSION} + image: sovrin/dockerbase:python3-${OSNAME}-${PYTHON3_DOCKER_VERSION} android_ndk: build: @@ -35,4 +35,4 @@ services: args: - PYTHON3_VERSION - ANDROID_NDK_VERSION - image: evernym/dockerbase:android_ndk-${OSNAME}-${ANDROID_NDK_DOCKER_VERSION} + image: sovrin/dockerbase:android_ndk-${OSNAME}-${ANDROID_NDK_DOCKER_VERSION} diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 index 77be28949..0e7668c0a 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 index 838173f43..649e0ca71 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-xenial +FROM sovrin/base:0.3.0-xenial # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 index 0f8ef3684..b23e00a8b 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.3.0 +FROM sovrin/dockerbase:base-xenial-0.3.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 index 3202bbb88..90fea1083 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.4.0 +FROM sovrin/dockerbase:base-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 index 3a3dd94ff..2262ade4c 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.5.0 +FROM sovrin/dockerbase:base-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 index 35db90be9..23ab05d84 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-centos7 +FROM sovrin/base:0.2.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 index 49af7c995..2ff63af30 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-centos7 +FROM sovrin/base:0.2.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 index cfdc3470f..04c4f0ee1 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-centos7 +FROM sovrin/base:0.3.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 index f6fc2b904..fe34a0d40 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-centos7-0.3.0 +FROM sovrin/dockerbase:base-centos7-0.3.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 index 5fbe6bbfb..8306920b6 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.1.0-xenial +FROM sovrin/base:0.1.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 index 874428bc7..5a3223122 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.1.0-xenial +FROM sovrin/base:0.1.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 index acfd63fd5..e3f3a116a 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 index 2305beca5..72104dcc5 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 index c44f0b621..611c04334 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-xenial +FROM sovrin/base:0.3.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 index 6027a688e..3393de082 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.3.0 +FROM sovrin/dockerbase:base-xenial-0.3.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 index 92815ed7f..05168dfe8 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.4.0 +FROM sovrin/dockerbase:base-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 index 3c5208dec..2b99f8602 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.5.0 +FROM sovrin/dockerbase:base-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/setup.android.env.sh b/devops/setup.android.env.sh index 1f803a7f0..631171440 100644 --- a/devops/setup.android.env.sh +++ b/devops/setup.android.env.sh @@ -69,7 +69,7 @@ download_and_unzip_dependencies_for_all_architectures(){ #TODO Get dependencies in more optimized way pushd ${ANDROID_BUILD_FOLDER} if [ ! -d "indy-android-dependencies" ] ; then - git clone https://github.com/evernym/indy-android-dependencies.git + git clone https://github.com/sovrin/indy-android-dependencies.git pushd ${ANDROID_BUILD_FOLDER}/indy-android-dependencies/prebuilt/ # git checkout tags/v1.0.1 find . -name "*.zip" | xargs -P 5 -I FILENAME sh -c 'unzip -o -qq -d "$(dirname "FILENAME")" "FILENAME"' From d1f98d5cbdea1ec4a8a39aec025449e2cf8a6426 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 15 Nov 2018 17:43:05 -0700 Subject: [PATCH 13/91] changing repoDistr in prep for new repo Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index c6e157e21..e6ec958a4 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -135,7 +135,7 @@ def codeBuildPipelines = { lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion - repoDistr = 'agency-dev' + repoDistr = 'deb' } if (lastRevision) { @@ -208,7 +208,7 @@ def codeBuildPipelines = { logger.info("Uploading debian package '$debName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'agency_dev' + repoDistr = 'deb' packagePath = debName } From 1e82fd5726d2f120ecd6701b4ceb92c5d5bd333a Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Sat, 17 Nov 2018 13:37:35 -0700 Subject: [PATCH 14/91] updating repoDistr Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index e6ec958a4..6457b7891 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -109,7 +109,7 @@ def codeBuildPipelines = { logger.info("Uploading package '$archName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'android' + repoDistr = 'android-rc' packagePath = archName } } @@ -135,7 +135,7 @@ def codeBuildPipelines = { lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion - repoDistr = 'deb' + repoDistr = 'xenial-rc' } if (lastRevision) { @@ -208,7 +208,7 @@ def codeBuildPipelines = { logger.info("Uploading debian package '$debName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'deb' + repoDistr = 'xenial-rc' packagePath = debName } @@ -314,7 +314,7 @@ def macOSPipeline = { sovrinRepo.upload { - repoDistr = 'ios' + repoDistr = 'ios-rc' packagePath = pkgName } } From 3174cd6c93c04c5e011d49775f441486b8ca3180 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Fri, 2 Nov 2018 11:36:52 -0600 Subject: [PATCH 15/91] changing the version to 0.9.6 on master Signed-off-by: Cam Parra --- libsovtoken/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 8840daf5f..10e653d5b 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "libsovtoken" -version = "0.9.5" +version = "0.9.6" authors = [ "Matt Raffel Date: Wed, 7 Nov 2018 16:43:53 -0700 Subject: [PATCH 16/91] moving libsovtoken over to sovrin Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 52 ++++++++++++++--------------- devops/aws-codebuild/Jenkinsfile.ci | 22 ++++++------ 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 80280b0ea..2f76d03e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,14 +1,14 @@ #!groovy -def evLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( - github(credentialsId: 'evernym-github-machine-user', repoOwner: 'evernym', repository: 'jenkins-shared') -)).com.evernym.pipeline +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.1.0-aws-codebuild', retriever: modernSCM( + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') +)).com.sovrin.pipeline -logger = evLibrary.Logger.new(this) +logger = sovLibrary.Logger.new(this) logger.setGlobalLevel('TRACE') -notifier = evLibrary.Notifier.new(this) -utils = evLibrary.Utils.new(this) +notifier = sovLibrary.Notifier.new(this) +utils = sovLibrary.Utils.new(this) // TODO set proper labels def nodeLabels = [ @@ -36,11 +36,11 @@ def codeBuildPipelines = { checkout scm } - def evernymRepo = evLibrary.EvernymRepo.new(this) - def sovrinRepo = evLibrary.SovrinRepo.new(this) - def git = evLibrary.Git.new(this) - def buildCtx = evLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') - def awsCBHelper = evLibrary.AwsCodeBuildHelper.new(this, buildCtx) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def git = sovLibrary.Git.new(this) + def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') + def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) stage('Resolve current source version') { srcVersion = utils.srcVersion(projectType: 'rust') @@ -73,7 +73,7 @@ def codeBuildPipelines = { 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_android_build' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_ANDROID_BUILD_DOCKER_TAG', value: buildImageTag], @@ -102,14 +102,14 @@ def codeBuildPipelines = { } } - stage('Upload android archives to Evernym repo') { + stage('Upload android archives to Sovrin repo') { String archName dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") - logger.info("Uploading package '$archName' to evernym repo") - evernymRepo.upload { + logger.info("Uploading package '$archName' to sovrin repo") + sovrinRepo.upload { repoDistr = 'android' packagePath = archName } @@ -133,7 +133,7 @@ def codeBuildPipelines = { def cratePVersion stage('Resolve last debian revision') { - lastRevision = evernymRepo.getLastRevision { + lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion repoDistr = 'agency-dev' @@ -150,7 +150,7 @@ def codeBuildPipelines = { def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') - logger.info("Package version for evernym repo: $debPVersion") + logger.info("Package version for sovrin repo: $debPVersion") // TODO crate and rpm //cratePVersion = utils.packageVersion('crate', srcVersion, releaseVersion) @@ -172,7 +172,7 @@ def codeBuildPipelines = { 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_base' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_BASE_DOCKER_TAG', value: buildImageTag], @@ -207,8 +207,8 @@ def codeBuildPipelines = { dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { debName = utils.shStdout("ls $packageName*$debPVersion*.deb") - logger.info("Uploading debian package '$debName' to evernym repo") - evernymRepo.upload { + logger.info("Uploading debian package '$debName' to sovrin repo") + sovrinRepo.upload { repoDistr = 'agency_dev' packagePath = debName } @@ -235,7 +235,7 @@ def codeBuildPipelines = { /* ['agency_dev', 'agency_qa'].each { distr -> stage("Promote deb from $distr") { - evernymRepo.promote { + sovrinRepo.promote { repoDistr = distr delegate.packageName = packageName delegate.packageVersion = debPVersion @@ -295,8 +295,8 @@ def macOSPipeline = { checkout scm } - def evernymRepo = evLibrary.EvernymRepo.new(this) - def utils = evLibrary.Utils.new(this) + def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def utils = sovLibrary.Utils.new(this) withEnv([ @@ -317,14 +317,14 @@ def macOSPipeline = { } dir('libsovtoken') { - stage('Upload libsovtoken universal package to Evernym repo') { + stage('Upload libsovtoken universal package to Sovrin repo') { String pkgName def repoUrl pkgName = utils.shStdout("ls ${packageName}*.zip") - logger.info("Uploading libsovtoken package '$pkgName' to evernym repo") + logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - evernymRepo.upload { + sovrinRepo.upload { repoDistr = 'ios' packagePath = pkgName } diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index bc23f59a2..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,11 +1,11 @@ #!groovy -def evLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( - github(credentialsId: 'evernym-github-machine-user', repoOwner: 'evernym', repository: 'jenkins-shared') -)).com.evernym.pipeline +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') +)).com.sovrin.pipeline -logger = evLibrary.Logger.new(this) -notifier = evLibrary.Notifier.new(this) +logger = sovLibrary.Logger.new(this) +notifier = sovLibrary.Notifier.new(this) logger.setGlobalLevel('TRACE') pipelineWrapper({ @@ -29,11 +29,11 @@ pipelineWrapper({ checkout scm } - def utils = evLibrary.Utils.new(this) + def utils = sovLibrary.Utils.new(this) // TODO Cargo.toml is necessary only for variable in makefile which is not used for that context, thus // shouldn't be taken into account when deciding to rebuild docker images - def buildCtx = evLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken', ['devops', 'libsovtoken/Cargo.toml']) - def awsCBHelper = evLibrary.AwsCodeBuildHelper.new(this, buildCtx) + def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken', ['devops', 'libsovtoken/Cargo.toml']) + def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) stage('Upload source to S3') { awsCBHelper.uploadSourceToS3() @@ -46,10 +46,10 @@ pipelineWrapper({ if (osname == 'xenial') { stage('Download plugin debs') { - // TODO remove that code once repo.corp evernym.com + // TODO remove that code once repo.corp sovrin.com // become available from AWS CodeBuild - // TODO Aptly on repo.copr.evernym.com removes '+' signs + // TODO Aptly on repo.copr.sovrin.com removes '+' signs // from debian packages making versions in filenames // not accurate (it concatenates them): // debian package version: + @@ -93,7 +93,7 @@ pipelineWrapper({ 'export PROJECT_DIR=$PWD', 'make -C devops image_lst_ci' ] - envBuildLocalName = "evernym/libsovtoken:$buildImageTag" + envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ [name: 'OSNAME', value: osname], [name: 'LST_CI_DOCKER_TAG', value: buildImageTag], From 068864f37a918599bffcbfaab5859a328f16c1ae Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Wed, 7 Nov 2018 16:55:24 -0700 Subject: [PATCH 17/91] switching branch to master Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 2f76d03e8..776eec2a1 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.1.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 3ff670e3dfa30f8d3c18d910a0cf194c13efffc7 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 8 Nov 2018 17:51:11 -0700 Subject: [PATCH 18/91] cd fixes Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 776eec2a1..414aad6e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -36,7 +36,6 @@ def codeBuildPipelines = { checkout scm } - def sovrinRepo = sovLibrary.SovrinRepo.new(this) def sovrinRepo = sovLibrary.SovrinRepo.new(this) def git = sovLibrary.Git.new(this) def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') @@ -213,16 +212,6 @@ def codeBuildPipelines = { packagePath = debName } - if (env.BRANCH_NAME == 'stable') { - logger.info("Uploading debian package '$debName' to sovrin repo") - sshagent(credentials: ['SovrinRepoSSHKey']) { - sovrinRepo.upload { - repoDistr = 'sdk' - packagePath = debName - component = 'rc' - } - } - } } notifier.email { From ac4bd1c1fb7e1fbf93114ab507b9885dcdd41b75 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 10:10:10 -0700 Subject: [PATCH 19/91] test Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..66fec9b3a 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin%2Dfoundation', repository: 'jenkins-shared') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From d9d4311da3ebcccf24ea469acf284e85dc5d9e0a Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:05:30 -0700 Subject: [PATCH 20/91] reverting to - Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 66fec9b3a..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin%2Dfoundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From ebc0182568a5734968c6ccaef812180efb023578 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:32:00 -0700 Subject: [PATCH 21/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 414aad6e8..5e9ab936b 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From ce54488248b56af34a0ce55a1b704470eedb4b5d Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:44:29 -0700 Subject: [PATCH 22/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 5e9ab936b..1d0aac312 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..7bc493cb1 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From ffd41d1f9fb0fa255be5bfdb8f73770308a9b512 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:46:34 -0700 Subject: [PATCH 23/91] Revert "more testing" This reverts commit b5eab05e700ca36d4b5927c39b8418d4d8be483d. Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 1d0aac312..5e9ab936b 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7bc493cb1..2bb9ff898 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'evernym-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 84943eddfe0d7bc97c4a2c2a9e0699f4c7d622d7 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:48:40 -0700 Subject: [PATCH 24/91] testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 5e9ab936b..12fe0dbce 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 2bb9ff898..11083db83 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@v0.4.0-aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 9f5dbece960c7be7f57f8b8411b1ccfb45ee98d9 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 12:53:05 -0700 Subject: [PATCH 25/91] more testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 12fe0dbce..414aad6e8 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 11083db83..7b4f0f17d 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,6 +1,6 @@ #!groovy -def sovLibrary = library(identifier: 'sovrin-aws-codebuild@aws-codebuild', retriever: modernSCM( +def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') )).com.sovrin.pipeline From 0579ffb7e0d809db4b76ed4bcbf34346e1339c8d Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Fri, 9 Nov 2018 15:18:13 -0700 Subject: [PATCH 26/91] changing name of the repo Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 414aad6e8..c6e157e21 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 7b4f0f17d..87256b009 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'jenkins-shared') + github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From 48475d9c414870a98f7743900af5372846409383 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 13 Nov 2018 09:36:28 -0700 Subject: [PATCH 27/91] removing evernym string. using sovrin Signed-off-by: Felippe Burk --- devops/Makefile | 8 ++++---- devops/README.md | 12 ++++++------ devops/docker/.env | 2 +- devops/docker/android_build/xenial/Dockerfile | 4 ++-- devops/docker/android_ndk/xenial/Dockerfile | 4 ++-- devops/docker/base/centos7/Dockerfile | 2 +- devops/docker/base/xenial/Dockerfile | 2 +- devops/docker/ci/centos7/Dockerfile | 2 +- devops/docker/ci/xenial/Dockerfile | 4 ++-- devops/ext/.gitrepo | 8 ++++---- devops/ext/Makefile | 2 +- .../ext/docker/android_ndk/xenial/Dockerfile.0.1.0 | 2 +- .../ext/docker/android_ndk/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/docker-compose.yml | 8 ++++---- devops/ext/docker/python3/xenial/Dockerfile.0.1.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.3.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.4.0 | 2 +- devops/ext/docker/python3/xenial/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.2.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.3.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.4.0 | 2 +- devops/ext/docker/rust/centos7/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.1.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.2.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.3.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.4.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.5.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.6.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.7.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.8.0 | 2 +- devops/setup.android.env.sh | 2 +- 32 files changed, 49 insertions(+), 49 deletions(-) diff --git a/devops/Makefile b/devops/Makefile index 27fe84caf..9a2f7ab0b 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -38,10 +38,10 @@ LIBS = $(LIB_DYNAMIC) $(LIB_STATIC) # package related variables PACKAGE_NAME ?= $(LIBNAME) PRE_PACKAGE_GOALS := pre_package $(LIB_DYNAMIC) -FPM_P_MAINTAINER := Evernym -FPM_P_URL := https://github.com/evernym/libsovtoken +FPM_P_MAINTAINER := Sovrin +FPM_P_URL := https://github.com/sovrin/libsovtoken FPM_P_LICENSE := Apache License 2.0 -FPM_P_VENDOR := Evernym +FPM_P_VENDOR := Sovrin FPM_P_DESCRIPTION := libsovtoken writen in Rust FPM_P_NAME = $(PACKAGE_NAME) FPM_P_VERSION ?= $(SRC_VERSION) @@ -50,7 +50,7 @@ FPM_P_OUTPUT_DIR = $(LIB_TARGET_DIR) FPM_ARGS = $(LIB_DYNAMIC)=/usr/lib/ # docker related variables -DOCKER_NAME ?= evernym/libsovtoken +DOCKER_NAME ?= sovrin/libsovtoken LST_BASE_DOCKER_TAG ?= LST_CI_DOCKER_TAG ?= LST_ANDROID_NDK_DOCKER_TAG ?= diff --git a/devops/README.md b/devops/README.md index 3975071fc..c18aa84d5 100644 --- a/devops/README.md +++ b/devops/README.md @@ -4,7 +4,7 @@ This folder includes devops related routine and consists of the following parts: - [Makefile](Makefile) automates devops tasks like test, package and publish to [crates.io](https://crates.io/) which could be performed either on-host or in-docker - [docker](docker) folder holds docker related routine - [aws-codebuild](aws-codebuild) folder consists of files that describes AWS CodeBuild based CI/CD pipelines -- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/evernym/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. +- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/sovrin/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. [d003158e]: https://github.com/ingydotnet/git-subrepo "git-subrepo" @@ -14,7 +14,7 @@ Aurora wallet is shipped with dockerfiles for ubuntu [xenial](docker/ci/xenial/D ## CI pipeline -CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/evernym/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. +CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. CI pipeline stages: - clone the GitHub repository @@ -29,7 +29,7 @@ CI pipeline stages: ## CD pipeline -CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/evernym/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: +CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: - debian package for ubuntu `xenial` - zip archive with shared and dynamic libraries for android on the following architectures: `arm`, `armv7`, `arm64`, `x86`, `x86_64` @@ -37,7 +37,7 @@ CD pipeline stages: - clone the GitHub repository - resolve the following parameters: - current source version from [Cargo.toml](../libsovtoken/Cargo.toml) - - last revision number among the debian packages with the same source version in [Evernym debian repo](https://repo.corp.evernym.com/deb/dists/evernym-agency-dev-ubuntu/) + - last revision number among the debian packages with the same source version in [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) - evaluate new debian package version basing on source version, last revision number and current build number - upload current HEAD as zip archive to AWS S3 bucket used by CodeBuild project - launch a CodeBuild project using the same `AwsCodeBuildHelper.build` API as CI does. The main difference here is that CD pipeline doesn't build an image for AWS ECR repository assuming that it has been done previously by CI pipeline. Its sub-stages: @@ -45,7 +45,7 @@ CD pipeline stages: - run the CodeBuild project to perform debian packaging - download logs - archive logs -- upload created debian package to [Evernym debian repo](https://repo.corp.evernym.com/deb/dists/evernym-agency-dev-ubuntu/) +- upload created debian package to [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) ## Makefile @@ -91,7 +91,7 @@ Each target could be run in two ways - with or without `_in_docker` postfix: e.g | `ANDROID_ARCHS` |`package_android` | target architectures for android builds |`arm`, `armv7`, `arm64`, `x86`, `x86_64`| | `CRATE_P_VERSION` | all | if set overwrites `version` field of `[package]` section in [Cargo.toml](../libsovtoken/Cargo.toml) before crate publishing| not set | | `CARGO_LOGIN_TOKEN` | all | token to perform `cargo login` during crate publishing |not set| -| `DOCKER_NAME` | all | name of the image built by `image_lst_ci` target |`evernym/libsovtoken`| +| `DOCKER_NAME` | all | name of the image built by `image_lst_ci` target |`sovrin/libsovtoken`| | `DOCKER_TAG` | all | tag of the image built by `image_lst_ci` target| `-$(OSNAME)-ci`, where `VERSION` is value of `CI_ENV_VERSION` environment variable in accordant dockerfile | Please refer to [ext/README.md](ext/README.md) for list of environment variables inherited from there diff --git a/devops/docker/.env b/devops/docker/.env index f601ef574..b6e05f7fd 100644 --- a/devops/docker/.env +++ b/devops/docker/.env @@ -1,6 +1,6 @@ OSNAME=xenial # TODO refactor the following logic once the PR is merged: # https://github.com/docker/compose/pull/5268 -CI_DOCKER_NAME=evernym/libsovtoken +CI_DOCKER_NAME=sovrin/libsovtoken LSTBASE_DOCKER_TAG=xenial-base CI_DOCKER_TAG=xenial-ci diff --git a/devops/docker/android_build/xenial/Dockerfile b/devops/docker/android_build/xenial/Dockerfile index e923fba94..a5af3306a 100644 --- a/devops/docker/android_build/xenial/Dockerfile +++ b/devops/docker/android_build/xenial/Dockerfile @@ -1,6 +1,6 @@ ARG ANDROID_PREBUILT_DIR=/tmp/android/libsovtoken_prebuilt -FROM evernym/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG ANDROID_PREBUILT_DIR @@ -12,7 +12,7 @@ RUN chmod -R 777 ${ANDROID_PREBUILT_DIR} ############################################ -FROM evernym/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/android_ndk/xenial/Dockerfile b/devops/docker/android_ndk/xenial/Dockerfile index 4a329e008..9cf357589 100644 --- a/devops/docker/android_ndk/xenial/Dockerfile +++ b/devops/docker/android_ndk/xenial/Dockerfile @@ -1,7 +1,7 @@ ARG ANDROID_NDK_DIR=/tmp/android/android_ndk ARG ANDROID_NDK_VERSION=r16b -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG ANDROID_NDK_VERSION @@ -14,7 +14,7 @@ RUN chmod -R 777 ${ANDROID_NDK_DIR} ############################################ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/docker/base/centos7/Dockerfile b/devops/docker/base/centos7/Dockerfile index 79287a2a3..e640c1682 100644 --- a/devops/docker/base/centos7/Dockerfile +++ b/devops/docker/base/centos7/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-centos7-0.5.0 +FROM sovrin/dockerbase:rust-centos7-0.5.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index a93d2db5c..68d9af7f3 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/ci/centos7/Dockerfile b/devops/docker/ci/centos7/Dockerfile index 24f891824..1ca3e45d7 100644 --- a/devops/docker/ci/centos7/Dockerfile +++ b/devops/docker/ci/centos7/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-centos7-0.2.0 +FROM sovrin/libsovtoken:base-centos7-0.2.0 # TODO LABEL maintainer="Name " ENV LIBSOVTOKEN_CI_ENV_VERSION=0.6.0 diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 61394d401..c77573a49 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.12.0 +FROM sovrin/libsovtoken:base-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -7,7 +7,7 @@ ARG INDY_PLENUM_VERSION ARG INDY_ANONCREDS_VERSION ARG INDY_NODE_VERSION -ARG EVERNYM_REPO_IP +ARG SOVRIN_REPO_IP ARG POOL_IP USER root diff --git a/devops/ext/.gitrepo b/devops/ext/.gitrepo index 64e766a96..78e3d8f77 100644 --- a/devops/ext/.gitrepo +++ b/devops/ext/.gitrepo @@ -4,8 +4,8 @@ ; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme ; [subrepo] - remote = git@github.com:evernym/jenkins-shared.git - branch = devops-shared - commit = b5a66d849305d92b27c63a66823c98326133b125 - parent = 8e9ced906b91c26fb41aaf92de813c02aa8f58cb + remote = git@github.com:sovrin-foundation/aws-codebuild-pipeline-plugin.git + branch = master + commit = 54befadc69efa4ebd82908fe1cff56cba4858a05 + parent = 60e81af3f38b3c0d1691e363b472ccd3f828d559 cmdver = 0.3.1 diff --git a/devops/ext/Makefile b/devops/ext/Makefile index a5c5b0826..44ff4d85b 100644 --- a/devops/ext/Makefile +++ b/devops/ext/Makefile @@ -21,7 +21,7 @@ check_defined = $(if $(value $1),, $(error Undefined $1$(if $2, ($2))$(if $(valu log_var = $(info Value of $1 is [$($1)]) # DOCKER ROUTINE -LIB_IMG_NAME=evernym/dockerbase +LIB_IMG_NAME=sovrin/dockerbase docker_env_value = $(call check_non_empty,$(shell grep '^ENV $(1)=' $(2) | cut -d '=' -f 2), \ "Value for ENV $(1) not found in dockerfile $(2)") diff --git a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 index d7174b591..b34c68cec 100644 --- a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.6.0 +FROM sovrin/dockerbase:rust-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 index c6a6840e5..56d531c90 100644 --- a/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/android_ndk/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/docker-compose.yml b/devops/ext/docker/docker-compose.yml index 7ae9566c4..fe8147508 100644 --- a/devops/ext/docker/docker-compose.yml +++ b/devops/ext/docker/docker-compose.yml @@ -7,7 +7,7 @@ services: dockerfile: Dockerfile.${BASE_DOCKER_VERSION} context: base/$OSNAME network: ${DOCKER_BUILD_NETWORK:-bridge} - image: evernym/dockerbase:base-${OSNAME}-${BASE_DOCKER_VERSION} + image: sovrin/dockerbase:base-${OSNAME}-${BASE_DOCKER_VERSION} rust: build: @@ -16,7 +16,7 @@ services: network: ${DOCKER_BUILD_NETWORK:-bridge} args: - RUST_VERSION - image: evernym/dockerbase:rust-${OSNAME}-${RUST_DOCKER_VERSION} + image: sovrin/dockerbase:rust-${OSNAME}-${RUST_DOCKER_VERSION} python3: build: @@ -25,7 +25,7 @@ services: network: ${DOCKER_BUILD_NETWORK:-bridge} args: - PYTHON3_VERSION - image: evernym/dockerbase:python3-${OSNAME}-${PYTHON3_DOCKER_VERSION} + image: sovrin/dockerbase:python3-${OSNAME}-${PYTHON3_DOCKER_VERSION} android_ndk: build: @@ -35,4 +35,4 @@ services: args: - PYTHON3_VERSION - ANDROID_NDK_VERSION - image: evernym/dockerbase:android_ndk-${OSNAME}-${ANDROID_NDK_DOCKER_VERSION} + image: sovrin/dockerbase:android_ndk-${OSNAME}-${ANDROID_NDK_DOCKER_VERSION} diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 index 77be28949..0e7668c0a 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 index 838173f43..649e0ca71 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-xenial +FROM sovrin/base:0.3.0-xenial # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 index 0f8ef3684..b23e00a8b 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.3.0 +FROM sovrin/dockerbase:base-xenial-0.3.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 index 3202bbb88..90fea1083 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.4.0 +FROM sovrin/dockerbase:base-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 b/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 index 3a3dd94ff..2262ade4c 100644 --- a/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 +++ b/devops/ext/docker/python3/xenial/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.5.0 +FROM sovrin/dockerbase:base-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 index 35db90be9..23ab05d84 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-centos7 +FROM sovrin/base:0.2.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 index 49af7c995..2ff63af30 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-centos7 +FROM sovrin/base:0.2.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 index cfdc3470f..04c4f0ee1 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-centos7 +FROM sovrin/base:0.3.0-centos7 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 b/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 index f6fc2b904..fe34a0d40 100644 --- a/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 +++ b/devops/ext/docker/rust/centos7/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-centos7-0.3.0 +FROM sovrin/dockerbase:base-centos7-0.3.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 index 5fbe6bbfb..8306920b6 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.1.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.1.0-xenial +FROM sovrin/base:0.1.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 index 874428bc7..5a3223122 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.2.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.1.0-xenial +FROM sovrin/base:0.1.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 index acfd63fd5..e3f3a116a 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.3.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 index 2305beca5..72104dcc5 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.4.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.2.0-xenial +FROM sovrin/base:0.2.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 index c44f0b621..611c04334 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.5.0 @@ -1,4 +1,4 @@ -FROM evernym/base:0.3.0-xenial +FROM sovrin/base:0.3.0-xenial # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 index 6027a688e..3393de082 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.6.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.3.0 +FROM sovrin/dockerbase:base-xenial-0.3.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 index 92815ed7f..05168dfe8 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.7.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.4.0 +FROM sovrin/dockerbase:base-xenial-0.4.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 index 3c5208dec..2b99f8602 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.5.0 +FROM sovrin/dockerbase:base-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/setup.android.env.sh b/devops/setup.android.env.sh index 1f803a7f0..631171440 100644 --- a/devops/setup.android.env.sh +++ b/devops/setup.android.env.sh @@ -69,7 +69,7 @@ download_and_unzip_dependencies_for_all_architectures(){ #TODO Get dependencies in more optimized way pushd ${ANDROID_BUILD_FOLDER} if [ ! -d "indy-android-dependencies" ] ; then - git clone https://github.com/evernym/indy-android-dependencies.git + git clone https://github.com/sovrin/indy-android-dependencies.git pushd ${ANDROID_BUILD_FOLDER}/indy-android-dependencies/prebuilt/ # git checkout tags/v1.0.1 find . -name "*.zip" | xargs -P 5 -I FILENAME sh -c 'unzip -o -qq -d "$(dirname "FILENAME")" "FILENAME"' From 79f7a83e7a92968423a3dbfe338eebb18ba0e87c Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 15 Nov 2018 17:43:05 -0700 Subject: [PATCH 28/91] changing repoDistr in prep for new repo Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index c6e157e21..e6ec958a4 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -135,7 +135,7 @@ def codeBuildPipelines = { lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion - repoDistr = 'agency-dev' + repoDistr = 'deb' } if (lastRevision) { @@ -208,7 +208,7 @@ def codeBuildPipelines = { logger.info("Uploading debian package '$debName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'agency_dev' + repoDistr = 'deb' packagePath = debName } From 31a101cc225eada7925c2cdf555cf87337e8ba86 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Sat, 17 Nov 2018 13:37:35 -0700 Subject: [PATCH 29/91] updating repoDistr Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index e6ec958a4..6457b7891 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -109,7 +109,7 @@ def codeBuildPipelines = { logger.info("Uploading package '$archName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'android' + repoDistr = 'android-rc' packagePath = archName } } @@ -135,7 +135,7 @@ def codeBuildPipelines = { lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion - repoDistr = 'deb' + repoDistr = 'xenial-rc' } if (lastRevision) { @@ -208,7 +208,7 @@ def codeBuildPipelines = { logger.info("Uploading debian package '$debName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'deb' + repoDistr = 'xenial-rc' packagePath = debName } @@ -314,7 +314,7 @@ def macOSPipeline = { sovrinRepo.upload { - repoDistr = 'ios' + repoDistr = 'ios-rc' packagePath = pkgName } } From 982fef9146ac0bf7957fa5f63cf67d508a9ed05d Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 19 Nov 2018 13:27:43 -0700 Subject: [PATCH 30/91] changing repoDistr Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 6457b7891..f7f8808f3 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -109,7 +109,7 @@ def codeBuildPipelines = { logger.info("Uploading package '$archName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'android-rc' + repoDistr = 'android/libsovtoken/rc' packagePath = archName } } @@ -314,7 +314,7 @@ def macOSPipeline = { sovrinRepo.upload { - repoDistr = 'ios-rc' + repoDistr = 'ios/libsovtoken/rc' packagePath = pkgName } } From daf2339759b50e55775174b3358dc307af44be02 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 19 Nov 2018 13:49:09 -0700 Subject: [PATCH 31/91] changing upload function names Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index f7f8808f3..b78be8e0f 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -108,7 +108,7 @@ def codeBuildPipelines = { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") logger.info("Uploading package '$archName' to sovrin repo") - sovrinRepo.upload { + sovrinRepo.uploadBlob { repoDistr = 'android/libsovtoken/rc' packagePath = archName } @@ -207,7 +207,7 @@ def codeBuildPipelines = { debName = utils.shStdout("ls $packageName*$debPVersion*.deb") logger.info("Uploading debian package '$debName' to sovrin repo") - sovrinRepo.upload { + sovrinRepo.uploadDeb { repoDistr = 'xenial-rc' packagePath = debName } @@ -313,7 +313,7 @@ def macOSPipeline = { logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - sovrinRepo.upload { + sovrinRepo.uploadBlob { repoDistr = 'ios/libsovtoken/rc' packagePath = pkgName } From fb34734983d0f77c9d189ee86c511848d3cc6afe Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 19 Nov 2018 19:21:05 -0700 Subject: [PATCH 32/91] adding some debugging Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index b78be8e0f..9cba03b60 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -146,8 +146,11 @@ def codeBuildPipelines = { } stage('Set release parameters') { + logger.info("Finding Release version for sovrin repo: $releaseVersion") def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" + logger.info("Release version for sovrin repo: $releaseVersion") + logger.info("Finding Package version for sovrin repo: $debPVersion") debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') logger.info("Package version for sovrin repo: $debPVersion") From b553b82b2181629293f93d5156af0677938b94d3 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 19 Nov 2018 20:00:19 -0700 Subject: [PATCH 33/91] removing extra steps for now Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 9cba03b60..76d7c422c 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -238,11 +238,12 @@ def codeBuildPipelines = { } Map builds = [ - xenial: xenialBuild, - android: [ - build: androidBuild, - nodeLabel: "$nodeLabels.codeBuild" - ] + xenial: xenialBuild + //xenial: xenialBuild, + //android: [ + // build: androidBuild, + // nodeLabel: "$nodeLabels.codeBuild" + //] ] builds.failFast = false @@ -334,10 +335,10 @@ pipelineWrapper({ codeBuild: [ build: codeBuildPipelines, nodeLabel: "$nodeLabels.codeBuild" - ], - macos: [ - build: macOSPipeline, - nodeLabel: "$nodeLabels.macos" + //], + //macos: [ + // build: macOSPipeline, + // nodeLabel: "$nodeLabels.macos" ] ] builds.failFast = false From 00387136d5b70bd65e847e1a015b33f158878d89 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 19 Nov 2018 20:15:37 -0700 Subject: [PATCH 34/91] fixes Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 76d7c422c..5e27e57b7 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -146,11 +146,11 @@ def codeBuildPipelines = { } stage('Set release parameters') { - logger.info("Finding Release version for sovrin repo: $releaseVersion") + logger.info("Finding Release version") def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" logger.info("Release version for sovrin repo: $releaseVersion") - logger.info("Finding Package version for sovrin repo: $debPVersion") + logger.info("Finding Package version") debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') logger.info("Package version for sovrin repo: $debPVersion") From 4be161df74be9649f20176386c701eef241d9172 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 20 Nov 2018 11:37:41 -0700 Subject: [PATCH 35/91] testing Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 5e27e57b7..a772ee958 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -151,7 +151,7 @@ def codeBuildPipelines = { logger.info("Release version for sovrin repo: $releaseVersion") logger.info("Finding Package version") - debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') + debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion) logger.info("Package version for sovrin repo: $debPVersion") // TODO crate and rpm From 21f44d0df262bfc6dcbc8251dfe6ae278f89a1e2 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 20 Nov 2018 11:47:23 -0700 Subject: [PATCH 36/91] adding all pipelines back in Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index a772ee958..eead190d4 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -238,12 +238,11 @@ def codeBuildPipelines = { } Map builds = [ - xenial: xenialBuild - //xenial: xenialBuild, - //android: [ - // build: androidBuild, - // nodeLabel: "$nodeLabels.codeBuild" - //] + xenial: xenialBuild, + android: [ + build: androidBuild, + nodeLabel: "$nodeLabels.codeBuild" + ] ] builds.failFast = false @@ -335,10 +334,10 @@ pipelineWrapper({ codeBuild: [ build: codeBuildPipelines, nodeLabel: "$nodeLabels.codeBuild" - //], - //macos: [ - // build: macOSPipeline, - // nodeLabel: "$nodeLabels.macos" + ], + macos: [ + build: macOSPipeline, + nodeLabel: "$nodeLabels.macos" ] ] builds.failFast = false From 574178515a0509e2b03f0c12902652fb0d9f0df4 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 17 Dec 2018 17:34:25 -0700 Subject: [PATCH 37/91] adding nexusrepo Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index eead190d4..42bce4725 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -37,6 +37,7 @@ def codeBuildPipelines = { } def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def nexusRepo = sovLibrary.NexusRepo.new(this) def git = sovLibrary.Git.new(this) def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) @@ -108,7 +109,7 @@ def codeBuildPipelines = { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") logger.info("Uploading package '$archName' to sovrin repo") - sovrinRepo.uploadBlob { + nexusRepo.uploadBlob { repoDistr = 'android/libsovtoken/rc' packagePath = archName } @@ -135,7 +136,8 @@ def codeBuildPipelines = { lastRevision = sovrinRepo.getLastRevision { delegate.packageName = packageName packageSrcVersion = srcVersion - repoDistr = 'xenial-rc' + repoDistr = 'xenial' + component = 'rc' } if (lastRevision) { @@ -210,8 +212,9 @@ def codeBuildPipelines = { debName = utils.shStdout("ls $packageName*$debPVersion*.deb") logger.info("Uploading debian package '$debName' to sovrin repo") - sovrinRepo.uploadDeb { - repoDistr = 'xenial-rc' + sovrinRepo.upload { + repoDistr = 'xenial' + component = 'rc' packagePath = debName } @@ -287,7 +290,7 @@ def macOSPipeline = { checkout scm } - def sovrinRepo = sovLibrary.SovrinRepo.new(this) + def nexusRepo = sovLibrary.NexusRepo.new(this) def utils = sovLibrary.Utils.new(this) @@ -316,7 +319,7 @@ def macOSPipeline = { logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - sovrinRepo.uploadBlob { + NexusRepo.uploadBlob { repoDistr = 'ios/libsovtoken/rc' packagePath = pkgName } From 68fcd65bf1eed77fb1df70183b1c241f63a92df0 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 18 Dec 2018 10:04:00 -0700 Subject: [PATCH 38/91] fixing name Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 42bce4725..76be16a2e 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -319,7 +319,7 @@ def macOSPipeline = { logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - NexusRepo.uploadBlob { + nexusRepo.uploadBlob { repoDistr = 'ios/libsovtoken/rc' packagePath = pkgName } From 4d1d82b01d309d492393c3b3a1641112b2722710 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Tue, 18 Dec 2018 16:30:44 -0700 Subject: [PATCH 39/91] updating ip for repohost Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 76be16a2e..fbf3cafa0 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -21,7 +21,7 @@ def codeBuildPipelines = { //put code build containers inside a vpc under our dev account env.USE_VPC_CONFIG = true - env.SOVRIN_REPO_HOST = '192.168.11.115' + env.SOVRIN_REPO_HOST = '192.168.101.193' List _envBuildSrc = [ 'devops', From e3d4d9519767d784b73ee9ad02f6c09adf0ec4ea Mon Sep 17 00:00:00 2001 From: Daniel Bluhm Date: Mon, 25 Feb 2019 19:04:53 -0700 Subject: [PATCH 40/91] Fix build and update to rust-openssl v0.10 Signed-off-by: Daniel Bluhm --- libsovtoken/Cargo.toml | 4 ++-- libsovtoken/src/logic/hash.rs | 12 ++++++------ libsovtoken/src/logic/xfer_payload.rs | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 10e653d5b..6f0b3cf5d 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -28,9 +28,9 @@ lazy_static = "0.2" libc = "0.2.21" log = "0.4.1" log-panics = "2.0.0" -openssl = "0.9.24" +openssl = "0.10" rand = "0.4.2" -indy = "1.6.7" +indy = "=1.6.7" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" diff --git a/libsovtoken/src/logic/hash.rs b/libsovtoken/src/logic/hash.rs index 3fd5f58f3..0e5c7c8e6 100644 --- a/libsovtoken/src/logic/hash.rs +++ b/libsovtoken/src/logic/hash.rs @@ -1,6 +1,6 @@ //! what does this module do? -use openssl::hash::{hash2, MessageDigest, Hasher, DigestBytes}; +use openssl::hash::{hash, MessageDigest, Hasher, DigestBytes}; use indy::ErrorCode; pub const HASH_OUTPUT_LEN: usize = 32; @@ -29,7 +29,7 @@ impl Hash { } pub fn hash_empty() -> Result { - Ok(Digest::new(hash2(MessageDigest::sha256(), &[]).map_err(|_| ErrorCode::CommonInvalidState)?)) + Ok(Digest::new(hash(MessageDigest::sha256(), &[]).map_err(|_| ErrorCode::CommonInvalidState)?)) } @@ -37,7 +37,7 @@ impl Hash { let mut ctx = Hash::new_context()?; ctx.update(&[0x00]).map_err(|_| ErrorCode::CommonInvalidState)?; leaf.update_context(&mut ctx)?; - Ok(Digest::new(ctx.finish2().map_err(|_| ErrorCode::CommonInvalidState)?)) + Ok(Digest::new(ctx.finish().map_err(|_| ErrorCode::CommonInvalidState)?)) } pub fn hash_nodes(left: &T, right: &T) -> Result where T: Hashable { @@ -45,7 +45,7 @@ impl Hash { ctx.update(&[0x01]).map_err(|_| ErrorCode::CommonInvalidState)?; left.update_context(&mut ctx)?; right.update_context(&mut ctx)?; - Ok(Digest::new(ctx.finish2().map_err(|_| ErrorCode::CommonInvalidState)?)) + Ok(Digest::new(ctx.finish().map_err(|_| ErrorCode::CommonInvalidState)?)) } } @@ -66,7 +66,7 @@ impl Hash { /// extern crate openssl; /// extern crate sovtoken; /// extern crate indy; -/// use self::openssl::hash::{hash2, MessageDigest, Hasher, DigestBytes}; +/// use self::openssl::hash::{hash, MessageDigest, Hasher, DigestBytes}; /// use self::sovtoken::logic::hash::Hashable; /// use self::indy::ErrorCode; /// @@ -101,4 +101,4 @@ impl > Hashable for T { fn update_context(&self, context: &mut Hasher) -> Result<(), ErrorCode> { Ok(context.update(self.as_ref()).map_err(|_| ErrorCode::CommonInvalidState)?) } -} \ No newline at end of file +} diff --git a/libsovtoken/src/logic/xfer_payload.rs b/libsovtoken/src/logic/xfer_payload.rs index 6bf29380f..11605ffa2 100644 --- a/libsovtoken/src/logic/xfer_payload.rs +++ b/libsovtoken/src/logic/xfer_payload.rs @@ -270,7 +270,7 @@ fn do_serialize_signature(v: serde_json::Value, is_top_level: bool) -> Result Date: Tue, 26 Feb 2019 12:37:55 -0700 Subject: [PATCH 41/91] adding updated dockerfiles Signed-off-by: Cam Parra --- .../ext/docker/base/xenial/Dockerfile.0.6.0 | 53 +++++++++++++++++++ .../ext/docker/rust/xenial/Dockerfile.0.8.0 | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 devops/ext/docker/base/xenial/Dockerfile.0.6.0 diff --git a/devops/ext/docker/base/xenial/Dockerfile.0.6.0 b/devops/ext/docker/base/xenial/Dockerfile.0.6.0 new file mode 100644 index 000000000..114d044a3 --- /dev/null +++ b/devops/ext/docker/base/xenial/Dockerfile.0.6.0 @@ -0,0 +1,53 @@ +FROM ubuntu:xenial +# TODO LABEL maintainer="Name " + +# generally useful packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + apt-transport-https \ + curl \ + wget \ + vim \ + git \ + procps \ + autoconf \ + automake \ + g++ \ + gcc \ + make \ + pkg-config \ + zip \ + unzip \ + && rm -rf /var/lib/apt/lists/* + + +# install fpm +ENV FPM_VERSION=1.9.3 +RUN apt-get update && apt-get install -y --no-install-recommends \ + ruby \ + ruby-dev \ + rubygems \ + && gem install --no-ri --no-rdoc fpm -v $FPM_VERSION \ + && rm -rf /var/lib/apt/lists/* + + +# install gosu to simplify stepping down from root +# https://github.com/tianon/gosu/blob/master/INSTALL.md#from-debian +ENV GOSU_VERSION 1.10 +RUN set -x \ + && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ + && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ + && export GNUPGHOME="$(mktemp -d)" \ + && (gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver keyserver.pgp.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4) \ + && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ + && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \ + && chmod +x /usr/local/bin/gosu \ + && gosu nobody true + + +# TODO CMD ENTRYPOINT ... + +ENV BASE_ENV_VERSION=0.6.0 diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 index 3c5208dec..fdd0daab6 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.5.0 +FROM evernym/dockerbase:base-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION From 21b0448d1d6094284f8a2f089a7480f109804f23 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 12:58:41 -0700 Subject: [PATCH 42/91] modified rest of ci stack Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 4 ++-- devops/docker/ci/xenial/Dockerfile | 4 ++-- devops/ext/docker/base/xenial/Dockerfile.0.6.0 | 1 + devops/ext/docker/rust/xenial/Dockerfile.0.8.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.9.0 | 18 ++++++++++++++++++ 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 devops/ext/docker/rust/xenial/Dockerfile.0.9.0 diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index a93d2db5c..6db25f192 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.8.0 +FROM evernym/dockerbase:rust-xenial-0.9.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.12.0 \ No newline at end of file +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.13.0 \ No newline at end of file diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 61394d401..8b347973b 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.12.0 +FROM evernym/libsovtoken:base-xenial-0.13.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.49.0 \ No newline at end of file +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.50.0 \ No newline at end of file diff --git a/devops/ext/docker/base/xenial/Dockerfile.0.6.0 b/devops/ext/docker/base/xenial/Dockerfile.0.6.0 index 114d044a3..6ab82745a 100644 --- a/devops/ext/docker/base/xenial/Dockerfile.0.6.0 +++ b/devops/ext/docker/base/xenial/Dockerfile.0.6.0 @@ -27,6 +27,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ ruby \ ruby-dev \ rubygems \ + build-essential \ && gem install --no-ri --no-rdoc fpm -v $FPM_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 index fdd0daab6..3c5208dec 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.8.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.6.0 +FROM evernym/dockerbase:base-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 new file mode 100644 index 000000000..c98d1c001 --- /dev/null +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 @@ -0,0 +1,18 @@ +FROM evernym/dockerbase:base-xenial-0.6.0 +# TODO LABEL maintainer="Name " + +ARG RUST_VERSION + +ENV RUST_VERSION=${RUST_VERSION:-1.27.0} +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain $RUST_VERSION \ + && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ + && rustup --version \ + && cargo --version \ + && rustc --version + +# TODO CMD ENTRYPOINT ... + +ENV RUST_ENV_VERSION=0.9.0 From 5fbd47c3059bc3826af2f2f2fc9883be58e7bebe Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 13:14:52 -0700 Subject: [PATCH 43/91] updated fpm deps Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 4 ++-- devops/docker/ci/xenial/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 6db25f192..620fe8bb0 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.9.0 +FROM evernym/dockerbase:rust-xenial-0.10.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.13.0 \ No newline at end of file +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.14.0 \ No newline at end of file diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 8b347973b..f9069ebaa 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.13.0 +FROM evernym/libsovtoken:base-xenial-0.14.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.50.0 \ No newline at end of file +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.51.0 \ No newline at end of file From d7fad7e499708fa22e0483183b0d38fa4a9c1e48 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 14:40:43 -0700 Subject: [PATCH 44/91] updating docker files and version numbers Signed-off-by: Cam Parra --- .../ext/docker/base/xenial/Dockerfile.0.7.0 | 57 +++++++++++++++++++ .../ext/docker/rust/xenial/Dockerfile.0.10.0 | 18 ++++++ 2 files changed, 75 insertions(+) create mode 100644 devops/ext/docker/base/xenial/Dockerfile.0.7.0 create mode 100644 devops/ext/docker/rust/xenial/Dockerfile.0.10.0 diff --git a/devops/ext/docker/base/xenial/Dockerfile.0.7.0 b/devops/ext/docker/base/xenial/Dockerfile.0.7.0 new file mode 100644 index 000000000..ff7fd3dbd --- /dev/null +++ b/devops/ext/docker/base/xenial/Dockerfile.0.7.0 @@ -0,0 +1,57 @@ +FROM ubuntu:xenial +# TODO LABEL maintainer="Name " + +# generally useful packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + apt-transport-https \ + curl \ + wget \ + vim \ + git \ + procps \ + autoconf \ + automake \ + g++ \ + gcc \ + make \ + pkg-config \ + zip \ + unzip \ + && rm -rf /var/lib/apt/lists/* + + +# install fpm +ENV FPM_VERSION=1.9.3 +RUN apt-get update && apt-get install -y --no-install-recommends \ + ruby \ + ruby-dev \ + rubygems \ + build-essential \ + autoconf \ + libtool \ + rpm \ + && gem install --no-ri --no-rdoc fpm -v $FPM_VERSION \ + && rm -rf /var/lib/apt/lists/* + + +# install gosu to simplify stepping down from root +# https://github.com/tianon/gosu/blob/master/INSTALL.md#from-debian +ENV GOSU_VERSION 1.10 +RUN set -x \ + && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ + && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ + && export GNUPGHOME="$(mktemp -d)" \ + && (gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver keyserver.pgp.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4) \ + && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ + && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \ + && chmod +x /usr/local/bin/gosu \ + && gosu nobody true + + +# TODO CMD ENTRYPOINT ... + +ENV BASE_ENV_VERSION=0.7.0 diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 new file mode 100644 index 000000000..34f6d0790 --- /dev/null +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 @@ -0,0 +1,18 @@ +FROM evernym/dockerbase:base-xenial-0.7.0 +# TODO LABEL maintainer="Name " + +ARG RUST_VERSION + +ENV RUST_VERSION=${RUST_VERSION:-1.27.0} +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain $RUST_VERSION \ + && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ + && rustup --version \ + && cargo --version \ + && rustc --version + +# TODO CMD ENTRYPOINT ... + +ENV RUST_ENV_VERSION=0.10.0 From ed70078f4332453b780746ebed938e5be2377628 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 14:51:26 -0700 Subject: [PATCH 45/91] intalling rake before calling it Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 4 +- devops/docker/ci/xenial/Dockerfile | 4 +- .../ext/docker/base/xenial/Dockerfile.0.8.0 | 58 +++++++++++++++++++ .../ext/docker/rust/xenial/Dockerfile.0.11.0 | 18 ++++++ 4 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 devops/ext/docker/base/xenial/Dockerfile.0.8.0 create mode 100644 devops/ext/docker/rust/xenial/Dockerfile.0.11.0 diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 620fe8bb0..83d929a83 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.10.0 +FROM evernym/dockerbase:rust-xenial-0.11.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.14.0 \ No newline at end of file +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.15.0 \ No newline at end of file diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index f9069ebaa..78d23893d 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.14.0 +FROM evernym/libsovtoken:base-xenial-0.15.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.51.0 \ No newline at end of file +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.52.0 \ No newline at end of file diff --git a/devops/ext/docker/base/xenial/Dockerfile.0.8.0 b/devops/ext/docker/base/xenial/Dockerfile.0.8.0 new file mode 100644 index 000000000..a37e53de1 --- /dev/null +++ b/devops/ext/docker/base/xenial/Dockerfile.0.8.0 @@ -0,0 +1,58 @@ +FROM ubuntu:xenial +# TODO LABEL maintainer="Name " + +# generally useful packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + apt-transport-https \ + curl \ + wget \ + vim \ + git \ + procps \ + autoconf \ + automake \ + g++ \ + gcc \ + make \ + pkg-config \ + zip \ + unzip \ + && rm -rf /var/lib/apt/lists/* + + +# install fpm +ENV FPM_VERSION=1.9.3 +RUN apt-get update && apt-get install -y --no-install-recommends \ + ruby \ + ruby-dev \ + rubygems \ + build-essential \ + autoconf \ + libtool \ + rpm \ + && gem install rake \ + && gem install --no-ri --no-rdoc fpm -v $FPM_VERSION \ + && rm -rf /var/lib/apt/lists/* + + +# install gosu to simplify stepping down from root +# https://github.com/tianon/gosu/blob/master/INSTALL.md#from-debian +ENV GOSU_VERSION 1.10 +RUN set -x \ + && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ + && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ + && export GNUPGHOME="$(mktemp -d)" \ + && (gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + || gpg --keyserver keyserver.pgp.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4) \ + && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ + && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \ + && chmod +x /usr/local/bin/gosu \ + && gosu nobody true + + +# TODO CMD ENTRYPOINT ... + +ENV BASE_ENV_VERSION=0.8.0 diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 new file mode 100644 index 000000000..b43e4414c --- /dev/null +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 @@ -0,0 +1,18 @@ +FROM evernym/dockerbase:base-xenial-0.8.0 +# TODO LABEL maintainer="Name " + +ARG RUST_VERSION + +ENV RUST_VERSION=${RUST_VERSION:-1.27.0} +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain $RUST_VERSION \ + && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ + && rustup --version \ + && cargo --version \ + && rustc --version + +# TODO CMD ENTRYPOINT ... + +ENV RUST_ENV_VERSION=0.11.0 From a88f87b9f98ebecf25108752be887a10ab80bf49 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 15:03:48 -0700 Subject: [PATCH 46/91] rust version update Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 4 ++-- devops/docker/ci/xenial/Dockerfile | 2 +- .../ext/docker/rust/xenial/Dockerfile.0.12.0 | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 devops/ext/docker/rust/xenial/Dockerfile.0.12.0 diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 83d929a83..ab480ca0c 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:rust-xenial-0.11.0 +FROM evernym/dockerbase:rust-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.15.0 \ No newline at end of file +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.16.0 \ No newline at end of file diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 78d23893d..c627663e1 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.15.0 +FROM evernym/libsovtoken:base-xenial-0.16.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 new file mode 100644 index 000000000..ee1656219 --- /dev/null +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 @@ -0,0 +1,18 @@ +FROM evernym/dockerbase:base-xenial-0.8.0 +# TODO LABEL maintainer="Name " + +ARG RUST_VERSION + +ENV RUST_VERSION=${RUST_VERSION:-1.32.0} +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain $RUST_VERSION \ + && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ + && rustup --version \ + && cargo --version \ + && rustc --version + +# TODO CMD ENTRYPOINT ... + +ENV RUST_ENV_VERSION=0.12.0 From c74a681d917c75583efd0d8b0abc9147eece20a7 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 15:13:44 -0700 Subject: [PATCH 47/91] updating libsodium Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index ab480ca0c..a1cb6c5bb 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -13,7 +13,7 @@ ENV LIBSODIUM_INC_DIR=/usr/include # install libsodium from the sources ENV LIBSODIUM_VERSION=1.0.14 RUN cd /tmp \ - && curl https://download.libsodium.org/libsodium/releases/libsodium-${LIBSODIUM_VERSION}.tar.gz | tar -xz \ + && curl https://download.libsodium.org/libsodium/releases/old/libsodium-${LIBSODIUM_VERSION}.tar.gz | tar -xz \ && cd /tmp/libsodium-${LIBSODIUM_VERSION} \ && ./configure --prefix=/usr/local/ && make && make install \ && ldconfig \ From f3d83f4838d6680615d96b1de157ac71bf9a70bc Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 26 Feb 2019 15:15:14 -0700 Subject: [PATCH 48/91] update version numbers for libsodium Signed-off-by: Cam Parra --- devops/docker/base/xenial/Dockerfile | 2 +- devops/docker/ci/xenial/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index a1cb6c5bb..955cb4abf 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.16.0 \ No newline at end of file +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.17.0 \ No newline at end of file diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index c627663e1..2926bb221 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM evernym/libsovtoken:base-xenial-0.16.0 +FROM evernym/libsovtoken:base-xenial-0.17.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.52.0 \ No newline at end of file +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.53.0 \ No newline at end of file From 7bf378b29b340e63cbf2888fcfa5658132e22f16 Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 28 Feb 2019 14:55:10 -0700 Subject: [PATCH 49/91] updating credential id Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 24 ++++++++++++------------ devops/aws-codebuild/Jenkinsfile.ci | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 6457b7891..882eac247 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') + github(credentialsId: 'sovbot-github', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) @@ -13,12 +13,12 @@ utils = sovLibrary.Utils.new(this) // TODO set proper labels def nodeLabels = [ codeBuild: env.LIBSOVTOKEN_CODEBUILD_NODE_LABEL ?: 'codebuild', - macos: env.LIBSOVTOKEN_MACOS_NODE_LABEL ?: 'macos', + macos: env.LIBSOVTOKEN_MACOS_NODE_LABEL ?: 'macos', ] def codeBuildPipelines = { def packageName = 'libsovtoken' - + //put code build containers inside a vpc under our dev account env.USE_VPC_CONFIG = true env.SOVRIN_REPO_HOST = '192.168.11.115' @@ -29,7 +29,7 @@ def codeBuildPipelines = { 'libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt', 'libsovtoken/build_scripts/android/android_settings.txt' ] - + def srcVersion stage('Checkout sources from SCM') { @@ -279,7 +279,7 @@ def macOSPipeline = { error(msg) } } - + stage('Checkout sources from SCM') { checkout scm } @@ -287,24 +287,24 @@ def macOSPipeline = { def sovrinRepo = sovLibrary.SovrinRepo.new(this) def utils = sovLibrary.Utils.new(this) - + withEnv([ "PATH+RUST=${RUST_PATH}", "PATH+BREW=/usr/local/bin", "PATH+CURL=/usr/local/opt/curl/bin" - ]) { - + ]) { + dir('libsovtoken/build_scripts/ios/mac/') { - + stage('mac.01.libindy.setup') { sh './mac.01.env.setup.sh' } - + stage('mac.14.libsovtoken.build.sh') { sh "./mac.14.libsovtoken.build.sh" } } - + dir('libsovtoken') { stage('Upload libsovtoken universal package to Sovrin repo') { String pkgName @@ -312,7 +312,7 @@ def macOSPipeline = { pkgName = utils.shStdout("ls ${packageName}*.zip") logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - + sovrinRepo.upload { repoDistr = 'ios-rc' packagePath = pkgName diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 87256b009..88db5d59b 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovrin-ci', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') + github(credentialsId: 'sovbot-github', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) From a87ce90e02a748f755ad1939a54c55081f14060b Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 28 Feb 2019 15:14:04 -0700 Subject: [PATCH 50/91] removing evernym strings. changing back to appropriate versions Signed-off-by: Felippe Burk --- devops/docker/base/xenial/Dockerfile | 2 +- devops/docker/ci/xenial/Dockerfile | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.10.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.11.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.12.0 | 2 +- devops/ext/docker/rust/xenial/Dockerfile.0.9.0 | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 8cdaa3321..56a3e5287 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM sovrin/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG u_id=1000 diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 6935e22cd..79f42ef6e 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM sovrin/libsovtoken:base-xenial-0.12.0 +FROM sovrin/libsovtoken:base-xenial-0.17.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 index 34f6d0790..047ab76ab 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.10.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.7.0 +FROM sovrin/dockerbase:base-xenial-0.7.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 index b43e4414c..fa729008e 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.11.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.8.0 +FROM sovrin/dockerbase:base-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 index ee1656219..227113234 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.12.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.8.0 +FROM sovrin/dockerbase:base-xenial-0.8.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION diff --git a/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 b/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 index c98d1c001..b07e0f698 100644 --- a/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 +++ b/devops/ext/docker/rust/xenial/Dockerfile.0.9.0 @@ -1,4 +1,4 @@ -FROM evernym/dockerbase:base-xenial-0.6.0 +FROM sovrin/dockerbase:base-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG RUST_VERSION From 416c031be658f154a47f4820b9b1ffa737dded5f Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Thu, 28 Feb 2019 17:58:18 -0700 Subject: [PATCH 51/91] fixing component references and adding upload for android/ios Signed-off-by: Felippe Burk --- devops/aws-codebuild/Jenkinsfile.cd | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 882eac247..85339d774 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -108,9 +108,11 @@ def codeBuildPipelines = { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") logger.info("Uploading package '$archName' to sovrin repo") - sovrinRepo.upload { - repoDistr = 'android-rc' + sovrinRepo.uploadFile { + component = 'rc' packagePath = archName + packageName = 'libsovtoken' + systemType = 'android' } } @@ -208,7 +210,8 @@ def codeBuildPipelines = { logger.info("Uploading debian package '$debName' to sovrin repo") sovrinRepo.upload { - repoDistr = 'xenial-rc' + repoDistr = 'xenial' + component = 'rc' packagePath = debName } @@ -313,9 +316,11 @@ def macOSPipeline = { logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - sovrinRepo.upload { - repoDistr = 'ios-rc' + sovrinRepo.uploadBlob { + component = 'rc' packagePath = pkgName + packageName = 'libsovtoken' + systemType = 'ios' } } } From ab377377f53b078a8c7d880e6e6530b5bc9ee2c0 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 5 Mar 2019 15:22:28 -0700 Subject: [PATCH 52/91] [ST-508] added callback helper and modified api to call libindy directly Signed-off-by: Cam Parra --- libsovtoken/Cargo.toml | 2 +- libsovtoken/src/api/mod.rs | 111 +++++++++++++++++++---------- libsovtoken/src/lib.rs | 3 +- libsovtoken/src/utils/callbacks.rs | 49 +++++++++++++ libsovtoken/src/utils/mod.rs | 2 +- 5 files changed, 126 insertions(+), 41 deletions(-) create mode 100644 libsovtoken/src/utils/callbacks.rs diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 6f0b3cf5d..0a8187452 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -30,7 +30,7 @@ log = "0.4.1" log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" -indy = "=1.6.7" +indy-sys = "1.8.1" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index 27ab65452..11bfb9eea 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -1,8 +1,9 @@ //! Implementation of the Indy-Sdk Payment API handlers. No business logic in these methods. //! -use libc::c_char; -use indy; +//use libc::c_char; +use std::os::raw::c_char; +use indy_sys; use indy::payments::Payment; use indy::ledger::Ledger; @@ -33,11 +34,15 @@ use logic::payments::{CreatePaymentHandler}; use logic::set_fees; use logic::xfer_payload::XferPayload; +use std::sync::mpsc::channel; + use utils::constants::general::{JsonCallback, PAYMENT_METHOD_NAME, LEDGER_ID}; use utils::constants::txn_types::{GET_FEES, GET_UTXO}; use utils::ffi_support::{str_from_char_ptr, string_from_char_ptr, c_pointer_from_string}; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::general::ResultExtension; +use utils::callbacks::closure_to_cb_ec; +use std::ffi::CString; /// This method generates private part of payment address /// and stores it in a secure place. It should be a @@ -944,46 +949,78 @@ pub extern fn sovtoken_init() -> i32 { debug!("sovtoken_init() started"); debug!("Going to call Payment::register"); - if let Err(e) = Payment::register_method( - PAYMENT_METHOD_NAME, - Some(create_payment_address_handler), - Some(add_request_fees_handler), - Some(parse_response_with_fees_handler), - Some(build_get_utxo_request_handler), - Some(parse_get_utxo_response_handler), - Some(build_payment_req_handler), - Some(parse_payment_response_handler), - Some(build_mint_txn_handler), - Some(build_set_txn_fees_handler), - Some(build_get_txn_fees_handler), - Some(parse_get_txn_fees_response_handler), - Some(build_verify_req_handler), - Some(parse_verify_response_handler), - ) { - debug!("Payment::register failed with {:?}", e); - return e as i32 - }; + let (sender, receiver) = channel(); + + let closure: Box = Box::new(move |err| { + sender.send(err).unwrap(); + }); + + let (cmd_handle, cb) = closure_to_cb_ec(closure); + + let payment_method_name = CString::new(PAYMENT_METHOD_NAME).unwrap(); + + unsafe { + indy_sys::payments::indy_register_payment_method( + cmd_handle, + payment_method_name.as_ptr(), + Some(create_payment_address_handler), + Some(add_request_fees_handler), + Some(parse_response_with_fees_handler), + Some(build_get_utxo_request_handler), + Some(parse_get_utxo_response_handler), + Some(build_payment_req_handler), + Some(parse_payment_response_handler), + Some(build_mint_txn_handler), + Some(build_set_txn_fees_handler), + Some(build_get_txn_fees_handler), + Some(parse_get_txn_fees_response_handler), + Some(build_verify_req_handler), + Some(parse_verify_response_handler), + cb, + ); + } + + debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_UTXO"); - if let Err(e) = Ledger::register_transaction_parser_for_sp( - GET_UTXO, - Some(get_utxo_state_proof_parser), - Some(free_parsed_state_proof) - ) { - debug!("Ledger::register_transaction_parser_for_sp for GET_UTXO failed with {:?}", e); - return e as i32 - }; + let (sender_one, receiver_one) = channel(); + + let closure_one: Box = Box::new(move |err| { + sender_one.send(err).unwrap(); + }); + + let (cmd_handle_sp, cb_sp) = closure_to_cb_ec(closure_one); + + unsafe { + indy_sys::ledger::indy_register_transaction_parser_for_sp( + cmd_handle_sp, + c_pointer_from_string(GET_UTXO.to_string()), + some(get_utxo_state_proof_parser), + Some(free_parsed_state_proof), + cb_sp + ); + } + + let (sender_one, receiver_two) = channel(); + + let closure_two: Box = Box::new(move |err| { + sender_one.send(err).unwrap(); + }); + let (cmd_handle_fees, cb_sp_fees) = closure_to_cb_ec(closure_two); debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_FEES"); - if let Err(e) = Ledger::register_transaction_parser_for_sp( - GET_FEES, - Some(get_fees_state_proof_parser), - Some(free_parsed_state_proof) - ) { - debug!("Ledger::register_transaction_parser_for_sp for GET_FEES failed with {:?}", e); - return e as i32 - }; + + + unsafe { + indy_sys::ledger::indy_register_transaction_parser_for_sp( + cmd_handle_fees, + c_pointer_from_string(GET_FEES.to_string()), + Some(get_fees_state_proof_parser), + Some(free_parsed_state_proof), + cb + ); + } debug!("sovtoken_init() returning ErrorCode::Success"); return ErrorCode::Success as i32; diff --git a/libsovtoken/src/lib.rs b/libsovtoken/src/lib.rs index 8abd279e7..d179ed7ae 100644 --- a/libsovtoken/src/lib.rs +++ b/libsovtoken/src/lib.rs @@ -41,8 +41,7 @@ extern crate android_logger; // evernym/sovrin crates // ------------------------------------------ - -extern crate indy; // lib-sdk project +extern crate indy_sys; // lib-sdk project // ------------------------------------------ diff --git a/libsovtoken/src/utils/callbacks.rs b/libsovtoken/src/utils/callbacks.rs new file mode 100644 index 000000000..c38401fa2 --- /dev/null +++ b/libsovtoken/src/utils/callbacks.rs @@ -0,0 +1,49 @@ +use ErrorCode; +use utils::sequence; + +use libc::c_char; +use std::collections::HashMap; +use std::ffi::CStr; +use std::sync::Mutex; + +type EcClosure = Box; +type EcCallback = Option; +type EcStringClosure = Box; +type EcStringCallback = Option; + +pub fn closure_to_cb_ec(closure: EcClosure) -> (i32, EcCallback) { + lazy_static! { + static ref CALLBACKS: Mutex> = Default::default(); + } + + extern "C" fn _callback(command_handle: i32, err: ErrorCode) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + cb(err) + } + + let command_handle = sequence::get_next_id(); + let mut callbacks = CALLBACKS.lock().unwrap(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) +} + +pub fn closure_to_cb_ec_string(closure: EcStringClosure) -> (i32, EcStringCallback) { + lazy_static! { + static ref CALLBACKS: Mutex> = Default::default(); + } + + extern "C" fn _callback(command_handle: i32, err: ErrorCode, c_str: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let metadata = unsafe { CStr::from_ptr(c_str).to_str().unwrap().to_string() }; + cb(err, metadata) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = sequence::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) +} \ No newline at end of file diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index 1b344897b..15ceacfcd 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -10,6 +10,6 @@ pub mod general; #[macro_use] pub mod logger; #[macro_use] pub mod conversions; pub mod random; - +pub mod callbacks; #[cfg(any(test, feature = "integration"))] pub mod test; From a3fccadf625016e21713365f5754681521382012 Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 5 Mar 2019 20:03:23 -0700 Subject: [PATCH 53/91] [ST-508] added wrapper deps and modified deps Signed-off-by: Cam Parra --- libsovtoken/Cargo.toml | 5 +- libsovtoken/src/api/mod.rs | 39 +- libsovtoken/src/lib.rs | 9 +- libsovtoken/src/logic/address.rs | 2 +- .../logic/api_internals/add_request_fees.rs | 4 +- .../src/logic/api_internals/create_address.rs | 2 +- libsovtoken/src/logic/build_payment.rs | 4 +- libsovtoken/src/logic/hash.rs | 2 +- libsovtoken/src/logic/indy_sdk_api/crypto.rs | 637 ++++++++++++++++++ .../src/logic/indy_sdk_api/crypto_api.rs | 4 +- libsovtoken/src/logic/indy_sdk_api/mod.rs | 3 +- libsovtoken/src/logic/minting.rs | 2 +- libsovtoken/src/logic/parsers/common.rs | 2 +- .../src/logic/parsers/error_code_parser.rs | 2 +- .../src/logic/parsers/parse_get_txn_fees.rs | 2 +- .../logic/parsers/parse_get_utxo_response.rs | 2 +- .../logic/parsers/parse_payment_response.rs | 2 +- .../parse_response_with_fees_handler.rs | 2 +- libsovtoken/src/logic/parsers/parse_verify.rs | 2 +- libsovtoken/src/logic/payments.rs | 2 +- libsovtoken/src/logic/request.rs | 13 +- libsovtoken/src/logic/set_fees.rs | 2 +- libsovtoken/src/logic/verify.rs | 2 +- libsovtoken/src/logic/xfer_payload.rs | 4 +- libsovtoken/src/utils/base58.rs | 2 +- libsovtoken/src/utils/callbacks.rs | 463 ++++++++++++- libsovtoken/src/utils/ffi_support.rs | 4 +- libsovtoken/src/utils/json_conversion.rs | 4 +- libsovtoken/src/utils/macros.rs | 54 ++ libsovtoken/src/utils/mod.rs | 354 ++++++++++ libsovtoken/src/utils/results.rs | 91 +++ libsovtoken/src/utils/sequence.rs | 13 + libsovtoken/src/utils/test/callbacks.rs | 4 +- libsovtoken/tests/add_fees_for_attrib_test.rs | 2 +- .../tests/add_fees_for_cred_def_test.rs | 2 +- libsovtoken/tests/add_fees_for_nym.rs | 2 +- .../tests/add_fees_for_revoke_reg_def.rs | 2 +- libsovtoken/tests/add_fees_for_schema_test.rs | 2 +- libsovtoken/tests/api_tests.rs | 2 +- .../tests/build_fees_txn_handler_test.rs | 2 +- .../tests/build_mint_txn_handler_test.rs | 2 +- .../tests/build_payment_req_handler_test.rs | 2 +- libsovtoken/tests/build_verify_req_test.rs | 2 +- libsovtoken/tests/create_payment_tests.rs | 2 +- .../tests/parse_payment_response_test.rs | 2 +- libsovtoken/tests/payment_chaos_tests.rs | 2 +- libsovtoken/tests/utils/did.rs | 2 +- libsovtoken/tests/utils/ledger.rs | 2 +- libsovtoken/tests/utils/mint.rs | 2 +- 49 files changed, 1659 insertions(+), 112 deletions(-) create mode 100644 libsovtoken/src/logic/indy_sdk_api/crypto.rs create mode 100644 libsovtoken/src/utils/macros.rs create mode 100644 libsovtoken/src/utils/results.rs create mode 100644 libsovtoken/src/utils/sequence.rs diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 0a8187452..dd1530ffa 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -25,12 +25,15 @@ base64 = "0.6.0" env_logger = "0.5.10" hex = "0.2.0" lazy_static = "0.2" -libc = "0.2.21" +libc = "0.2.41" log = "0.4.1" log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" indy-sys = "1.8.1" +indy = "=1.6.7" +num-traits = "0.2" +num-derive = "0.2" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index 11bfb9eea..c250a212e 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -1,13 +1,9 @@ //! Implementation of the Indy-Sdk Payment API handlers. No business logic in these methods. //! -//use libc::c_char; use std::os::raw::c_char; use indy_sys; -use indy::payments::Payment; -use indy::ledger::Ledger; -use indy::ErrorCode; use logic::api_internals::{ add_request_fees, create_address @@ -37,12 +33,13 @@ use logic::xfer_payload::XferPayload; use std::sync::mpsc::channel; use utils::constants::general::{JsonCallback, PAYMENT_METHOD_NAME, LEDGER_ID}; +use utils::ErrorCode; use utils::constants::txn_types::{GET_FEES, GET_UTXO}; use utils::ffi_support::{str_from_char_ptr, string_from_char_ptr, c_pointer_from_string}; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::general::ResultExtension; -use utils::callbacks::closure_to_cb_ec; use std::ffi::CString; +use utils::callbacks::ClosureHandler; /// This method generates private part of payment address /// and stores it in a secure place. It should be a @@ -949,13 +946,7 @@ pub extern fn sovtoken_init() -> i32 { debug!("sovtoken_init() started"); debug!("Going to call Payment::register"); - let (sender, receiver) = channel(); - - let closure: Box = Box::new(move |err| { - sender.send(err).unwrap(); - }); - - let (cmd_handle, cb) = closure_to_cb_ec(closure); + let (receiver, cmd_handle, cb) = ClosureHandler::cb_ec(); let payment_method_name = CString::new(PAYMENT_METHOD_NAME).unwrap(); @@ -984,33 +975,23 @@ pub extern fn sovtoken_init() -> i32 { debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_UTXO"); - let (sender_one, receiver_one) = channel(); + let (receiver_utxo, cmd_handle_utxo, cb_utxo) = ClosureHandler::cb_ec(); - let closure_one: Box = Box::new(move |err| { - sender_one.send(err).unwrap(); - }); - let (cmd_handle_sp, cb_sp) = closure_to_cb_ec(closure_one); - unsafe { indy_sys::ledger::indy_register_transaction_parser_for_sp( - cmd_handle_sp, + cmd_handle_utxo, c_pointer_from_string(GET_UTXO.to_string()), - some(get_utxo_state_proof_parser), + Some(get_utxo_state_proof_parser), Some(free_parsed_state_proof), - cb_sp + cb_utxo ); } - let (sender_one, receiver_two) = channel(); - - let closure_two: Box = Box::new(move |err| { - sender_one.send(err).unwrap(); - }); - - let (cmd_handle_fees, cb_sp_fees) = closure_to_cb_ec(closure_two); debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_FEES"); + let (receiver_fees, cmd_handle_fees, cb_fees) = ClosureHandler::cb_ec(); + unsafe { indy_sys::ledger::indy_register_transaction_parser_for_sp( @@ -1018,7 +999,7 @@ pub extern fn sovtoken_init() -> i32 { c_pointer_from_string(GET_FEES.to_string()), Some(get_fees_state_proof_parser), Some(free_parsed_state_proof), - cb + cb_fees ); } diff --git a/libsovtoken/src/lib.rs b/libsovtoken/src/lib.rs index d179ed7ae..b973de19d 100644 --- a/libsovtoken/src/lib.rs +++ b/libsovtoken/src/lib.rs @@ -18,8 +18,9 @@ extern crate rand; extern crate serde; extern crate sodiumoxide; extern crate sha2; - - +extern crate num_traits; +#[macro_use] +extern crate num_derive; // ------------------------------------------ // crates from crate.io etc that require macro // ------------------------------------------ @@ -31,6 +32,7 @@ extern crate sha2; #[cfg(any(test, feature = "integration"))] #[macro_use] extern crate lazy_static; + // ------------------------------------------ // android crates // ------------------------------------------ @@ -43,7 +45,6 @@ extern crate android_logger; extern crate indy_sys; // lib-sdk project - // ------------------------------------------ // define our crate by defining the modules in the project // ------------------------------------------ @@ -53,4 +54,4 @@ extern crate indy_sys; // lib-sdk project pub mod utils; pub mod api; pub mod logic; -pub mod libraries; +pub mod libraries; \ No newline at end of file diff --git a/libsovtoken/src/logic/address.rs b/libsovtoken/src/logic/address.rs index 97ef2216a..816516cc8 100644 --- a/libsovtoken/src/logic/address.rs +++ b/libsovtoken/src/logic/address.rs @@ -19,7 +19,7 @@ use serde_json; use std::{io, str}; -use indy::ErrorCode; +use utils::ErrorCode; use logic::parsers::common::TXO; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::constants::general::{PAYMENT_ADDRESS_QUALIFIER, TXO_QUALIFIER}; diff --git a/libsovtoken/src/logic/api_internals/add_request_fees.rs b/libsovtoken/src/logic/api_internals/add_request_fees.rs index 69734b8f6..399bbfe5b 100644 --- a/libsovtoken/src/logic/api_internals/add_request_fees.rs +++ b/libsovtoken/src/logic/api_internals/add_request_fees.rs @@ -1,6 +1,6 @@ //! TODO ??? -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::xfer_payload::{XferPayload, serialize_signature}; use logic::input::Inputs; @@ -164,7 +164,7 @@ fn signed_fees(wallet_handle: i32, inputs: Inputs, outputs: Outputs, extra: Opti #[cfg(test)] mod test_deserialize_inputs { use libc::c_char; - use indy::ErrorCode; + use utils::ErrorCode; use serde_json; use std::ptr; use utils::constants::txn_types::XFER_PUBLIC; diff --git a/libsovtoken/src/logic/api_internals/create_address.rs b/libsovtoken/src/logic/api_internals/create_address.rs index 9733b305f..c7b11ea7a 100644 --- a/libsovtoken/src/logic/api_internals/create_address.rs +++ b/libsovtoken/src/logic/api_internals/create_address.rs @@ -6,7 +6,7 @@ Logic for the [`create_payment_address_handler`]. use std::os::raw::c_char; -use indy::ErrorCode; +use utils::ErrorCode; use logic::config::payment_address_config::PaymentAddressConfig; use utils::constants::general::{JsonCallback, JsonCallbackUnwrapped}; use utils::ffi_support::{string_from_char_ptr, cstring_from_str, c_pointer_from_str}; diff --git a/libsovtoken/src/logic/build_payment.rs b/libsovtoken/src/logic/build_payment.rs index 469224560..1c644ec14 100644 --- a/libsovtoken/src/logic/build_payment.rs +++ b/libsovtoken/src/logic/build_payment.rs @@ -1,6 +1,6 @@ //! what is this module for? -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::config::payment_config::PaymentRequest; use logic::input::Inputs; @@ -89,7 +89,7 @@ fn build_payment_request_pointer( #[cfg(test)] mod test_deserialize_inputs { - use indy::ErrorCode; + use utils::ErrorCode; use libc::c_char; use std::ptr; use utils::test::default; diff --git a/libsovtoken/src/logic/hash.rs b/libsovtoken/src/logic/hash.rs index 0e5c7c8e6..ac4698248 100644 --- a/libsovtoken/src/logic/hash.rs +++ b/libsovtoken/src/logic/hash.rs @@ -1,7 +1,7 @@ //! what does this module do? use openssl::hash::{hash, MessageDigest, Hasher, DigestBytes}; -use indy::ErrorCode; +use utils::ErrorCode; pub const HASH_OUTPUT_LEN: usize = 32; diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto.rs b/libsovtoken/src/logic/indy_sdk_api/crypto.rs new file mode 100644 index 000000000..47224758d --- /dev/null +++ b/libsovtoken/src/logic/indy_sdk_api/crypto.rs @@ -0,0 +1,637 @@ +use utils::{ErrorCode, IndyHandle}; + +use std::ffi::CString; +use std::time::Duration; + +use indy_sys::crypto; +use indy_sys::{ResponseEmptyCB, + ResponseStringCB, + ResponseSliceCB, + ResponseBoolCB, + ResponseStringSliceCB}; + +use utils::results::ResultHandler; +use utils::callbacks::ClosureHandler; + +pub struct Key {} + +impl Key { + /// Creates key pair in wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `my_key_json` - Optional key information as json. If none then defaults are used. + /// + /// # Example + /// my_key_json + /// { + /// "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created). + /// Can be UTF-8, base64 or hex string. + /// "crypto_type": string, // Optional (if not set then ed25519 curve is used); Currently only 'ed25519' value is supported for this field. + /// } + /// # Returns + /// verkey of generated key pair, also used as key identifier + pub fn create(wallet_handle: IndyHandle, my_key_json: Option<&str>) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Key::_create(command_handle, wallet_handle, my_key_json, cb); + + ResultHandler::one(err, receiver) + } + + /// Creates key pair in wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `my_key_json` - key information as json + /// * `timeout` - the maximum time this function waits for a response + /// + /// # Example + /// my_key_json + /// { + /// "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created). + /// Can be UTF-8, base64 or hex string. + /// "crypto_type": string, // Optional (if not set then ed25519 curve is used); Currently only 'ed25519' value is supported for this field. + /// } + /// # Returns + /// verkey of generated key pair, also used as key identifier + pub fn create_timeout(wallet_handle: IndyHandle, my_key_json: Option<&str>, timeout: Duration) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Key::_create(command_handle, wallet_handle, my_key_json, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Creates key pair in wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `my_key_json` - Optional key information as json. If none then defaults are used. + /// * `closure` - The closure that is called when finished + /// + /// # Example + /// my_key_json + /// { + /// "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created). + /// Can be UTF-8, base64 or hex string. + /// "crypto_type": string, // Optional (if not set then ed25519 curve is used); Currently only 'ed25519' value is supported for this field. + /// } + /// # Returns + /// errorcode from calling ffi function. The closure receives the return result + pub fn create_async(wallet_handle: IndyHandle, my_key_json: Option<&str>, closure: F) -> ErrorCode where F: FnMut(ErrorCode, String) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(Box::new(closure)); + + Key::_create(command_handle, wallet_handle, my_key_json, cb) + } + + fn _create(command_handle: IndyHandle, wallet_handle: IndyHandle, my_key_json: Option<&str>, cb: Option) -> ErrorCode { + let my_key_json = opt_c_str_json!(my_key_json); + + ErrorCode::from(unsafe { crypto::indy_create_key(command_handle, wallet_handle, my_key_json.as_ptr(), cb) }) + } + + /// Saves/replaces the metadata for the `verkey` in the wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id where to store the metadata + /// * `metadata` - the metadata that will be stored with the key, can be empty string + pub fn set_metadata(wallet_handle: IndyHandle, verkey: &str, metadata: &str) -> Result<(), ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let err = Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb); + + ResultHandler::empty(err, receiver) + } + + /// Saves/replaces the metadata for the `verkey` in the wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id where to store the metadata + /// * `metadata` - the metadata that will be stored with the key, can be empty string + /// * `timeout` - the maximum time this function waits for a response + pub fn set_metadata_timeout(wallet_handle: IndyHandle, verkey: &str, metadata: &str, timeout: Duration) -> Result<(), ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let err = Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb); + + ResultHandler::empty_timeout(err, receiver, timeout) + } + + /// Saves/replaces the metadata for the `verkey` in the wallet + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id where to store the metadata + /// * `metadata` - the metadata that will be stored with the key, can be empty string + /// * `closure` - The closure that is called when finished + pub fn set_metadata_async(wallet_handle: IndyHandle, verkey: &str, metadata: &str, closure: F) -> ErrorCode where F: FnMut(ErrorCode) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec(Box::new(closure)); + + Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb) + } + + fn _set_metadata(command_handle: IndyHandle, wallet_handle: IndyHandle, verkey: &str, metadata: &str, cb: Option) -> ErrorCode { + let verkey = c_str!(verkey); + let metadata = c_str!(metadata); + + ErrorCode::from(unsafe { crypto::indy_set_key_metadata(command_handle, wallet_handle, verkey.as_ptr(), metadata.as_ptr(), cb) }) + } + + /// Retrieves the metadata for the `verkey` in the wallet + /// # Argument + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id to retrieve metadata + /// # Returns + /// metadata currently stored with the key; Can be empty if no metadata was saved for this key + pub fn get_metadata(wallet_handle: IndyHandle, verkey: &str) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Key::_get_metadata(command_handle, wallet_handle, verkey, cb); + + ResultHandler::one(err, receiver) + } + + /// Retrieves the metadata for the `verkey` in the wallet + /// # Argument + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id to retrieve metadata + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// metadata currently stored with the key; Can be empty if no metadata was saved for this key + pub fn get_metadata_timeout(wallet_handle: IndyHandle, verkey: &str, timeout: Duration) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Key::_get_metadata(command_handle, wallet_handle, verkey, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Retrieves the metadata for the `verkey` in the wallet + /// # Argument + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `verkey` - the public key or key id to retrieve metadata + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn get_metadata_async(wallet_handle: IndyHandle, verkey: &str, closure: F) -> ErrorCode where F: FnMut(ErrorCode, String) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(Box::new(closure)); + + Key::_get_metadata(command_handle, wallet_handle, verkey, cb) + } + + fn _get_metadata(command_handle: IndyHandle, wallet_handle: IndyHandle, verkey: &str, cb: Option) -> ErrorCode { + let verkey = c_str!(verkey); + + ErrorCode::from(unsafe { crypto::indy_get_key_metadata(command_handle, wallet_handle, verkey.as_ptr(), cb) }) + } +} + +pub struct Crypto {} + +impl Crypto { + /// Signs a message with a key + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data to be signed + /// # Returns + /// the signature + pub fn sign(wallet_handle: IndyHandle, signer_vk: &str, message: &[u8]) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_sign(command_handle, wallet_handle, signer_vk, message, cb); + + ResultHandler::one(err, receiver) + } + + /// Signs a message with a key + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data to be signed + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// the signature + pub fn sign_timeout(wallet_handle: IndyHandle, signer_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_sign(command_handle, wallet_handle, signer_vk, message, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Signs a message with a key + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data to be signed + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn sign_async(wallet_handle: IndyHandle, signer_vk: &str, message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); + + Crypto::_sign(command_handle, wallet_handle, signer_vk, message, cb) + } + + fn _sign(command_handle: IndyHandle, wallet_handle: IndyHandle, signer_vk: &str, message: &[u8], cb: Option) -> ErrorCode { + let signer_vk = c_str!(signer_vk); + ErrorCode::from(unsafe { + crypto::indy_crypto_sign(command_handle, wallet_handle, signer_vk.as_ptr(), + message.as_ptr() as *const u8, + message.len() as u32, + cb) + }) + } + + /// Verify a signature with a verkey + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data that was signed + /// * `signature` - the signature to verify + /// # Returns + /// true if signature is valid, false otherwise + pub fn verify(signer_vk: &str, message: &[u8], signature: &[u8]) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_bool(); + + let err = Crypto::_verify(command_handle, signer_vk, message, signature, cb); + + ResultHandler::one(err, receiver) + } + + /// Verify a signature with a verkey + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data that was signed + /// * `signature` - the signature to verify + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// true if signature is valid, false otherwise + pub fn verify_timeout(signer_vk: &str, message: &[u8], signature: &[u8], timeout: Duration) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_bool(); + + let err = Crypto::_verify(command_handle, signer_vk, message, signature, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Verify a signature with a verkey + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `message` - the data that was signed + /// * `signature` - the signature to verify + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn verify_async(signer_vk: &str, message: &[u8], signature: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, bool) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_bool(Box::new(closure)); + + Crypto::_verify(command_handle, signer_vk, message, signature, cb) + } + + fn _verify(command_handle: IndyHandle, signer_vk: &str, message: &[u8], signature: &[u8], cb: Option) -> ErrorCode { + let signer_vk = c_str!(signer_vk); + + ErrorCode::from(unsafe { + crypto::indy_crypto_verify(command_handle, signer_vk.as_ptr(), + message.as_ptr() as *const u8, message.len() as u32, + signature.as_ptr() as *const u8, signature.len() as u32, cb) + }) + } + + /// Encrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `recipient_vk` - key id or verkey of the other party's key + /// * `message` - the data to be encrypted + /// # Returns + /// the encrypted message + pub fn auth_crypt(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8]) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb); + + ResultHandler::one(err, receiver) + } + + /// Encrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `recipient_vk` - key id or verkey of the other party's key + /// * `message` - the data to be encrypted + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// the encrypted message + pub fn auth_crypt_timeout(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Encrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open) + /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `recipient_vk` - key id or verkey of the other party's key + /// * `message` - the data to be encrypted + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn auth_crypt_async(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); + + Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb) + } + + fn _auth_crypt(command_handle: IndyHandle, wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], cb: Option) -> ErrorCode { + let sender_vk = c_str!(sender_vk); + let recipient_vk = c_str!(recipient_vk); + ErrorCode::from(unsafe { + crypto::indy_crypto_auth_crypt(command_handle, wallet_handle, + sender_vk.as_ptr(), + recipient_vk.as_ptr(), + message.as_ptr() as *const u8, + message.len() as u32, cb) + }) + } + + /// Decrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: the message to be decrypted + /// # Returns + /// sender's verkey and decrypted message + pub fn auth_decrypt(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8]) -> Result<(String, Vec), ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_slice(); + + let err = Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); + + ResultHandler::two(err, receiver) + } + + /// Decrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: the message to be decrypted + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// sender's verkey and decrypted message + pub fn auth_decrypt_timeout(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], timeout: Duration) -> Result<(String, Vec), ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_slice(); + + let err = Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); + + ResultHandler::two_timeout(err, receiver, timeout) + } + + /// Decrypt a message by authenticated-encryption scheme. + /// + /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. + /// Using Recipient's public key, Sender can compute a shared secret key. + /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. + /// That shared secret key can be used to verify that the encrypted message was not tampered with, + /// before eventually decrypting it. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: the message to be decrypted + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn auth_decrypt_async(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, String, Vec) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_slice(Box::new(closure)); + + Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb) + } + + fn _auth_decrypt(command_handle: IndyHandle, wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], cb: Option) -> ErrorCode { + let recipient_vk = c_str!(recipient_vk); + ErrorCode::from(unsafe { + crypto::indy_crypto_auth_decrypt(command_handle, + wallet_handle, + recipient_vk.as_ptr(), + encrypted_message.as_ptr() as *const u8, + encrypted_message.len() as u32, cb) + }) + } + + /// Encrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: verkey of message recipient + /// * `message`: a pointer to first byte of message that to be encrypted + /// + /// # Returns + /// the encrypted message + pub fn anon_crypt(recipient_vk: &str, message: &[u8]) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_anon_crypt(command_handle, recipient_vk, message, cb); + + ResultHandler::one(err, receiver) + } + + /// Encrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: verkey of message recipient + /// * `message`: a pointer to first byte of message that to be encrypted + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// the encrypted message + pub fn anon_crypt_timeout(recipient_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_anon_crypt(command_handle, recipient_vk, message, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Encrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open) + /// * `recipient_vk`: verkey of message recipient + /// * `message`: a pointer to first byte of message that to be encrypted + /// * `closure` - The closure that is called when finished + /// # Returns + /// errorcode from calling ffi function + pub fn anon_crypt_async(recipient_vk: &str, message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); + + Crypto::_anon_crypt(command_handle, recipient_vk, message, cb) + } + + fn _anon_crypt(command_handle: IndyHandle, recipient_vk: &str, message: &[u8], cb: Option) -> ErrorCode { + let recipient_vk = c_str!(recipient_vk); + ErrorCode::from(unsafe { + crypto::indy_crypto_anon_crypt(command_handle, + recipient_vk.as_ptr(), + message.as_ptr() as *const u8, + message.len() as u32, + cb) + }) + } + + /// Decrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open). + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: a pointer to first byte of message that to be decrypted + /// + /// # Returns + /// decrypted message + pub fn anon_decrypt(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8]) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); + + ResultHandler::one(err, receiver) + } + + /// Decrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open). + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: a pointer to first byte of message that to be decrypted + /// * `timeout` - the maximum time this function waits for a response + /// # Returns + /// decrypted message + pub fn anon_decrypt_timeout(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], timeout: Duration) -> Result, ErrorCode> { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let err = Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Decrypts a message by anonymous-encryption scheme. + /// + /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. + /// Only the Recipient can decrypt these messages, using its private key. + /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. + /// + /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) + /// for specific DID. + /// + /// # Arguments + /// * `wallet_handle`: wallet handle (created by Wallet::open). + /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new + /// * `encrypted_message`: a pointer to first byte of message that to be decrypted + /// * `closure` - The closure that is called when finished + /// # Returns + /// decrypted message + pub fn anon_decrypt_async(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); + + Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb) + } + + fn _anon_decrypt(command_handle: IndyHandle, wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], cb: Option) -> ErrorCode { + let recipient_vk = c_str!(recipient_vk); + ErrorCode::from(unsafe { + crypto::indy_crypto_anon_decrypt(command_handle, + wallet_handle, + recipient_vk.as_ptr(), + encrypted_message.as_ptr() as *const u8, + encrypted_message.len() as u32, cb) + }) + } +} + diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs b/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs index c45b6797d..92b507d7f 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs @@ -1,9 +1,9 @@ //! Indy-sdk crypto functions -use indy::{IndyHandle, ErrorCode}; -use indy::crypto::{Crypto, Key}; +use logic::indy_sdk_api::crypto::{Key, Crypto}; use logic::config::payment_address_config::PaymentAddressConfig; use utils::base58::serialize_bytes; use utils::json_conversion::JsonSerialize; +use utils::{ErrorCode, IndyHandle}; /** This defines the interfaces for INDY SDK crypto apis, which can be replaced with different implementations diff --git a/libsovtoken/src/logic/indy_sdk_api/mod.rs b/libsovtoken/src/logic/indy_sdk_api/mod.rs index 68f81baa0..676fbddfd 100644 --- a/libsovtoken/src/logic/indy_sdk_api/mod.rs +++ b/libsovtoken/src/logic/indy_sdk_api/mod.rs @@ -1,3 +1,4 @@ //! for all wrappers/facades/etc around rust-indy-sdk crate or indy-sdk itself -pub mod crypto_api; \ No newline at end of file +pub mod crypto_api; +pub mod crypto; diff --git a/libsovtoken/src/logic/minting.rs b/libsovtoken/src/logic/minting.rs index bfbc7630b..1a99084e9 100644 --- a/libsovtoken/src/logic/minting.rs +++ b/libsovtoken/src/logic/minting.rs @@ -1,4 +1,4 @@ -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::address; use logic::config::output_mint_config::MintRequest; diff --git a/libsovtoken/src/logic/parsers/common.rs b/libsovtoken/src/logic/parsers/common.rs index f4c1036b7..f9adb8afb 100644 --- a/libsovtoken/src/logic/parsers/common.rs +++ b/libsovtoken/src/logic/parsers/common.rs @@ -1,6 +1,6 @@ //! -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use utils::ffi_support::string_from_char_ptr; use utils::constants::txn_fields::{RESULT, STATE_PROOF}; diff --git a/libsovtoken/src/logic/parsers/error_code_parser.rs b/libsovtoken/src/logic/parsers/error_code_parser.rs index 652966932..165912c12 100644 --- a/libsovtoken/src/logic/parsers/error_code_parser.rs +++ b/libsovtoken/src/logic/parsers/error_code_parser.rs @@ -1,4 +1,4 @@ -use indy::ErrorCode; +use utils::ErrorCode; const INSUFFICIENT_FUNDS_ERROR: &str = "InsufficientFundsError"; const EXTRA_FUNDS_ERROR: &str = "ExtraFundsError"; diff --git a/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs b/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs index 670b06060..dbd0b9227 100644 --- a/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs +++ b/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use base64; use serde_json; use serde_json::Error; -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::parsers::common::{ResponseOperations, StateProof, diff --git a/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs b/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs index 7b3b9524f..f4c87156b 100644 --- a/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs +++ b/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs @@ -1,7 +1,7 @@ //! types used for parse_get_utxo_response_handler use base64; -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::parsers::common::{ResponseOperations, TXO, StateProof, ParsedSP, KeyValuesInSP, KeyValueSimpleData, extract_result_and_state_proof_from_node_reply}; diff --git a/libsovtoken/src/logic/parsers/parse_payment_response.rs b/libsovtoken/src/logic/parsers/parse_payment_response.rs index c5b1ba825..030d2df70 100644 --- a/libsovtoken/src/logic/parsers/parse_payment_response.rs +++ b/libsovtoken/src/logic/parsers/parse_payment_response.rs @@ -1,6 +1,6 @@ //! types used for parse_payment_response_handler -use indy::ErrorCode; +use utils::ErrorCode; use logic::address::add_qualifer_to_address; use logic::input::Inputs; use logic::output::Outputs; diff --git a/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs b/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs index 4d196e472..17a5ed3a5 100644 --- a/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs +++ b/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs @@ -9,7 +9,7 @@ use logic::parsers::common::{ResponseOperations, TransactionMetaData, RequireSignature}; use logic::parsers::error_code_parser; -use indy::ErrorCode; +use utils::ErrorCode; use logic::type_aliases::{ProtocolVersion, TokenAmount, TxnSeqNo, TxnVersion}; /** diff --git a/libsovtoken/src/logic/parsers/parse_verify.rs b/libsovtoken/src/logic/parsers/parse_verify.rs index 85fa94796..63b0d3b72 100644 --- a/libsovtoken/src/logic/parsers/parse_verify.rs +++ b/libsovtoken/src/logic/parsers/parse_verify.rs @@ -4,7 +4,7 @@ use logic::type_aliases::ProtocolVersion; use logic::parsers::common::ResponseOperations; use logic::output::Outputs; use logic::input::Inputs; -use indy::ErrorCode; +use utils::ErrorCode; use logic::parsers::common::UTXO; use logic::parsers::common::TXO; use logic::type_aliases::TxnSeqNo; diff --git a/libsovtoken/src/logic/payments.rs b/libsovtoken/src/logic/payments.rs index f5d00f7a8..e58a82477 100644 --- a/libsovtoken/src/logic/payments.rs +++ b/libsovtoken/src/logic/payments.rs @@ -1,6 +1,6 @@ //! Payments module contains functions for working with payments. :D -use indy::ErrorCode; +use utils::ErrorCode; use logic::config::payment_address_config::PaymentAddressConfig; use logic::indy_sdk_api::crypto_api::{CryptoAPI}; use logic::address; diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index 8f0d1ae1b..70fc7a2c6 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -4,7 +4,7 @@ use serde::Serialize; use serde_json; use std::ffi::CString; use libc::c_char; -use indy::{IndyHandle, ErrorCode, ledger::Ledger}; +use utils::{IndyHandle, ErrorCode}; use utils::ffi_support::{cstring_from_str, c_pointer_from_string}; use utils::random::rand_req_id; @@ -12,6 +12,9 @@ use utils::json_conversion::JsonSerialize; use utils::constants::general::PROTOCOL_VERSION; use logic::type_aliases::{ProtocolVersion, ReqId}; +use indy_sys::ledger::indy_multi_sign_request; +use utils::callbacks::ClosureHandler; + pub const DEFAULT_LIBSOVTOKEN_DID: &'static str = "LibsovtokenDid11111111"; #[derive(Serialize, Deserialize, Debug)] @@ -55,7 +58,13 @@ impl Request pub fn multi_sign_request(wallet_handle: IndyHandle, req: &str, dids: Vec<&str>) -> Result { let mut signed_req: String = req.to_string(); for did in dids { - signed_req = Ledger::multi_sign_request(wallet_handle, did, &signed_req)?; + let (receiver, cmd_handle, cb) = ClosureHandler::cb_ec_string(); + ErrorCode::from( + unsafe + { + indy_multi_sign_request(cmd_handle, wallet_handle, did.as_ptr() as *const _, signed_req.as_ptr() as *const _, cb) + } + ); } Ok(signed_req) } diff --git a/libsovtoken/src/logic/set_fees.rs b/libsovtoken/src/logic/set_fees.rs index d07d95d49..5203e295c 100644 --- a/libsovtoken/src/logic/set_fees.rs +++ b/libsovtoken/src/logic/set_fees.rs @@ -1,6 +1,6 @@ //! This module is for ??? -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use logic::config::set_fees_config::{SetFees, SetFeesMap}; use logic::did::Did; diff --git a/libsovtoken/src/logic/verify.rs b/libsovtoken/src/logic/verify.rs index f1b488ebc..4c0397796 100644 --- a/libsovtoken/src/logic/verify.rs +++ b/libsovtoken/src/logic/verify.rs @@ -1,6 +1,6 @@ use libc::c_char; -use indy::ErrorCode; +use utils::ErrorCode; use logic::did::Did; use utils::constants::general::{JsonCallback, JsonCallbackUnwrapped}; use utils::ffi_support::string_from_char_ptr; diff --git a/libsovtoken/src/logic/xfer_payload.rs b/libsovtoken/src/logic/xfer_payload.rs index 11605ffa2..d09ec24ae 100644 --- a/libsovtoken/src/logic/xfer_payload.rs +++ b/libsovtoken/src/logic/xfer_payload.rs @@ -14,8 +14,8 @@ use std::sync::Arc; use std::sync::Mutex; use std::collections::HashMap; -use indy::IndyHandle; -use indy::ErrorCode; +use utils::IndyHandle; +use utils::ErrorCode; use logic::address; use logic::indy_sdk_api::crypto_api::CryptoAPI; diff --git a/libsovtoken/src/utils/base58.rs b/libsovtoken/src/utils/base58.rs index 3b25aff7b..b6421cf7a 100644 --- a/libsovtoken/src/utils/base58.rs +++ b/libsovtoken/src/utils/base58.rs @@ -1,7 +1,7 @@ //! Base58 helper functions -use indy::ErrorCode; +use utils::ErrorCode; use bs58; use bs58::decode::DecodeError; /** diff --git a/libsovtoken/src/utils/callbacks.rs b/libsovtoken/src/utils/callbacks.rs index c38401fa2..60dea5529 100644 --- a/libsovtoken/src/utils/callbacks.rs +++ b/libsovtoken/src/utils/callbacks.rs @@ -1,49 +1,452 @@ -use ErrorCode; -use utils::sequence; +use utils::{ErrorCode, IndyHandle}; + +use utils::sequence::SequenceUtils; + +use std::os::raw::c_char; -use libc::c_char; use std::collections::HashMap; +use std::slice; use std::ffi::CStr; +use std::fmt::Display; use std::sync::Mutex; +use std::sync::mpsc::{channel, Receiver}; + +use indy_sys::{ResponseEmptyCB, + ResponseI32CB, + ResponseI32UsizeCB, + ResponseStringCB, + ResponseStringStringCB, + ResponseStringStringStringCB, + ResponseStringStringU64CB, + ResponseSliceCB, + ResponseStringSliceCB, + ResponseBoolCB}; + +fn log_error(e: T) { + warn!("Unable to send through libindy callback: {}", e); +} -type EcClosure = Box; -type EcCallback = Option; -type EcStringClosure = Box; -type EcStringCallback = Option; +pub struct ClosureHandler {} -pub fn closure_to_cb_ec(closure: EcClosure) -> (i32, EcCallback) { - lazy_static! { - static ref CALLBACKS: Mutex> = Default::default(); +impl ClosureHandler { + pub fn cb_ec() -> (Receiver, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err| { + sender.send(err).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec(closure); + + (receiver, command_handle, cb) } - extern "C" fn _callback(command_handle: i32, err: ErrorCode) { + pub fn convert_cb_ec(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + extern "C" fn _callback(command_handle: IndyHandle, err: i32) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + cb(ErrorCode::from(err)) + } + let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - cb(err) + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) } - let command_handle = sequence::get_next_id(); - let mut callbacks = CALLBACKS.lock().unwrap(); - callbacks.insert(command_handle, closure); + pub fn cb_ec_i32() -> (Receiver<(ErrorCode, IndyHandle)>, IndyHandle, Option) { + let (sender, receiver) = channel(); - (command_handle, Some(_callback)) -} + let closure = Box::new(move |err, val| { + sender.send((err, val)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_i32(closure); -pub fn closure_to_cb_ec_string(closure: EcStringClosure) -> (i32, EcStringCallback) { - lazy_static! { - static ref CALLBACKS: Mutex> = Default::default(); + (receiver, command_handle, cb) } - extern "C" fn _callback(command_handle: i32, err: ErrorCode, c_str: *const c_char) { + pub fn convert_cb_ec_i32(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, val: i32) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + cb(ErrorCode::from(err), val) + } + let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let metadata = unsafe { CStr::from_ptr(c_str).to_str().unwrap().to_string() }; - cb(err, metadata) + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_i32_usize() -> (Receiver<(ErrorCode, IndyHandle, usize)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val1, val2| { + sender.send((err, val1, val2)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_i32_usize(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_i32_usize(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, val1: i32, val2: usize) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + cb(ErrorCode::from(err), val1, val2) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string() -> (Receiver<(ErrorCode, String)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val| { + sender.send((err, val)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, c_str: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let metadata = rust_str!(c_str); + cb(ErrorCode::from(err), metadata) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string_string() -> (Receiver<(ErrorCode, String, String)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val1, val2| { + sender.send((err, val1, val2)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_string(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let str1 = rust_str!(str1); + let str2 = rust_str!(str2); + cb(ErrorCode::from(err), str1, str2) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string_opt_string() -> (Receiver<(ErrorCode, String, Option)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val1, val2| { + sender.send((err, val1, val2)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_opt_string(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_opt_string(closure: Box) + Send>) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex) + Send>>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let str1 = rust_str!(str1); + let str2 = opt_rust_str!(str2); + cb(ErrorCode::from(err), str1, str2) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string_string_string() -> (Receiver<(ErrorCode, String, String, String)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val1, val2, val3| { + sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); + }); + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string_string(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_string_string(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, str3: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let str1 = rust_str!(str1); + let str2 = rust_str!(str2); + let str3 = rust_str!(str3); + cb(ErrorCode::from(err), str1, str2, str3) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) } - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = sequence::get_next_id(); - callbacks.insert(command_handle, closure); + pub fn cb_ec_string_opt_string_opt_string() -> (Receiver<(ErrorCode, String, Option, Option)>, IndyHandle, Option) { + let (sender, receiver) = channel(); - (command_handle, Some(_callback)) -} \ No newline at end of file + let closure = Box::new(move |err, val1, val2, val3| { + sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); + }); + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_opt_string_opt_string(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_opt_string_opt_string(closure: Box, Option) + Send>) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex, Option) + Send>>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, str3: *const c_char) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let str1 = rust_str!(str1); + let str2 = opt_rust_str!(str2); + let str3 = opt_rust_str!(str3); + cb(ErrorCode::from(err), str1, str2, str3) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string_string_u64() -> (Receiver<(ErrorCode, String, String, u64)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, val1, val2, val3| { + sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string_u64(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_string_u64(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex >> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, arg1: u64) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let str1 = rust_str!(str1); + let str2 = rust_str!(str2); + cb(ErrorCode::from(err), str1, str2, arg1) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_slice() -> (Receiver<(ErrorCode, Vec)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, sig| { + sender.send((err, sig)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_slice(closure: Box) + Send>) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex) + Send>>> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, raw: *const u8, len: u32) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let sig = rust_slice!(raw, len); + cb(ErrorCode::from(err), sig.to_vec()) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_string_slice() -> (Receiver<(ErrorCode, String, Vec)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, key, msg| { + sender.send((err, key, msg)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_slice(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_string_slice(closure: Box) + Send>) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex) + Send> >> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, vk: *const c_char, msg_raw: *const u8, msg_len: u32) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let key = rust_str!(vk); + let msg = rust_slice!(msg_raw, msg_len); + cb(ErrorCode::from(err), key, msg.to_vec()) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } + + pub fn cb_ec_bool() -> (Receiver<(ErrorCode, bool)>, IndyHandle, Option) { + let (sender, receiver) = channel(); + + let closure = Box::new(move |err, v| { + sender.send((err, v)).unwrap_or_else(log_error); + }); + + let (command_handle, cb) = ClosureHandler::convert_cb_ec_bool(closure); + + (receiver, command_handle, cb) + } + + pub fn convert_cb_ec_bool(closure: Box) -> (IndyHandle, Option) { + lazy_static! { + static ref CALLBACKS: Mutex >> = Default::default(); + } + + extern "C" fn _callback(command_handle: IndyHandle, err: i32, valid: u8) { + let mut callbacks = CALLBACKS.lock().unwrap(); + let mut cb = callbacks.remove(&command_handle).unwrap(); + let v = valid > 0; + cb(ErrorCode::from(err), v) + } + + let mut callbacks = CALLBACKS.lock().unwrap(); + let command_handle = SequenceUtils::get_next_id(); + callbacks.insert(command_handle, closure); + + (command_handle, Some(_callback)) + } +} + +#[cfg(test)] +mod test { + use super::*; + + use std::ffi::CString; + use std::ptr::null; + + #[test] + fn cb_ec_slice() { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); + + let test_vec: Vec = vec![250, 251, 252, 253, 254, 255]; + let callback = cb.unwrap(); + callback(command_handle, 0, test_vec.as_ptr(), test_vec.len() as u32); + + let (err, slice1) = receiver.recv().unwrap(); + assert_eq!(err, ErrorCode::Success); + assert_eq!(test_vec, slice1); + } + + #[test] + fn ec_string_opt_string_null() { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_opt_string(); + + let callback = cb.unwrap(); + callback(command_handle, 0, CString::new("This is a test").unwrap().as_ptr(), null()); + + let (err, str1, str2) = receiver.recv().unwrap(); + assert_eq!(err, ErrorCode::Success); + assert_eq!(str1, "This is a test".to_string()); + assert_eq!(str2, None); + } + + #[test] + fn ec_string_opt_string_some() { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_opt_string(); + + let callback = cb.unwrap(); + callback(command_handle, 0, CString::new("This is a test").unwrap().as_ptr(), CString::new("The second string has something").unwrap().as_ptr()); + + let (err, str1, str2) = receiver.recv().unwrap(); + assert_eq!(err, ErrorCode::Success); + assert_eq!(str1, "This is a test".to_string()); + assert_eq!(str2, Some("The second string has something".to_string())); + } +} diff --git a/libsovtoken/src/utils/ffi_support.rs b/libsovtoken/src/utils/ffi_support.rs index cd1386029..bdacb4068 100644 --- a/libsovtoken/src/utils/ffi_support.rs +++ b/libsovtoken/src/utils/ffi_support.rs @@ -4,7 +4,7 @@ use libc::c_char; use std::ffi::{CString, CStr}; -use indy::ErrorCode; +use utils::ErrorCode; use utils::json_conversion::JsonDeserialize; /** @@ -112,7 +112,7 @@ mod ffi_support_tests { use serde_json::Value; use utils::general::ResultExtension; use utils::ffi_support::{str_from_char_ptr, cstring_from_str, deserialize_from_char_ptr, c_pointer_from_string, string_from_char_ptr}; - use indy::ErrorCode; + use utils::ErrorCode; static VALID_DUMMY_JSON: &'static str = r#"{"field1":"data"}"#; diff --git a/libsovtoken/src/utils/json_conversion.rs b/libsovtoken/src/utils/json_conversion.rs index 96293cea8..8fb83d458 100644 --- a/libsovtoken/src/utils/json_conversion.rs +++ b/libsovtoken/src/utils/json_conversion.rs @@ -2,7 +2,7 @@ //! Implementations for Serde Json serialization/deserialization //! -use indy::ErrorCode; +use utils::ErrorCode; use serde::{Serialize, Deserialize}; use serde_json::{Error, from_str, to_string}; @@ -80,7 +80,7 @@ macro_rules! json_c_pointer { mod json_conversion_tests { use utils::json_conversion::{JsonDeserialize, JsonSerialize}; - use indy::ErrorCode; + use utils::ErrorCode; // helper structures and data #[derive(Debug, Serialize, Deserialize)] diff --git a/libsovtoken/src/utils/macros.rs b/libsovtoken/src/utils/macros.rs new file mode 100644 index 000000000..690be8a9e --- /dev/null +++ b/libsovtoken/src/utils/macros.rs @@ -0,0 +1,54 @@ +#[macro_export] +macro_rules! c_str { + ($x:ident) => { + CString::new($x).unwrap() + }; + ($x:expr) => { + CString::new($x).unwrap() + } +} + +#[macro_export] +macro_rules! opt_c_str { + ($x:ident) => { + $x.map(|s| CString::new(s).unwrap()).unwrap_or(CString::new("").unwrap()) + } +} + +#[macro_export] +macro_rules! opt_c_str_json { + ($x:ident) => { + $x.map(|s| CString::new(s).unwrap()).unwrap_or(CString::new("{}").unwrap()) + } +} +#[macro_export] +macro_rules! opt_c_ptr { + ($x:ident, $y:ident) => { + if $x.is_some() { $y.as_ptr() } else { null() } + } +} + +#[macro_export] +macro_rules! rust_str { + ($x:ident) => { + unsafe { CStr::from_ptr($x).to_str().unwrap().to_string() } + } +} + +#[macro_export] +macro_rules! opt_rust_str { + ($x:ident) => { + if $x.is_null() { + None + } else { + Some(unsafe { CStr::from_ptr($x).to_str().unwrap().to_string() }) + } + }; +} + +#[macro_export] +macro_rules! rust_slice { + ($x:ident, $y:ident) => { + unsafe { slice::from_raw_parts($x, $y as usize) } + } +} diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index 15ceacfcd..b4d7902b9 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -9,7 +9,361 @@ pub mod general; #[macro_use] pub mod json_conversion; #[macro_use] pub mod logger; #[macro_use] pub mod conversions; +#[macro_use] pub mod macros; pub mod random; pub mod callbacks; +pub mod sequence; +pub mod results; #[cfg(any(test, feature = "integration"))] pub mod test; + + +pub type IndyHandle = i32; + + +use std::sync::mpsc; +use num_traits::{FromPrimitive, ToPrimitive}; + +#[derive(Debug, PartialEq, Copy, Clone, FromPrimitive, ToPrimitive)] +#[repr(i32)] +#[allow(dead_code)] +pub enum ErrorCode +{ + Success = 0, + + // Common errors + + // Caller passed invalid value as param 1 (null, invalid json and etc..) + CommonInvalidParam1 = 100, + + // Caller passed invalid value as param 2 (null, invalid json and etc..) + CommonInvalidParam2 = 101, + + // Caller passed invalid value as param 3 (null, invalid json and etc..) + CommonInvalidParam3 = 102, + + // Caller passed invalid value as param 4 (null, invalid json and etc..) + CommonInvalidParam4 = 103, + + // Caller passed invalid value as param 5 (null, invalid json and etc..) + CommonInvalidParam5 = 104, + + // Caller passed invalid value as param 6 (null, invalid json and etc..) + CommonInvalidParam6 = 105, + + // Caller passed invalid value as param 7 (null, invalid json and etc..) + CommonInvalidParam7 = 106, + + // Caller passed invalid value as param 8 (null, invalid json and etc..) + CommonInvalidParam8 = 107, + + // Caller passed invalid value as param 9 (null, invalid json and etc..) + CommonInvalidParam9 = 108, + + // Caller passed invalid value as param 10 (null, invalid json and etc..) + CommonInvalidParam10 = 109, + + // Caller passed invalid value as param 11 (null, invalid json and etc..) + CommonInvalidParam11 = 110, + + // Caller passed invalid value as param 11 (null, invalid json and etc..) + CommonInvalidParam12 = 111, + + // Invalid library state was detected in runtime. It signals library bug + CommonInvalidState = 112, + + // Object (json, config, key, credential and etc...) passed by library caller has invalid structure + CommonInvalidStructure = 113, + + // IO Error + CommonIOError = 114, + + // Caller passed invalid value as param 13 (null, invalid json and etc..) + CommonInvalidParam13 = 115, + + // Caller passed invalid value as param 14 (null, invalid json and etc..) + CommonInvalidParam14 = 116, + + // Caller passed invalid value as param 15 (null, invalid json and etc..) + CommonInvalidParam15 = 117, + + // Caller passed invalid value as param 16 (null, invalid json and etc..) + CommonInvalidParam16 = 118, + + // Caller passed invalid value as param 17 (null, invalid json and etc..) + CommonInvalidParam17 = 119, + + // Caller passed invalid value as param 18 (null, invalid json and etc..) + CommonInvalidParam18 = 120, + + // Caller passed invalid value as param 19 (null, invalid json and etc..) + CommonInvalidParam19 = 121, + + // Caller passed invalid value as param 20 (null, invalid json and etc..) + CommonInvalidParam20 = 122, + + // Caller passed invalid value as param 21 (null, invalid json and etc..) + CommonInvalidParam21 = 123, + + // Caller passed invalid value as param 22 (null, invalid json and etc..) + CommonInvalidParam22 = 124, + + // Caller passed invalid value as param 23 (null, invalid json and etc..) + CommonInvalidParam23 = 125, + + // Caller passed invalid value as param 24 (null, invalid json and etc..) + CommonInvalidParam24 = 126, + + // Caller passed invalid value as param 25 (null, invalid json and etc..) + CommonInvalidParam25 = 127, + + // Caller passed invalid value as param 26 (null, invalid json and etc..) + CommonInvalidParam26 = 128, + + // Caller passed invalid value as param 27 (null, invalid json and etc..) + CommonInvalidParam27 = 129, + + // Wallet errors + // Caller passed invalid wallet handle + WalletInvalidHandle = 200, + + // Unknown type of wallet was passed on create_wallet + WalletUnknownTypeError = 201, + + // Attempt to register already existing wallet type + WalletTypeAlreadyRegisteredError = 202, + + // Attempt to create wallet with name used for another exists wallet + WalletAlreadyExistsError = 203, + + // Requested entity id isn't present in wallet + WalletNotFoundError = 204, + + // Trying to use wallet with pool that has different name + WalletIncompatiblePoolError = 205, + + // Trying to open wallet that was opened already + WalletAlreadyOpenedError = 206, + + // Attempt to open encrypted wallet with invalid credentials + WalletAccessFailed = 207, + + // Input provided to wallet operations is considered not valid + WalletInputError = 208, + + // Decoding of wallet data during input/output failed + WalletDecodingError = 209, + + // Storage error occurred during wallet operation + WalletStorageError = 210, + + // Error during encryption-related operations + WalletEncryptionError = 211, + + // Requested wallet item not found + WalletItemNotFound = 212, + + // Returned if wallet's add_record operation is used with record name that already exists + WalletItemAlreadyExists = 213, + + // Returned if provided wallet query is invalid + WalletQueryError = 214, + + // Ledger errors + // Trying to open pool ledger that wasn't created before + PoolLedgerNotCreatedError = 300, + + // Caller passed invalid pool ledger handle + PoolLedgerInvalidPoolHandle = 301, + + // Pool ledger terminated + PoolLedgerTerminated = 302, + + // No concensus during ledger operation + LedgerNoConsensusError = 303, + + // Attempt to parse invalid transaction response + LedgerInvalidTransaction = 304, + + // Attempt to send transaction without the necessary privileges + LedgerSecurityError = 305, + + // Attempt to create pool ledger config with name used for another existing pool + PoolLedgerConfigAlreadyExistsError = 306, + + // Timeout for action + PoolLedgerTimeout = 307, + + // Attempt to open Pool for witch Genesis Transactions are not compatible with set Protocol version. + // Call pool.indy_set_protocol_version to set correct Protocol version. + PoolIncompatibleProtocolVersion = 308, + + // Revocation registry is full and creation of new registry is necessary + AnoncredsRevocationRegistryFullError = 400, + + AnoncredsInvalidUserRevocIndex = 401, + + // Attempt to generate master secret with duplicated name + AnoncredsMasterSecretDuplicateNameError = 404, + + AnoncredsProofRejected = 405, + + AnoncredsCredentialRevoked = 406, + + // Attempt to create credential definition with duplicated did schema pair + AnoncredsCredDefAlreadyExistsError = 407, + + // Signus errors + // Unknown format of DID entity keys + UnknownCryptoTypeError = 500, + + // Attempt to create duplicate did + DidAlreadyExistsError = 600, + + // Unknown payment method was given + UnknownPaymentMethod = 700, + + //No method were scraped from inputs/outputs or more than one were scraped + IncompatiblePaymentError = 701, + + // Insufficient funds on inputs + PaymentInsufficientFundsError = 702, + + // No such source on a ledger + PaymentSourceDoesNotExistError = 703, + + // Extra funds on inputs + PaymentExtraFundsError = 705, +} + + +impl ErrorCode { + #[allow(non_snake_case)] + #[allow(dead_code)] + #[allow(unused)] + pub fn description(&self) -> &'static str { + match self { + CommonInvalidParam1 => "Caller passed invalid value as param 1", + CommonInvalidParam2 => "Caller passed invalid value as param 2", + CommonInvalidParam3 => "Caller passed invalid value as param 3", + CommonInvalidParam4 => "Caller passed invalid value as param 4", + CommonInvalidParam5 => "Caller passed invalid value as param 5", + CommonInvalidParam6 => "Caller passed invalid value as param 6", + CommonInvalidParam7 => "Caller passed invalid value as param 7", + CommonInvalidParam8 => "Caller passed invalid value as param 8", + CommonInvalidParam9 => "Caller passed invalid value as param 9", + CommonInvalidParam10 => "Caller passed invalid value as param 10", + CommonInvalidParam11 => "Caller passed invalid value as param 11", + CommonInvalidParam12 => "Caller passed invalid value as param 12", + CommonInvalidParam13 => "Caller passed invalid value as param 13", + CommonInvalidParam14 => "Caller passed invalid value as param 14", + CommonInvalidParam15 => "Caller passed invalid value as param 15", + CommonInvalidParam16 => "Caller passed invalid value as param 16", + CommonInvalidParam17 => "Caller passed invalid value as param 17", + CommonInvalidParam18 => "Caller passed invalid value as param 18", + CommonInvalidParam19 => "Caller passed invalid value as param 19", + CommonInvalidParam20 => "Caller passed invalid value as param 20", + CommonInvalidParam21 => "Caller passed invalid value as param 21", + CommonInvalidParam22 => "Caller passed invalid value as param 22", + CommonInvalidParam23 => "Caller passed invalid value as param 23", + CommonInvalidParam24 => "Caller passed invalid value as param 24", + CommonInvalidParam25 => "Caller passed invalid value as param 25", + CommonInvalidParam26 => "Caller passed invalid value as param 26", + CommonInvalidParam27 => "Caller passed invalid value as param 27", + CommonInvalidState => "Invalid library state was detected in runtime. It signals library bug", + CommonInvalidStructure => "Object (json, config, key, credential and etc...) passed by library caller has invalid structure", + CommonIOError => "IO Error", + WalletInvalidHandle => "Caller passed invalid wallet handle", + WalletUnknownTypeError => "Caller passed invalid wallet handle", + WalletTypeAlreadyRegisteredError => "Attempt to register already existing wallet type", + WalletAlreadyExistsError => "Attempt to create wallet with name used for another exists wallet", + WalletNotFoundError => "Requested entity id isn't present in wallet", + WalletIncompatiblePoolError => "Trying to use wallet with pool that has different name", + WalletAccessFailed => "Trying to open wallet encrypted wallet with invalid credentials", + WalletAlreadyOpenedError => "Trying to open wallet that was opened already", + WalletInputError => "Input provided to wallet operations is considered not valid", + WalletDecodingError => "Decoding of wallet data during input/output failed", + WalletStorageError => "Storage error occurred during wallet operation", + WalletEncryptionError => "Error during encryption-related operations", + WalletItemNotFound => "Requested wallet item not found", + WalletItemAlreadyExists => "Returned if wallet's add_record operation is used with record name that already exists", + WalletQueryError => "Returned if provided wallet query is invalid", + PoolLedgerNotCreatedError => "Trying to open pool ledger that wasn't created before", + PoolLedgerInvalidPoolHandle => "Caller passed invalid pool ledger handle", + PoolLedgerTerminated => "Pool ledger terminated", + LedgerNoConsensusError => "No concensus during ledger operation", + LedgerInvalidTransaction => "Attempt to send unknown or incomplete transaction message", + LedgerSecurityError => "Attempt to send transaction without the necessary privileges", + PoolLedgerConfigAlreadyExistsError => "Attempt to create pool ledger config with name used for another existing pool", + PoolLedgerTimeout => "Timeout for action", + PoolIncompatibleProtocolVersion => "Attempt to open Pool for witch Genesis Transactions are not compatible with set Protocol version. Set the correct Protocol version first.", + AnoncredsRevocationRegistryFullError => "Revocation registry is full and creation of new registry is necessary", + AnoncredsInvalidUserRevocIndex => "Invalid user revocation index", + AnoncredsMasterSecretDuplicateNameError => "Attempt to generate master secret with duplicated name", + AnoncredsProofRejected => "Proof rejected", + AnoncredsCredentialRevoked => "Credential revoked", + AnoncredsCredDefAlreadyExistsError => "Credential definition already exists", + UnknownCryptoTypeError => "Unknown format of DID entity keys", + DidAlreadyExistsError => "Did already exists", + UnknownPaymentMethod => "Unknown payment method was given", + IncompatiblePaymentError => "Multiple different payment methods were specified", + PaymentInsufficientFundsError => "Payment cannot be processed because there was insufficient funds", + PaymentSourceDoesNotExistError => "No such source on a ledger.", + PaymentExtraFundsError => "Payment cannot be processed because there were more funds than required", + } + } + + pub fn is_ok(&self) -> bool { + *self == ErrorCode::Success + } + + pub fn is_err(&self) -> bool { + *self != ErrorCode::Success + } + + pub fn try_err(&self) -> Result<(), ErrorCode> { + if self.is_err() { + return Err(*self) + } + Ok(()) + } +} + +impl From for ErrorCode { + fn from(i: i32) -> Self { + let conversion = num_traits::FromPrimitive::from_i32(i); + if conversion.is_some() { + conversion.unwrap() + } else { + panic!("Unable to convert from {}, unknown error code", i) + } + } +} + +impl Into for ErrorCode { + fn into(self) -> i32 { + num_traits::ToPrimitive::to_i32(&self).unwrap() + } +} + +impl From for ErrorCode { + fn from(err: mpsc::RecvTimeoutError) -> Self { + match err { + mpsc::RecvTimeoutError::Timeout => { + warn!("Timed out waiting for libindy to call back"); + ErrorCode::CommonIOError + }, + mpsc::RecvTimeoutError::Disconnected => { + warn!("Channel to libindy was disconnected unexpectedly"); + ErrorCode::CommonIOError + } + } + } +} + +impl From for ErrorCode { + fn from(e: mpsc::RecvError) -> Self { + warn!("Channel returned an error - {:?}", e); + ErrorCode::CommonIOError + } +} \ No newline at end of file diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs new file mode 100644 index 000000000..ff92fcf43 --- /dev/null +++ b/libsovtoken/src/utils/results.rs @@ -0,0 +1,91 @@ +use utils::ErrorCode; + +use std::sync::mpsc::Receiver; +use std::time::Duration; + +pub struct ResultHandler {} + +impl ResultHandler { + pub fn empty(err: ErrorCode, receiver: Receiver) -> Result<(), ErrorCode> { + err.try_err()?; + match receiver.recv() { + Ok(err) => err.try_err(), + Err(e) => Err(ErrorCode::from(e)) + } + } + + pub fn empty_timeout(err: ErrorCode, receiver: Receiver, timeout: Duration) -> Result<(), ErrorCode> { + err.try_err()?; + + match receiver.recv_timeout(timeout) { + Ok(err) => err.try_err(), + Err(e) => Err(ErrorCode::from(e)) + } + } + + pub fn one(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>) -> Result { + err.try_err()?; + + let (err, val) = receiver.recv()?; + + err.try_err()?; + + Ok(val) + } + + pub fn one_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>, timeout: Duration) -> Result { + err.try_err()?; + + match receiver.recv_timeout(timeout) { + Ok((err, val)) => { + err.try_err()?; + Ok(val) + }, + Err(e) => Err(ErrorCode::from(e)) + } + } + + pub fn two(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>) -> Result<(T1, T2), ErrorCode> { + err.try_err()?; + + let (err, val, val2) = receiver.recv()?; + + err.try_err()?; + + Ok((val, val2)) + } + + pub fn two_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>, timeout: Duration) -> Result<(T1, T2), ErrorCode> { + err.try_err()?; + + match receiver.recv_timeout(timeout) { + Ok((err, val1, val2)) => { + err.try_err()?; + Ok((val1, val2)) + }, + Err(e) => Err(ErrorCode::from(e)) + } + } + + pub fn three(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>) -> Result<(T1, T2, T3), ErrorCode> { + err.try_err()?; + + let (err, val, val2, val3) = receiver.recv()?; + + err.try_err()?; + + Ok((val, val2, val3)) + } + + pub fn three_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>, timeout: Duration) -> Result<(T1, T2, T3), ErrorCode> { + err.try_err()?; + + match receiver.recv_timeout(timeout) { + Ok((err, val1, val2, val3)) => { + err.try_err()?; + Ok((val1, val2, val3)) + }, + Err(e) => Err(ErrorCode::from(e)) + } + } +} diff --git a/libsovtoken/src/utils/sequence.rs b/libsovtoken/src/utils/sequence.rs new file mode 100644 index 000000000..b1cfdf7f6 --- /dev/null +++ b/libsovtoken/src/utils/sequence.rs @@ -0,0 +1,13 @@ +use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; + +pub struct SequenceUtils {} + +lazy_static! { + static ref IDS_COUNTER: AtomicUsize = ATOMIC_USIZE_INIT; //TODO use AtomicI32 +} + +impl SequenceUtils { + pub fn get_next_id() -> i32 { + (IDS_COUNTER.fetch_add(1, Ordering::SeqCst) + 1) as i32 + } +} \ No newline at end of file diff --git a/libsovtoken/src/utils/test/callbacks.rs b/libsovtoken/src/utils/test/callbacks.rs index f8cde58fe..698f0738e 100644 --- a/libsovtoken/src/utils/test/callbacks.rs +++ b/libsovtoken/src/utils/test/callbacks.rs @@ -4,7 +4,7 @@ **These should only be used for testing** */ -use indy::ErrorCode; +use utils::ErrorCode; use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; use std::sync::Mutex; use std::sync::mpsc::{channel, Receiver}; @@ -12,7 +12,7 @@ use std::collections::HashMap; use std::os::raw::c_char; use std::ffi::CStr; -// use indy::ErrorCode; +// use utils::ErrorCode; type Callbacks = Mutex>>; diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index a02d9387a..5cb0e1d39 100644 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -7,7 +7,7 @@ mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use indy::ErrorCode; +use utils::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index 54fdcfb2b..4e31d5cc9 100644 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -8,7 +8,7 @@ mod utils; use sovtoken::utils::random::rand_string; use std::{thread, time}; use std::collections::HashMap; -use indy::ErrorCode; +use utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index 90f348731..18a3ddd36 100644 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -5,7 +5,7 @@ extern crate sovtoken; mod utils; -use indy::ErrorCode; +use utils::ErrorCode; use std::collections::HashMap; use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index d104f7245..ac800c3fe 100644 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -4,7 +4,7 @@ extern crate sovtoken; extern crate indy; mod utils; -use indy::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use std::{thread, time}; diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index ef0d2942f..20b4b0267 100644 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -7,7 +7,7 @@ extern crate sovtoken; mod utils; use std::{thread, time}; use std::collections::HashMap; -use indy::ErrorCode; +use utils::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs index 2fe0b5890..f02b97aa0 100644 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -4,7 +4,7 @@ extern crate sovtoken; extern crate indy; // lib-sdk project -use indy::ErrorCode; +use utils::ErrorCode; use sovtoken::api::sovtoken_init; diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs index 61d2f58db..5f8b5d3db 100644 --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -6,7 +6,7 @@ extern crate indy; // lib-sdk project extern crate bs58; pub mod utils; -use indy::ErrorCode; +use utils::ErrorCode; use libc::c_char; use sovtoken::utils::ffi_support; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index e7445722a..73107217b 100644 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -18,7 +18,7 @@ use std::ptr; use std::ffi::CString; use indy::utils::results::ResultHandler; -use indy::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::parse_mint_response::ParseMintResponse; diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index 6d0252e9a..844ad0bd8 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -8,7 +8,7 @@ extern crate bs58; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -use indy::ErrorCode; +use utils::ErrorCode; use indy::utils::results::ResultHandler; use libc::c_char; use sovtoken::logic::address; diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index 9191801b9..75035c17c 100644 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -6,7 +6,7 @@ extern crate indy; use std::{thread, time}; mod utils; -use indy::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use sovtoken::logic::parsers::common::TXO; diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index 1410f86e0..afbc94e46 100644 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -19,7 +19,7 @@ use std::ptr; use std::ffi::CString; use std::time::Duration; -use indy::ErrorCode; +use utils::ErrorCode; use sovtoken::logic::config::payment_address_config::PaymentAddressConfig; use sovtoken::logic::address::unqualified_address_from_address; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index 6f078be93..78ae13ce2 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -4,7 +4,7 @@ extern crate sovtoken; extern crate indy; extern crate serde_json; -use indy::ErrorCode; +use utils::ErrorCode; static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ "op": "REPLY", diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index f5b139651..6a53db377 100644 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -7,7 +7,7 @@ extern crate indy; // lib-sdk project pub mod utils; -use indy::ErrorCode; +use utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index eb67c0df3..0a03bf5de 100644 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -1,6 +1,6 @@ extern crate indy; -use indy::ErrorCode; +use utils::ErrorCode; type DidAndVerKey = (String, String); diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs index 6a790f373..3171eddb1 100644 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,6 +1,6 @@ extern crate indy; -use indy::ErrorCode; +use utils::ErrorCode; use std::time::Duration; const SUBMIT_RETRY_CNT: usize = 3; diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs index 39b5aed8b..dedef3e71 100644 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -4,7 +4,7 @@ extern crate serde_json; use std::collections::HashMap; use std::str::FromStr; -use indy::ErrorCode; +use utils::ErrorCode; use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; From 50c06348c37ecaf2b25c4779ff3d367ef0f736a8 Mon Sep 17 00:00:00 2001 From: Adam Burdett Date: Fri, 8 Mar 2019 16:32:25 -0700 Subject: [PATCH 54/91] start of fixing test dir. Signed-off-by: Adam Burdett --- libsovtoken/Cargo.toml | 1 - libsovtoken/src/api/mod.rs | 5 +- libsovtoken/src/logic/build_payment.rs | 7 +- libsovtoken/tests/add_fees_for_attrib_test.rs | 3 +- .../tests/add_fees_for_cred_def_test.rs | 3 +- libsovtoken/tests/add_fees_for_nym.rs | 3 +- .../tests/add_fees_for_revoke_reg_def.rs | 3 +- libsovtoken/tests/add_fees_for_schema_test.rs | 3 +- libsovtoken/tests/api_tests.rs | 3 +- .../tests/build_add_fees_txn_handler_test.rs | 1 - .../tests/build_fees_txn_handler_test.rs | 3 +- .../build_get_utxo_request_handler_test.rs | 1 - .../tests/build_mint_txn_handler_test.rs | 12 ++-- .../tests/build_payment_req_handler_test.rs | 3 +- libsovtoken/tests/build_verify_req_test.rs | 4 +- libsovtoken/tests/create_payment_tests.rs | 3 +- .../tests/parse_payment_response_test.rs | 3 +- libsovtoken/tests/payment_chaos_tests.rs | 3 +- libsovtoken/tests/utils/did.rs | 64 +++++++++++++++---- libsovtoken/tests/utils/ledger.rs | 4 +- libsovtoken/tests/utils/mint.rs | 3 +- libsovtoken/tests/utils/payment/address.rs | 1 - libsovtoken/tests/utils/payment/fees.rs | 2 - libsovtoken/tests/utils/payment/get_utxo.rs | 1 - libsovtoken/tests/utils/pool.rs | 1 - libsovtoken/tests/utils/setup.rs | 1 - libsovtoken/tests/utils/wallet.rs | 58 +++++++++++++++-- 27 files changed, 128 insertions(+), 71 deletions(-) mode change 100644 => 100755 libsovtoken/Cargo.toml mode change 100644 => 100755 libsovtoken/src/api/mod.rs mode change 100644 => 100755 libsovtoken/src/logic/build_payment.rs mode change 100644 => 100755 libsovtoken/tests/add_fees_for_attrib_test.rs mode change 100644 => 100755 libsovtoken/tests/add_fees_for_cred_def_test.rs mode change 100644 => 100755 libsovtoken/tests/add_fees_for_nym.rs mode change 100644 => 100755 libsovtoken/tests/add_fees_for_revoke_reg_def.rs mode change 100644 => 100755 libsovtoken/tests/add_fees_for_schema_test.rs mode change 100644 => 100755 libsovtoken/tests/api_tests.rs mode change 100644 => 100755 libsovtoken/tests/build_add_fees_txn_handler_test.rs mode change 100644 => 100755 libsovtoken/tests/build_fees_txn_handler_test.rs mode change 100644 => 100755 libsovtoken/tests/build_get_utxo_request_handler_test.rs mode change 100644 => 100755 libsovtoken/tests/build_mint_txn_handler_test.rs mode change 100644 => 100755 libsovtoken/tests/build_payment_req_handler_test.rs mode change 100644 => 100755 libsovtoken/tests/build_verify_req_test.rs mode change 100644 => 100755 libsovtoken/tests/create_payment_tests.rs mode change 100644 => 100755 libsovtoken/tests/parse_payment_response_test.rs mode change 100644 => 100755 libsovtoken/tests/payment_chaos_tests.rs mode change 100644 => 100755 libsovtoken/tests/utils/did.rs mode change 100644 => 100755 libsovtoken/tests/utils/ledger.rs mode change 100644 => 100755 libsovtoken/tests/utils/mint.rs mode change 100644 => 100755 libsovtoken/tests/utils/payment/address.rs mode change 100644 => 100755 libsovtoken/tests/utils/payment/fees.rs mode change 100644 => 100755 libsovtoken/tests/utils/payment/get_utxo.rs mode change 100644 => 100755 libsovtoken/tests/utils/pool.rs mode change 100644 => 100755 libsovtoken/tests/utils/setup.rs mode change 100644 => 100755 libsovtoken/tests/utils/wallet.rs diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml old mode 100644 new mode 100755 index dd1530ffa..eaef97060 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -31,7 +31,6 @@ log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" indy-sys = "1.8.1" -indy = "=1.6.7" num-traits = "0.2" num-derive = "0.2" serde = "1.0" diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs old mode 100644 new mode 100755 index c250a212e..3df18457c --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -808,7 +808,7 @@ pub extern "C" fn build_verify_req_handler( ) -> i32 { trace!("api::build_verify_req called >> wallet_handle {}", wallet_handle); - let (did, txo, cb) = match verify::deserialize(did, txo, cb) { +/* let (did, txo, cb) = match verify::deserialize(did, txo, cb) { Ok(a) => a, Err(ec) => { trace!("api::build_verify_req << res {:?}", ec); @@ -829,7 +829,8 @@ pub extern "C" fn build_verify_req_handler( trace!("api::build_verify_req << res {:?}", res); - res as i32 + res as i32*/ + 1 as i32 } /// Parse response of verification of txo diff --git a/libsovtoken/src/logic/build_payment.rs b/libsovtoken/src/logic/build_payment.rs old mode 100644 new mode 100755 index 1c644ec14..ac5128063 --- a/libsovtoken/src/logic/build_payment.rs +++ b/libsovtoken/src/logic/build_payment.rs @@ -171,7 +171,6 @@ mod test_deserialize_inputs { #[cfg(test)] mod test_handle_signing { use super::*; - use indy::utils::results::ResultHandler; use logic::request::Request; use utils::test::{default, callbacks}; @@ -179,7 +178,11 @@ mod test_handle_signing { fn call_handle_signing(input_payload: Result) -> Result { let (receiver, command_handle, cb) = callbacks::cb_ec_string(); handle_signing(command_handle, input_payload, cb.unwrap()); - ResultHandler::one(ErrorCode::Success, receiver) + let err = ErrorCode::Success; + err.try_err()?; + let (err, val) = receiver.recv()?; + err.try_err()?; + Ok(val) } #[test] diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs old mode 100644 new mode 100755 index 5cb0e1d39..5e9c1e236 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -1,13 +1,12 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; extern crate sovtoken; mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs old mode 100644 new mode 100755 index 4e31d5cc9..3b7f878ca --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -1,6 +1,5 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; extern crate sovtoken; @@ -8,7 +7,7 @@ mod utils; use sovtoken::utils::random::rand_string; use std::{thread, time}; use std::collections::HashMap; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs old mode 100644 new mode 100755 index 18a3ddd36..8cc5a6201 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -1,11 +1,10 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; extern crate sovtoken; mod utils; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use std::collections::HashMap; use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs old mode 100644 new mode 100755 index ac800c3fe..fa88199b0 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -1,10 +1,9 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; mod utils; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use std::{thread, time}; diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs old mode 100644 new mode 100755 index 20b4b0267..4e80d5a66 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -1,13 +1,12 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; extern crate sovtoken; mod utils; use std::{thread, time}; use std::collections::HashMap; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs old mode 100644 new mode 100755 index f02b97aa0..8ef1db913 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -2,9 +2,8 @@ //! tests for API related functions extern crate sovtoken; -extern crate indy; // lib-sdk project -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::api::sovtoken_init; diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs old mode 100644 new mode 100755 index 38850b604..52ab9d808 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -1,7 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; pub mod utils; use std::sync::mpsc::channel; diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs old mode 100644 new mode 100755 index 5f8b5d3db..aa6ab0e3f --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -2,11 +2,10 @@ #[macro_use] extern crate serde_derive; extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project extern crate bs58; pub mod utils; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use libc::c_char; use sovtoken::utils::ffi_support; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/build_get_utxo_request_handler_test.rs b/libsovtoken/tests/build_get_utxo_request_handler_test.rs old mode 100644 new mode 100755 index a6575f1d7..499c9e311 --- a/libsovtoken/tests/build_get_utxo_request_handler_test.rs +++ b/libsovtoken/tests/build_get_utxo_request_handler_test.rs @@ -1,7 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; mod utils; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs old mode 100644 new mode 100755 index 73107217b..c102f97a6 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -1,13 +1,9 @@ extern crate libc; +#[macro_use] extern crate serde_derive; +#[macro_use] extern crate serde_json; +#[macro_use] extern crate log; extern crate sovtoken; -#[macro_use] -extern crate serde_derive; -extern crate indy; // lib-sdk project -#[macro_use] -extern crate serde_json; -#[macro_use] -extern crate log; mod utils; @@ -18,7 +14,7 @@ use std::ptr; use std::ffi::CString; use indy::utils::results::ResultHandler; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use utils::wallet::Wallet; use utils::parse_mint_response::ParseMintResponse; diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs old mode 100644 new mode 100755 index 844ad0bd8..ee8229988 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -1,14 +1,13 @@ extern crate env_logger; extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project extern crate bs58; #[macro_use] extern crate log; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use indy::utils::results::ResultHandler; use libc::c_char; use sovtoken::logic::address; diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs old mode 100644 new mode 100755 index 75035c17c..d493b3078 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -1,12 +1,12 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; +extern crate sovtoken; use std::{thread, time}; mod utils; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use sovtoken::logic::parsers::common::TXO; diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs old mode 100644 new mode 100755 index afbc94e46..c3492c263 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -11,7 +11,6 @@ extern crate rand; extern crate bs58; extern crate sovtoken; -extern crate indy; // lib-sdk project use libc::c_char; use rand::Rng; @@ -19,7 +18,7 @@ use std::ptr; use std::ffi::CString; use std::time::Duration; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::logic::config::payment_address_config::PaymentAddressConfig; use sovtoken::logic::address::unqualified_address_from_address; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs old mode 100644 new mode 100755 index 78ae13ce2..ed49ec497 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -1,10 +1,9 @@ extern crate env_logger; extern crate libc; extern crate sovtoken; -extern crate indy; extern crate serde_json; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ "op": "REPLY", diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs old mode 100644 new mode 100755 index 6a53db377..b57c44b7f --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -1,13 +1,12 @@ extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; pub mod utils; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs old mode 100644 new mode 100755 index 0a03bf5de..f74a001f7 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -1,6 +1,5 @@ -extern crate indy; - -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; +use sovtoken::utils::callbacks::ClosureHandler; type DidAndVerKey = (String, String); @@ -32,17 +31,36 @@ pub fn create_nym( did_trustee: &str, role: NymRole ) -> Result { - let (did, verkey) = indy::did::Did::new(wallet_handle, "{}").unwrap(); - - let req_nym = indy::ledger::Ledger::build_nym_request( - did_trustee, - &did, - Some(&verkey), - None, - role.prepare() - )?; + let (did, verkey) = _new_did(wallet_handle,"{}").unwrap(); + + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let submitter_did = c_str!(did_trustee); + let target_did = c_str!(&did); + + let verkey_str = opt_c_str!(Some(&verkey)); + let data_str = opt_c_str!(None); + let role_str = opt_c_str!(role.prepare()); + + let err = ErrorCode::from(unsafe { + indy_sys::indy_build_nym_request(command_handle, + submitter_did.as_ptr(), + target_did.as_ptr(), + opt_c_ptr!(verkey, verkey_str), + opt_c_ptr!(data, data_str), + opt_c_ptr!(role, role_str), + cb) + }); + err.try_err()?; + let (err, val) = receiver.recv()?; + err.try_err()?; + let req_nym = Ok(val)?; + + //indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym)?; + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym)?; + let err = Ledger::_sign_and_submit_request(command_handle, pool_handle, wallet_handle, submitter_did, request_json, cb); + Ok((did, verkey)) } @@ -94,7 +112,8 @@ pub fn initial_trustee(wallet_handle: i32) -> DidAndVerKey { "seed":"000000000000000000000000Trustee1" }).to_string(); - indy::did::Did::new(wallet_handle, &first_json_seed).unwrap() + _new_did(wallet_handle,&first_json_seed).unwrap(); + } /** @@ -106,3 +125,20 @@ pub fn did_str_from_trustees<'a>(trustees: &'a Vec) -> Vec<&'a str .map(|(ref did, _)| did.as_str()) .collect() } + +fn _new_did(wallet_handle: i32, did_json: &str) -> Result<(String, String), ErrorCode>{ + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let did_json = c_str!(did_json); + + ErrorCode::from(unsafe { + indy_sys::indy_create_and_store_my_did(command_handle, wallet_handle, did_json.as_ptr(), cb) + }); + err.try_err()?; + + let (err, val, val2) = receiver.recv()?; + + err.try_err()?; + + Ok((val, val2)); +} \ No newline at end of file diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs old mode 100644 new mode 100755 index 3171eddb1..ed2c27b37 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,6 +1,4 @@ -extern crate indy; - -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use std::time::Duration; const SUBMIT_RETRY_CNT: usize = 3; diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs old mode 100644 new mode 100755 index dedef3e71..69f5bd6b5 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -1,10 +1,9 @@ -extern crate indy; extern crate serde_json; use std::collections::HashMap; use std::str::FromStr; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; diff --git a/libsovtoken/tests/utils/payment/address.rs b/libsovtoken/tests/utils/payment/address.rs old mode 100644 new mode 100755 index d77a0b85f..a4f629d1e --- a/libsovtoken/tests/utils/payment/address.rs +++ b/libsovtoken/tests/utils/payment/address.rs @@ -4,7 +4,6 @@ Helpers dealing with addresses For integration tests */ -use indy::payments::Payment; use utils::wallet::Wallet; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/payment/fees.rs b/libsovtoken/tests/utils/payment/fees.rs old mode 100644 new mode 100755 index 242438161..6dae18b11 --- a/libsovtoken/tests/utils/payment/fees.rs +++ b/libsovtoken/tests/utils/payment/fees.rs @@ -1,5 +1,3 @@ -extern crate indy; - use sovtoken::logic::config::set_fees_config::SetFees; use sovtoken::logic::request::Request; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/payment/get_utxo.rs b/libsovtoken/tests/utils/payment/get_utxo.rs old mode 100644 new mode 100755 index e7bf5047f..5e9248c17 --- a/libsovtoken/tests/utils/payment/get_utxo.rs +++ b/libsovtoken/tests/utils/payment/get_utxo.rs @@ -1,4 +1,3 @@ -extern crate indy; extern crate serde_json; extern crate sovtoken; diff --git a/libsovtoken/tests/utils/pool.rs b/libsovtoken/tests/utils/pool.rs old mode 100644 new mode 100755 index b2dfbdf91..48fc447ce --- a/libsovtoken/tests/utils/pool.rs +++ b/libsovtoken/tests/utils/pool.rs @@ -4,7 +4,6 @@ use std::fs; use utils::environment::EnvironmentUtils; use std::io::Write; use sovtoken::utils::random::rand_string; -extern crate indy; pub fn create_pool_config() -> String { let path = create_genesis_txn_file_for_test_pool("p1", None, None); diff --git a/libsovtoken/tests/utils/setup.rs b/libsovtoken/tests/utils/setup.rs old mode 100644 new mode 100755 index 21d246de8..5008604ae --- a/libsovtoken/tests/utils/setup.rs +++ b/libsovtoken/tests/utils/setup.rs @@ -1,7 +1,6 @@ use std::collections::HashMap; use std::iter::FromIterator; -use indy; use sovtoken; use sovtoken::logic::parsers::common::ResponseOperations; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs old mode 100644 new mode 100755 index c9bd3cd2c..e3a8c71c7 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -3,12 +3,11 @@ */ extern crate env_logger; -extern crate indy; extern crate sovtoken; -use self::indy::ErrorCode; -use self::indy::wallet::Wallet as IndyWallet; +use sovtoken::utils::ErrorCode; use self::sovtoken::utils::random::rand_string; +use sovtoken::utils::callbacks::ClosureHandler; static USEFUL_CREDENTIALS : &'static str = r#" { @@ -69,23 +68,68 @@ impl Wallet { fn open(&mut self) -> Result { let config : String = Wallet::create_wallet_config(&self.name); - let handle = IndyWallet::open(&config, USEFUL_CREDENTIALS)?; + + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let config = c_str!(&config); + let credentials = c_str!(USEFUL_CREDENTIALS); + + let _err = ErrorCode::from(unsafe { + indy_sys::indy_open_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) + }); + + _err.try_err()?; + let (_err, val) = receiver.recv()?; + _err.try_err()?; + let handle = Ok(val); + self.handle = handle; return Ok(handle); } fn create(&self) -> Result<(), ErrorCode> { let config = Wallet::create_wallet_config(&self.name); - return IndyWallet::create(&config, USEFUL_CREDENTIALS) + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let config = c_str!(&config); + let credentials = c_str!(USEFUL_CREDENTIALS); + + let err =ErrorCode::from(unsafe { + indy_sys::indy_create_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) + }); + err.try_err()?; + match receiver.recv() { + Ok(err) => err.try_err(), + Err(e) => Err(ErrorCode::from(e)) + } } fn close(&self) -> Result<(), ErrorCode> { - IndyWallet::close(self.handle) + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let err = ErrorCode::from(unsafe { indy_sys::indy_close_wallet(command_handle, self.handle, cb) }); + err.try_err()?; + match receiver.recv() { + Ok(err) => err.try_err(), + Err(e) => Err(ErrorCode::from(e)) + } } fn delete(&self) -> Result<(), ErrorCode> { let config : String = Wallet::create_wallet_config(&self.name); - return IndyWallet::delete(&config, USEFUL_CREDENTIALS) + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let config = c_str!(&config); + let credentials = c_str!(USEFUL_CREDENTIALS); + + let err = ErrorCode::from(unsafe { + indy_sys::indy_delete_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) + }); + err.try_err()?; + match receiver.recv() { + Ok(err) => err.try_err(), + Err(e) => Err(ErrorCode::from(e)) + } } } From ed6290c0076ec4c6e0c4afb3e3dc82d9982b614f Mon Sep 17 00:00:00 2001 From: Adam Burdett Date: Mon, 11 Mar 2019 10:49:18 -0600 Subject: [PATCH 55/91] new bugs. Signed-off-by: Adam Burdett --- libsovtoken/tests/add_fees_for_attrib_test.rs | 2 +- .../tests/add_fees_for_cred_def_test.rs | 2 +- libsovtoken/tests/add_fees_for_nym.rs | 2 +- .../tests/add_fees_for_revoke_reg_def.rs | 2 +- libsovtoken/tests/add_fees_for_schema_test.rs | 2 +- libsovtoken/tests/api_tests.rs | 2 +- .../tests/build_add_fees_txn_handler_test.rs | 2 +- .../tests/build_fees_txn_handler_test.rs | 2 +- .../build_get_utxo_request_handler_test.rs | 2 +- .../tests/build_mint_txn_handler_test.rs | 2 +- .../tests/build_payment_req_handler_test.rs | 2 +- libsovtoken/tests/build_verify_req_test.rs | 3 +- libsovtoken/tests/create_payment_tests.rs | 2 +- .../tests/parse_payment_response_test.rs | 93 ------------------- libsovtoken/tests/payment_chaos_tests.rs | 2 +- libsovtoken/tests/utils/did.rs | 18 +++- libsovtoken/tests/utils/ledger.rs | 14 ++- libsovtoken/tests/utils/mint.rs | 32 ++++++- 18 files changed, 70 insertions(+), 116 deletions(-) delete mode 100755 libsovtoken/tests/parse_payment_response_test.rs diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index 5e9c1e236..d9e0036c1 100755 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; use utils::setup::{Setup, SetupConfig}; diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index 3b7f878ca..4ff2408be 100755 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index 8cc5a6201..405116d92 100755 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index fa88199b0..3850d90bc 100755 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; use sovtoken::utils::ErrorCode; diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index 4e80d5a66..752e66577 100755 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs index 8ef1db913..c008ecbf5 100755 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -1,7 +1,7 @@ //! //! tests for API related functions -extern crate sovtoken; +#[macro_use] extern crate sovtoken; use sovtoken::utils::ErrorCode; use sovtoken::api::sovtoken_init; diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index 52ab9d808..dca557ebb 100755 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; pub mod utils; use std::sync::mpsc::channel; diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs index aa6ab0e3f..60ff85b5c 100755 --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -1,7 +1,7 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate libc; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; extern crate bs58; pub mod utils; diff --git a/libsovtoken/tests/build_get_utxo_request_handler_test.rs b/libsovtoken/tests/build_get_utxo_request_handler_test.rs index 499c9e311..3257d5937 100755 --- a/libsovtoken/tests/build_get_utxo_request_handler_test.rs +++ b/libsovtoken/tests/build_get_utxo_request_handler_test.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index c102f97a6..ce979c3ac 100755 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -3,7 +3,7 @@ extern crate libc; #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; #[macro_use] extern crate log; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; mod utils; diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index ee8229988..b521da0c0 100755 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -1,6 +1,6 @@ extern crate env_logger; extern crate libc; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; extern crate bs58; #[macro_use] extern crate log; diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index d493b3078..619e77591 100755 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -1,7 +1,6 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate sovtoken; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; use std::{thread, time}; diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index c3492c263..5ae1c521f 100755 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -10,7 +10,7 @@ extern crate rand; #[macro_use] extern crate serde_derive; extern crate bs58; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; use libc::c_char; use rand::Rng; diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs deleted file mode 100755 index ed49ec497..000000000 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ /dev/null @@ -1,93 +0,0 @@ -extern crate env_logger; -extern crate libc; -extern crate sovtoken; -extern crate serde_json; - -use sovtoken::utils::ErrorCode; - -static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ - "op": "REPLY", - "protocolVersion": 2, - "result": - { - "txn": - { - "data": - { - "inputs": - [ - { - "address": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", - "seqNo": 1 - } - ], - "outputs": - [ - { - "address": "2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es", - "amount": 13 - }, - { - "address": "24xHHVDRq97Hss5BxiTciEDsve7nYNx1pxAMi9RAvcWMouviSY", - "amount": 13 - }, - { - "address": "mNYFWv9vvoQVCVLrSpbU7ZScthjNJMQxMs3gREQrwcJC1DsG5", - "amount": 13 - }, - { - "address": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", - "amount": 1 - } - ] - }, - "metadata": - { - "digest": "228af6a0c773cbbd575bf4e16f9144c2eaa615fa81fdcc3d06b83e20a92e5989", - "from": "6baBEYA94sAphWBA5efEsaA6X2wCdyaH7PXuBtv2H5S1", - "reqId": 152968241 - }, - "protocolVersion": 2, - "type": "10001" - }, - "reqSignature": - { - "type": "ED25519", - "values": - [ - { - "from": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", - "value": "4fFVD1HSVLaVdMpjHU168eviqWDxKrWYx1fRxw4DDLjg4XZXwya7UdcvVty81pYFcng244tS36WbshCeznC8ZN5Z" - } - ] - }, - "txnMetadata": - { - "seqNo": 2, - "txnTime": 1529682415 - }, - "ver": "1", - "auditPath": ["5NtSQUXaZvETP1KEWi8LaxSb9gGa2Qj31xKQoimNxCAT"], - "rootHash": "GJFwiQt9r7n25PqM1oXBtRceXCeoqoCBcJmRH1c8fVTs" - } -}"#; - -#[test] -pub fn parse_payment_response_works() { - sovtoken::api::sovtoken_init(); - let resp = indy::payments::Payment::parse_payment_response("sov", PARSE_PAYMENT_RESPONSE_JSON).unwrap(); - let resp: Vec = serde_json::from_str(&resp).unwrap(); - assert_eq!(resp.len(), 4); - for utxo in resp { - utxo["recipient"].as_str().unwrap(); - utxo["receipt"].as_str().unwrap(); - utxo["amount"].as_u64().unwrap(); - } -} - -#[test] -pub fn parse_payment_response_works_for_invalid() { - sovtoken::api::sovtoken_init(); - let resp = indy::payments::Payment::parse_payment_response("sov", "123").unwrap_err(); - assert_eq!(resp, ErrorCode::CommonInvalidStructure); -} \ No newline at end of file diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index b57c44b7f..99ade6d02 100755 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -1,5 +1,5 @@ extern crate libc; -extern crate sovtoken; +#[macro_use] extern crate sovtoken; #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index f74a001f7..336517f9a 100755 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -33,7 +33,7 @@ pub fn create_nym( ) -> Result { let (did, verkey) = _new_did(wallet_handle,"{}").unwrap(); - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); let submitter_did = c_str!(did_trustee); let target_did = c_str!(&did); @@ -56,11 +56,19 @@ pub fn create_nym( err.try_err()?; let req_nym = Ok(val)?; - //indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym)?; - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let submitter_did = c_str!(submitter_did); + let request_json = c_str!(request_json); - let err = Ledger::_sign_and_submit_request(command_handle, pool_handle, wallet_handle, submitter_did, request_json, cb); - + let err = ErrorCode::from(unsafe { + indy_sys::indy_sign_and_submit_request(command_handle, + pool_handle, + wallet_handle, + submitter_did.as_ptr(), + request_json.as_ptr(), + cb) + }); Ok((did, verkey)) } diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs index ed2c27b37..466515142 100755 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,11 +1,23 @@ use sovtoken::utils::ErrorCode; use std::time::Duration; +use sovtoken::utils::callbacks::ClosureHandler; const SUBMIT_RETRY_CNT: usize = 3; pub fn submit_request_with_retries(pool_handle: i32, request_json: &str, previous_response: &str) -> Result { _submit_retry(_extract_seq_no_from_reply(previous_response).unwrap(), || { - indy::ledger::Ledger::submit_request(pool_handle, request_json) + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let request_json = c_str!(request_json); + + let err = ErrorCode::from(unsafe { indy_sys::indy_submit_request(command_handle, pool_handle, request_json.as_ptr(), cb) }); + err.try_err()?; + + let (err, val) = receiver.recv()?; + + err.try_err()?; + + Ok(val) }) } diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs index 69f5bd6b5..44129dedd 100755 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -8,6 +8,7 @@ use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; use utils; +use sovtoken::utils::callbacks::ClosureHandler; pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { let vec_outputs:Vec> = cfg.iter().map(|(pa, am)| { @@ -21,11 +22,38 @@ pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i let json = serde_json::to_string(&vec_outputs).unwrap(); - let (mint_req, _) = indy::payments::Payment::build_mint_req(wallet_handle, Some(did), &json, None)?; + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let submitter_did_str = opt_c_str!(submitter_did); + let outputs_json = c_str!(outputs_json); + let extra_str = opt_c_str!(extra); + + let err = ErrorCode::from(unsafe { indy_sys::indy_build_mint_req(command_handle, wallet_handle, opt_c_ptr!(submitter_did, submitter_did_str), outputs_json.as_ptr(), opt_c_ptr!(extra, extra_str), cb) }); + + err.try_err()?; + + let (err, val, val2) = receiver.recv()?; + + err.try_err()?; + + let (mint_req, _) = Ok((val, val2))?; let mint_req = Request::::multi_sign_request(wallet_handle, &mint_req, trustee_dids.to_vec())?; - let result = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req)?; + //let result = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req)?; + let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); + + let submitter_did = c_str!(did); + let request_json = c_str!(&mint_req); + + let result = unsafe { + indy_sys::indy_sign_and_submit_request(command_handle, + pool_handle, + wallet_handle, + submitter_did.as_ptr(), + request_json.as_ptr(), + cb) + }; utils::parse_mint_response::ParseMintResponse::from_json(&result).map_err(|_| ErrorCode::CommonInvalidStructure) } From dcc5bebf27766ddae20c5cca52fab762ecce842e Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Tue, 19 Mar 2019 13:06:08 -0600 Subject: [PATCH 56/91] fixes links in mobile builds and Signed-off-by: Cam Parra --- devops/Makefile | 2 +- devops/README.md | 10 +++++----- devops/setup.android.env.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/devops/Makefile b/devops/Makefile index 9a2f7ab0b..6882a4994 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -39,7 +39,7 @@ LIBS = $(LIB_DYNAMIC) $(LIB_STATIC) PACKAGE_NAME ?= $(LIBNAME) PRE_PACKAGE_GOALS := pre_package $(LIB_DYNAMIC) FPM_P_MAINTAINER := Sovrin -FPM_P_URL := https://github.com/sovrin/libsovtoken +FPM_P_URL := https://github.com/sovrin-foundation/libsovtoken FPM_P_LICENSE := Apache License 2.0 FPM_P_VENDOR := Sovrin FPM_P_DESCRIPTION := libsovtoken writen in Rust diff --git a/devops/README.md b/devops/README.md index c18aa84d5..d46bddc9c 100644 --- a/devops/README.md +++ b/devops/README.md @@ -4,7 +4,7 @@ This folder includes devops related routine and consists of the following parts: - [Makefile](Makefile) automates devops tasks like test, package and publish to [crates.io](https://crates.io/) which could be performed either on-host or in-docker - [docker](docker) folder holds docker related routine - [aws-codebuild](aws-codebuild) folder consists of files that describes AWS CodeBuild based CI/CD pipelines -- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/sovrin/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. +- [ext](ext) folder is a [git-subrepo][d003158e] of shared [library](https://github.com/sovrin-foundation/jenkins-shared/tree/devops-shared) which provides makefile based approach of devops tasks automation. Please check its [README.md](ext/README.md) for more information. [d003158e]: https://github.com/ingydotnet/git-subrepo "git-subrepo" @@ -14,7 +14,7 @@ Aurora wallet is shipped with dockerfiles for ubuntu [xenial](docker/ci/xenial/D ## CI pipeline -CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. +CI pipeline is described by [Jenkinsfile.ci](aws-codebuild/Jenkinsfile.ci). It uses [Jenkins shared library](https://github.com/sovrin-foundation/jenkins-shared/tree/aws-codebuild) API to build projects on [AWS CodeBuild](https://aws.amazon.com/codebuild/). CI utilizes docker containers from [docker/ci](docker/ci) folder to run tests on both ubuntu `xenial` and `centos7`. CI pipeline stages: - clone the GitHub repository @@ -29,7 +29,7 @@ CI pipeline stages: ## CD pipeline -CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/sovrin/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: +CD pipeline is described by [Jenkinsfile.cd](aws-codebuild/Jenkinsfile.cd). It uses [Jenkins shared library](https://github.com/sovrin-foundation/jenkins-shared/tree/aws-codebuild) API as well and generates the following artifacts: - debian package for ubuntu `xenial` - zip archive with shared and dynamic libraries for android on the following architectures: `arm`, `armv7`, `arm64`, `x86`, `x86_64` @@ -37,7 +37,7 @@ CD pipeline stages: - clone the GitHub repository - resolve the following parameters: - current source version from [Cargo.toml](../libsovtoken/Cargo.toml) - - last revision number among the debian packages with the same source version in [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) + - last revision number among the debian packages with the same source version in [Sovrin debian repo](https://repo.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) - evaluate new debian package version basing on source version, last revision number and current build number - upload current HEAD as zip archive to AWS S3 bucket used by CodeBuild project - launch a CodeBuild project using the same `AwsCodeBuildHelper.build` API as CI does. The main difference here is that CD pipeline doesn't build an image for AWS ECR repository assuming that it has been done previously by CI pipeline. Its sub-stages: @@ -45,7 +45,7 @@ CD pipeline stages: - run the CodeBuild project to perform debian packaging - download logs - archive logs -- upload created debian package to [Sovrin debian repo](https://repo.corp.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) +- upload created debian package to [Sovrin debian repo](https://repo.sovrin.com/deb/dists/sovrin-agency-dev-ubuntu/) ## Makefile diff --git a/devops/setup.android.env.sh b/devops/setup.android.env.sh index 631171440..5c9f056f9 100644 --- a/devops/setup.android.env.sh +++ b/devops/setup.android.env.sh @@ -69,7 +69,7 @@ download_and_unzip_dependencies_for_all_architectures(){ #TODO Get dependencies in more optimized way pushd ${ANDROID_BUILD_FOLDER} if [ ! -d "indy-android-dependencies" ] ; then - git clone https://github.com/sovrin/indy-android-dependencies.git + git clone https://github.com/sovrin-foundation/indy-android-dependencies.git pushd ${ANDROID_BUILD_FOLDER}/indy-android-dependencies/prebuilt/ # git checkout tags/v1.0.1 find . -name "*.zip" | xargs -P 5 -I FILENAME sh -c 'unzip -o -qq -d "$(dirname "FILENAME")" "FILENAME"' From e55b8886f7f60be49f695c7c5801f5e309e5f40c Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Thu, 21 Mar 2019 13:45:19 +0300 Subject: [PATCH 57/91] Add android upload script Signed-off-by: Nikita Khateev --- devops/android_upload.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 devops/android_upload.sh diff --git a/devops/android_upload.sh b/devops/android_upload.sh new file mode 100755 index 000000000..6f41131f3 --- /dev/null +++ b/devops/android_upload.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e +set -x + +if [ "$1" = "--help" ] ; then + echo "Usage: " + return +fi + +version="$1" +key="$2" +branchName="$3" +buildNumber="$4" +artifact="$5" + +[ -z $version ] && exit 1 +[ -z $key ] && exit 2 +[ -z $branchName ] && exit 3 +[ -z $buildNumber ] && exit 4 +[ -z $artifact ] && exit 5 + +ssh -v -oStrictHostKeyChecking=no -i $key repo@$SOVRIN_REPO_HOST mkdir -p /var/repository/repos/android/${artifact}/${branchName}/${version}-${buildNumber} + +cat < Date: Thu, 21 Mar 2019 15:46:19 +0300 Subject: [PATCH 58/91] Modify android upload script Signed-off-by: Nikita Khateev --- devops/android_upload.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/devops/android_upload.sh b/devops/android_upload.sh index 6f41131f3..094ccfc1e 100755 --- a/devops/android_upload.sh +++ b/devops/android_upload.sh @@ -4,7 +4,7 @@ set -e set -x if [ "$1" = "--help" ] ; then - echo "Usage: " + echo "Usage: " return fi @@ -13,17 +13,19 @@ key="$2" branchName="$3" buildNumber="$4" artifact="$5" +file="$6" [ -z $version ] && exit 1 [ -z $key ] && exit 2 [ -z $branchName ] && exit 3 [ -z $buildNumber ] && exit 4 [ -z $artifact ] && exit 5 +[ -z $file ] && exit 6 ssh -v -oStrictHostKeyChecking=no -i $key repo@$SOVRIN_REPO_HOST mkdir -p /var/repository/repos/android/${artifact}/${branchName}/${version}-${buildNumber} cat < Date: Thu, 21 Mar 2019 16:49:55 +0300 Subject: [PATCH 59/91] Fix versions in macos setup script Signed-off-by: Nikita Khateev --- .../build_scripts/ios/mac/mac.01.env.setup.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh b/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh index 74da11fae..b394f2954 100755 --- a/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh +++ b/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh @@ -67,14 +67,14 @@ if [[ $RUSTUP_VERSION =~ ^'rustup ' ]]; then fi #2) Install required native libraries and utilities (libsodium is added with URL to homebrew since version<1.0.15 is required) - brew install pkg-config + brew install pkg-config 0.29.2 brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/65effd2b617bade68a8a2c5b39e1c3089cc0e945/Formula/libsodium.rb - brew install automake - brew install autoconf - brew install cmake - brew install openssl - brew install zmq - brew install wget - brew install truncate - brew install libzip + brew install automake 1.16.1_1 + brew install autoconf 2.69 + brew install cmake 3.13.3 + brew install openssl 1.0.2q + brew install zmq 4.2.3 + brew install wget 1.20.1_3 + brew install truncate 0.9 + brew install libzip 1.5.1 fi From 7bf34d44775703a368ead515de3e894bc7e3c7d1 Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Thu, 21 Mar 2019 18:00:48 +0300 Subject: [PATCH 60/91] Fix versions in macos setup script Signed-off-by: Nikita Khateev --- .../build_scripts/ios/mac/mac.01.env.setup.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh b/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh index b394f2954..3f39d1669 100755 --- a/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh +++ b/libsovtoken/build_scripts/ios/mac/mac.01.env.setup.sh @@ -67,14 +67,14 @@ if [[ $RUSTUP_VERSION =~ ^'rustup ' ]]; then fi #2) Install required native libraries and utilities (libsodium is added with URL to homebrew since version<1.0.15 is required) - brew install pkg-config 0.29.2 + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7242a1a76da4b99f535e185cee6b3e8614034db6/Formula/pkg-config.rb brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/65effd2b617bade68a8a2c5b39e1c3089cc0e945/Formula/libsodium.rb - brew install automake 1.16.1_1 - brew install autoconf 2.69 - brew install cmake 3.13.3 - brew install openssl 1.0.2q - brew install zmq 4.2.3 - brew install wget 1.20.1_3 - brew install truncate 0.9 - brew install libzip 1.5.1 + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7242a1a76da4b99f535e185cee6b3e8614034db6/Formula/automake.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7242a1a76da4b99f535e185cee6b3e8614034db6/Formula/autoconf.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7242a1a76da4b99f535e185cee6b3e8614034db6/Formula/autoconf.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9231c3cf11de64593a593a279e89f903044bf9e8/Formula/openssl.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/46f0da84e2af9416e0b5ec410024c1a272a0ab9a/Formula/zeromq.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7377a5bd3e702dadd9ca8b59a6bdeee54e8dc97f/Formula/wget.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f84b6f4f1493b5db71bb6ea9d560f4f3d295f1a0/Formula/truncate.rb + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/6fa49cf7bb8dbe1c918ec7acd568b0c5b98e21ed/Formula/libzip.rb fi From d9737b243b32f87823553f4350d1a3131305ccfb Mon Sep 17 00:00:00 2001 From: Cam Parra Date: Fri, 15 Mar 2019 10:05:24 -0600 Subject: [PATCH 61/91] Revert "Merge pull request #1 from burdettadam/cams-help" Signed-off-by: Cam Parra This reverts commit 980a772922ee933f6495792e4d672cc15e4b8789, reversing changes made to a3fccadf625016e21713365f5754681521382012. --- libsovtoken/Cargo.toml | 1 + libsovtoken/src/api/mod.rs | 5 +- libsovtoken/src/logic/build_payment.rs | 7 +- libsovtoken/tests/add_fees_for_attrib_test.rs | 5 +- .../tests/add_fees_for_cred_def_test.rs | 5 +- libsovtoken/tests/add_fees_for_nym.rs | 5 +- .../tests/add_fees_for_revoke_reg_def.rs | 5 +- libsovtoken/tests/add_fees_for_schema_test.rs | 5 +- libsovtoken/tests/api_tests.rs | 5 +- .../tests/build_add_fees_txn_handler_test.rs | 3 +- .../tests/build_fees_txn_handler_test.rs | 5 +- .../build_get_utxo_request_handler_test.rs | 3 +- .../tests/build_mint_txn_handler_test.rs | 14 ++- .../tests/build_payment_req_handler_test.rs | 5 +- libsovtoken/tests/build_verify_req_test.rs | 5 +- libsovtoken/tests/create_payment_tests.rs | 5 +- .../tests/parse_payment_response_test.rs | 94 +++++++++++++++++++ libsovtoken/tests/payment_chaos_tests.rs | 5 +- libsovtoken/tests/utils/did.rs | 74 +++------------ libsovtoken/tests/utils/ledger.rs | 18 +--- libsovtoken/tests/utils/mint.rs | 35 +------ libsovtoken/tests/utils/payment/address.rs | 1 + libsovtoken/tests/utils/payment/fees.rs | 2 + libsovtoken/tests/utils/payment/get_utxo.rs | 1 + libsovtoken/tests/utils/pool.rs | 1 + libsovtoken/tests/utils/setup.rs | 1 + libsovtoken/tests/utils/wallet.rs | 58 ++---------- 27 files changed, 181 insertions(+), 192 deletions(-) mode change 100755 => 100644 libsovtoken/Cargo.toml mode change 100755 => 100644 libsovtoken/src/api/mod.rs mode change 100755 => 100644 libsovtoken/src/logic/build_payment.rs mode change 100755 => 100644 libsovtoken/tests/add_fees_for_attrib_test.rs mode change 100755 => 100644 libsovtoken/tests/add_fees_for_cred_def_test.rs mode change 100755 => 100644 libsovtoken/tests/add_fees_for_nym.rs mode change 100755 => 100644 libsovtoken/tests/add_fees_for_revoke_reg_def.rs mode change 100755 => 100644 libsovtoken/tests/add_fees_for_schema_test.rs mode change 100755 => 100644 libsovtoken/tests/api_tests.rs mode change 100755 => 100644 libsovtoken/tests/build_add_fees_txn_handler_test.rs mode change 100755 => 100644 libsovtoken/tests/build_fees_txn_handler_test.rs mode change 100755 => 100644 libsovtoken/tests/build_get_utxo_request_handler_test.rs mode change 100755 => 100644 libsovtoken/tests/build_mint_txn_handler_test.rs mode change 100755 => 100644 libsovtoken/tests/build_payment_req_handler_test.rs mode change 100755 => 100644 libsovtoken/tests/build_verify_req_test.rs mode change 100755 => 100644 libsovtoken/tests/create_payment_tests.rs create mode 100644 libsovtoken/tests/parse_payment_response_test.rs mode change 100755 => 100644 libsovtoken/tests/payment_chaos_tests.rs mode change 100755 => 100644 libsovtoken/tests/utils/did.rs mode change 100755 => 100644 libsovtoken/tests/utils/ledger.rs mode change 100755 => 100644 libsovtoken/tests/utils/mint.rs mode change 100755 => 100644 libsovtoken/tests/utils/payment/address.rs mode change 100755 => 100644 libsovtoken/tests/utils/payment/fees.rs mode change 100755 => 100644 libsovtoken/tests/utils/payment/get_utxo.rs mode change 100755 => 100644 libsovtoken/tests/utils/pool.rs mode change 100755 => 100644 libsovtoken/tests/utils/setup.rs mode change 100755 => 100644 libsovtoken/tests/utils/wallet.rs diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml old mode 100755 new mode 100644 index eaef97060..dd1530ffa --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -31,6 +31,7 @@ log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" indy-sys = "1.8.1" +indy = "=1.6.7" num-traits = "0.2" num-derive = "0.2" serde = "1.0" diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs old mode 100755 new mode 100644 index 3df18457c..c250a212e --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -808,7 +808,7 @@ pub extern "C" fn build_verify_req_handler( ) -> i32 { trace!("api::build_verify_req called >> wallet_handle {}", wallet_handle); -/* let (did, txo, cb) = match verify::deserialize(did, txo, cb) { + let (did, txo, cb) = match verify::deserialize(did, txo, cb) { Ok(a) => a, Err(ec) => { trace!("api::build_verify_req << res {:?}", ec); @@ -829,8 +829,7 @@ pub extern "C" fn build_verify_req_handler( trace!("api::build_verify_req << res {:?}", res); - res as i32*/ - 1 as i32 + res as i32 } /// Parse response of verification of txo diff --git a/libsovtoken/src/logic/build_payment.rs b/libsovtoken/src/logic/build_payment.rs old mode 100755 new mode 100644 index ac5128063..1c644ec14 --- a/libsovtoken/src/logic/build_payment.rs +++ b/libsovtoken/src/logic/build_payment.rs @@ -171,6 +171,7 @@ mod test_deserialize_inputs { #[cfg(test)] mod test_handle_signing { use super::*; + use indy::utils::results::ResultHandler; use logic::request::Request; use utils::test::{default, callbacks}; @@ -178,11 +179,7 @@ mod test_handle_signing { fn call_handle_signing(input_payload: Result) -> Result { let (receiver, command_handle, cb) = callbacks::cb_ec_string(); handle_signing(command_handle, input_payload, cb.unwrap()); - let err = ErrorCode::Success; - err.try_err()?; - let (err, val) = receiver.recv()?; - err.try_err()?; - Ok(val) + ResultHandler::one(ErrorCode::Success, receiver) } #[test] diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs old mode 100755 new mode 100644 index d9e0036c1..5cb0e1d39 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -1,12 +1,13 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate indy; +extern crate sovtoken; mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs old mode 100755 new mode 100644 index 4ff2408be..4e31d5cc9 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -1,13 +1,14 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate indy; +extern crate sovtoken; mod utils; use sovtoken::utils::random::rand_string; use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs old mode 100755 new mode 100644 index 405116d92..18a3ddd36 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -1,10 +1,11 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate indy; +extern crate sovtoken; mod utils; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use std::collections::HashMap; use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs old mode 100755 new mode 100644 index 3850d90bc..ac800c3fe --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -1,9 +1,10 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; mod utils; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use std::{thread, time}; diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs old mode 100755 new mode 100644 index 752e66577..20b4b0267 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -1,12 +1,13 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate indy; +extern crate sovtoken; mod utils; use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs old mode 100755 new mode 100644 index c008ecbf5..f02b97aa0 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -1,9 +1,10 @@ //! //! tests for API related functions -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; // lib-sdk project -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use sovtoken::api::sovtoken_init; diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs old mode 100755 new mode 100644 index dca557ebb..38850b604 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -1,6 +1,7 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; pub mod utils; use std::sync::mpsc::channel; diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs old mode 100755 new mode 100644 index 60ff85b5c..5f8b5d3db --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -1,11 +1,12 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate libc; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; // lib-sdk project extern crate bs58; pub mod utils; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use libc::c_char; use sovtoken::utils::ffi_support; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/build_get_utxo_request_handler_test.rs b/libsovtoken/tests/build_get_utxo_request_handler_test.rs old mode 100755 new mode 100644 index 3257d5937..a6575f1d7 --- a/libsovtoken/tests/build_get_utxo_request_handler_test.rs +++ b/libsovtoken/tests/build_get_utxo_request_handler_test.rs @@ -1,6 +1,7 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; mod utils; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs old mode 100755 new mode 100644 index ce979c3ac..73107217b --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -1,9 +1,13 @@ extern crate libc; -#[macro_use] extern crate serde_derive; -#[macro_use] extern crate serde_json; -#[macro_use] extern crate log; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +#[macro_use] +extern crate serde_derive; +extern crate indy; // lib-sdk project +#[macro_use] +extern crate serde_json; +#[macro_use] +extern crate log; mod utils; @@ -14,7 +18,7 @@ use std::ptr; use std::ffi::CString; use indy::utils::results::ResultHandler; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::parse_mint_response::ParseMintResponse; diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs old mode 100755 new mode 100644 index b521da0c0..844ad0bd8 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -1,13 +1,14 @@ extern crate env_logger; extern crate libc; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; // lib-sdk project extern crate bs58; #[macro_use] extern crate log; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use indy::utils::results::ResultHandler; use libc::c_char; use sovtoken::logic::address; diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs old mode 100755 new mode 100644 index 619e77591..75035c17c --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -1,11 +1,12 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; use std::{thread, time}; mod utils; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use sovtoken::logic::parsers::common::TXO; diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs old mode 100755 new mode 100644 index 5ae1c521f..afbc94e46 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -10,7 +10,8 @@ extern crate rand; #[macro_use] extern crate serde_derive; extern crate bs58; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; // lib-sdk project use libc::c_char; use rand::Rng; @@ -18,7 +19,7 @@ use std::ptr; use std::ffi::CString; use std::time::Duration; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use sovtoken::logic::config::payment_address_config::PaymentAddressConfig; use sovtoken::logic::address::unqualified_address_from_address; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs new file mode 100644 index 000000000..78ae13ce2 --- /dev/null +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -0,0 +1,94 @@ +extern crate env_logger; +extern crate libc; +extern crate sovtoken; +extern crate indy; +extern crate serde_json; + +use utils::ErrorCode; + +static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ + "op": "REPLY", + "protocolVersion": 2, + "result": + { + "txn": + { + "data": + { + "inputs": + [ + { + "address": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", + "seqNo": 1 + } + ], + "outputs": + [ + { + "address": "2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es", + "amount": 13 + }, + { + "address": "24xHHVDRq97Hss5BxiTciEDsve7nYNx1pxAMi9RAvcWMouviSY", + "amount": 13 + }, + { + "address": "mNYFWv9vvoQVCVLrSpbU7ZScthjNJMQxMs3gREQrwcJC1DsG5", + "amount": 13 + }, + { + "address": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", + "amount": 1 + } + ] + }, + "metadata": + { + "digest": "228af6a0c773cbbd575bf4e16f9144c2eaa615fa81fdcc3d06b83e20a92e5989", + "from": "6baBEYA94sAphWBA5efEsaA6X2wCdyaH7PXuBtv2H5S1", + "reqId": 152968241 + }, + "protocolVersion": 2, + "type": "10001" + }, + "reqSignature": + { + "type": "ED25519", + "values": + [ + { + "from": "dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", + "value": "4fFVD1HSVLaVdMpjHU168eviqWDxKrWYx1fRxw4DDLjg4XZXwya7UdcvVty81pYFcng244tS36WbshCeznC8ZN5Z" + } + ] + }, + "txnMetadata": + { + "seqNo": 2, + "txnTime": 1529682415 + }, + "ver": "1", + "auditPath": ["5NtSQUXaZvETP1KEWi8LaxSb9gGa2Qj31xKQoimNxCAT"], + "rootHash": "GJFwiQt9r7n25PqM1oXBtRceXCeoqoCBcJmRH1c8fVTs" + } +}"#; + +#[test] +pub fn parse_payment_response_works() { + sovtoken::api::sovtoken_init(); + let resp = indy::payments::Payment::parse_payment_response("sov", PARSE_PAYMENT_RESPONSE_JSON).unwrap(); + let resp: Vec = serde_json::from_str(&resp).unwrap(); + assert_eq!(resp.len(), 4); + for utxo in resp { + utxo["recipient"].as_str().unwrap(); + utxo["receipt"].as_str().unwrap(); + utxo["amount"].as_u64().unwrap(); + } +} + +#[test] +pub fn parse_payment_response_works_for_invalid() { + sovtoken::api::sovtoken_init(); + let resp = indy::payments::Payment::parse_payment_response("sov", "123").unwrap_err(); + assert_eq!(resp, ErrorCode::CommonInvalidStructure); +} \ No newline at end of file diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs old mode 100755 new mode 100644 index 99ade6d02..6a53db377 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -1,12 +1,13 @@ extern crate libc; -#[macro_use] extern crate sovtoken; +extern crate sovtoken; +extern crate indy; // lib-sdk project #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; pub mod utils; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs old mode 100755 new mode 100644 index 336517f9a..0a03bf5de --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -1,5 +1,6 @@ -use sovtoken::utils::ErrorCode; -use sovtoken::utils::callbacks::ClosureHandler; +extern crate indy; + +use utils::ErrorCode; type DidAndVerKey = (String, String); @@ -31,44 +32,17 @@ pub fn create_nym( did_trustee: &str, role: NymRole ) -> Result { - let (did, verkey) = _new_did(wallet_handle,"{}").unwrap(); - - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let submitter_did = c_str!(did_trustee); - let target_did = c_str!(&did); - - let verkey_str = opt_c_str!(Some(&verkey)); - let data_str = opt_c_str!(None); - let role_str = opt_c_str!(role.prepare()); - - let err = ErrorCode::from(unsafe { - indy_sys::indy_build_nym_request(command_handle, - submitter_did.as_ptr(), - target_did.as_ptr(), - opt_c_ptr!(verkey, verkey_str), - opt_c_ptr!(data, data_str), - opt_c_ptr!(role, role_str), - cb) - }); - err.try_err()?; - let (err, val) = receiver.recv()?; - err.try_err()?; - let req_nym = Ok(val)?; - - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let submitter_did = c_str!(submitter_did); - let request_json = c_str!(request_json); - - let err = ErrorCode::from(unsafe { - indy_sys::indy_sign_and_submit_request(command_handle, - pool_handle, - wallet_handle, - submitter_did.as_ptr(), - request_json.as_ptr(), - cb) - }); + let (did, verkey) = indy::did::Did::new(wallet_handle, "{}").unwrap(); + + let req_nym = indy::ledger::Ledger::build_nym_request( + did_trustee, + &did, + Some(&verkey), + None, + role.prepare() + )?; + + indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym)?; Ok((did, verkey)) } @@ -120,8 +94,7 @@ pub fn initial_trustee(wallet_handle: i32) -> DidAndVerKey { "seed":"000000000000000000000000Trustee1" }).to_string(); - _new_did(wallet_handle,&first_json_seed).unwrap(); - + indy::did::Did::new(wallet_handle, &first_json_seed).unwrap() } /** @@ -133,20 +106,3 @@ pub fn did_str_from_trustees<'a>(trustees: &'a Vec) -> Vec<&'a str .map(|(ref did, _)| did.as_str()) .collect() } - -fn _new_did(wallet_handle: i32, did_json: &str) -> Result<(String, String), ErrorCode>{ - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let did_json = c_str!(did_json); - - ErrorCode::from(unsafe { - indy_sys::indy_create_and_store_my_did(command_handle, wallet_handle, did_json.as_ptr(), cb) - }); - err.try_err()?; - - let (err, val, val2) = receiver.recv()?; - - err.try_err()?; - - Ok((val, val2)); -} \ No newline at end of file diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs old mode 100755 new mode 100644 index 466515142..3171eddb1 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,23 +1,13 @@ -use sovtoken::utils::ErrorCode; +extern crate indy; + +use utils::ErrorCode; use std::time::Duration; -use sovtoken::utils::callbacks::ClosureHandler; const SUBMIT_RETRY_CNT: usize = 3; pub fn submit_request_with_retries(pool_handle: i32, request_json: &str, previous_response: &str) -> Result { _submit_retry(_extract_seq_no_from_reply(previous_response).unwrap(), || { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let request_json = c_str!(request_json); - - let err = ErrorCode::from(unsafe { indy_sys::indy_submit_request(command_handle, pool_handle, request_json.as_ptr(), cb) }); - err.try_err()?; - - let (err, val) = receiver.recv()?; - - err.try_err()?; - - Ok(val) + indy::ledger::Ledger::submit_request(pool_handle, request_json) }) } diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs old mode 100755 new mode 100644 index 44129dedd..dedef3e71 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -1,14 +1,14 @@ +extern crate indy; extern crate serde_json; use std::collections::HashMap; use std::str::FromStr; -use sovtoken::utils::ErrorCode; +use utils::ErrorCode; use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; use utils; -use sovtoken::utils::callbacks::ClosureHandler; pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { let vec_outputs:Vec> = cfg.iter().map(|(pa, am)| { @@ -22,38 +22,11 @@ pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i let json = serde_json::to_string(&vec_outputs).unwrap(); - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let submitter_did_str = opt_c_str!(submitter_did); - let outputs_json = c_str!(outputs_json); - let extra_str = opt_c_str!(extra); - - let err = ErrorCode::from(unsafe { indy_sys::indy_build_mint_req(command_handle, wallet_handle, opt_c_ptr!(submitter_did, submitter_did_str), outputs_json.as_ptr(), opt_c_ptr!(extra, extra_str), cb) }); - - err.try_err()?; - - let (err, val, val2) = receiver.recv()?; - - err.try_err()?; - - let (mint_req, _) = Ok((val, val2))?; + let (mint_req, _) = indy::payments::Payment::build_mint_req(wallet_handle, Some(did), &json, None)?; let mint_req = Request::::multi_sign_request(wallet_handle, &mint_req, trustee_dids.to_vec())?; - //let result = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req)?; - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let submitter_did = c_str!(did); - let request_json = c_str!(&mint_req); - - let result = unsafe { - indy_sys::indy_sign_and_submit_request(command_handle, - pool_handle, - wallet_handle, - submitter_did.as_ptr(), - request_json.as_ptr(), - cb) - }; + let result = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req)?; utils::parse_mint_response::ParseMintResponse::from_json(&result).map_err(|_| ErrorCode::CommonInvalidStructure) } diff --git a/libsovtoken/tests/utils/payment/address.rs b/libsovtoken/tests/utils/payment/address.rs old mode 100755 new mode 100644 index a4f629d1e..d77a0b85f --- a/libsovtoken/tests/utils/payment/address.rs +++ b/libsovtoken/tests/utils/payment/address.rs @@ -4,6 +4,7 @@ Helpers dealing with addresses For integration tests */ +use indy::payments::Payment; use utils::wallet::Wallet; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/payment/fees.rs b/libsovtoken/tests/utils/payment/fees.rs old mode 100755 new mode 100644 index 6dae18b11..242438161 --- a/libsovtoken/tests/utils/payment/fees.rs +++ b/libsovtoken/tests/utils/payment/fees.rs @@ -1,3 +1,5 @@ +extern crate indy; + use sovtoken::logic::config::set_fees_config::SetFees; use sovtoken::logic::request::Request; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/payment/get_utxo.rs b/libsovtoken/tests/utils/payment/get_utxo.rs old mode 100755 new mode 100644 index 5e9248c17..e7bf5047f --- a/libsovtoken/tests/utils/payment/get_utxo.rs +++ b/libsovtoken/tests/utils/payment/get_utxo.rs @@ -1,3 +1,4 @@ +extern crate indy; extern crate serde_json; extern crate sovtoken; diff --git a/libsovtoken/tests/utils/pool.rs b/libsovtoken/tests/utils/pool.rs old mode 100755 new mode 100644 index 48fc447ce..b2dfbdf91 --- a/libsovtoken/tests/utils/pool.rs +++ b/libsovtoken/tests/utils/pool.rs @@ -4,6 +4,7 @@ use std::fs; use utils::environment::EnvironmentUtils; use std::io::Write; use sovtoken::utils::random::rand_string; +extern crate indy; pub fn create_pool_config() -> String { let path = create_genesis_txn_file_for_test_pool("p1", None, None); diff --git a/libsovtoken/tests/utils/setup.rs b/libsovtoken/tests/utils/setup.rs old mode 100755 new mode 100644 index 5008604ae..21d246de8 --- a/libsovtoken/tests/utils/setup.rs +++ b/libsovtoken/tests/utils/setup.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; use std::iter::FromIterator; +use indy; use sovtoken; use sovtoken::logic::parsers::common::ResponseOperations; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs old mode 100755 new mode 100644 index e3a8c71c7..c9bd3cd2c --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -3,11 +3,12 @@ */ extern crate env_logger; +extern crate indy; extern crate sovtoken; -use sovtoken::utils::ErrorCode; +use self::indy::ErrorCode; +use self::indy::wallet::Wallet as IndyWallet; use self::sovtoken::utils::random::rand_string; -use sovtoken::utils::callbacks::ClosureHandler; static USEFUL_CREDENTIALS : &'static str = r#" { @@ -68,68 +69,23 @@ impl Wallet { fn open(&mut self) -> Result { let config : String = Wallet::create_wallet_config(&self.name); - - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let config = c_str!(&config); - let credentials = c_str!(USEFUL_CREDENTIALS); - - let _err = ErrorCode::from(unsafe { - indy_sys::indy_open_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) - }); - - _err.try_err()?; - let (_err, val) = receiver.recv()?; - _err.try_err()?; - let handle = Ok(val); - + let handle = IndyWallet::open(&config, USEFUL_CREDENTIALS)?; self.handle = handle; return Ok(handle); } fn create(&self) -> Result<(), ErrorCode> { let config = Wallet::create_wallet_config(&self.name); - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let config = c_str!(&config); - let credentials = c_str!(USEFUL_CREDENTIALS); - - let err =ErrorCode::from(unsafe { - indy_sys::indy_create_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) - }); - err.try_err()?; - match receiver.recv() { - Ok(err) => err.try_err(), - Err(e) => Err(ErrorCode::from(e)) - } + return IndyWallet::create(&config, USEFUL_CREDENTIALS) } fn close(&self) -> Result<(), ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let err = ErrorCode::from(unsafe { indy_sys::indy_close_wallet(command_handle, self.handle, cb) }); - err.try_err()?; - match receiver.recv() { - Ok(err) => err.try_err(), - Err(e) => Err(ErrorCode::from(e)) - } + IndyWallet::close(self.handle) } fn delete(&self) -> Result<(), ErrorCode> { let config : String = Wallet::create_wallet_config(&self.name); - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let config = c_str!(&config); - let credentials = c_str!(USEFUL_CREDENTIALS); - - let err = ErrorCode::from(unsafe { - indy_sys::indy_delete_wallet(command_handle, config.as_ptr(), credentials.as_ptr(), cb) - }); - err.try_err()?; - match receiver.recv() { - Ok(err) => err.try_err(), - Err(e) => Err(ErrorCode::from(e)) - } + return IndyWallet::delete(&config, USEFUL_CREDENTIALS) } } From 3d9f36f5c59ff5aded63a0080330fba53a384589 Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Fri, 15 Mar 2019 11:31:43 -0600 Subject: [PATCH 62/91] fixing compile warnings Signed-off-by: Matt Raffel --- libsovtoken/src/api/mod.rs | 20 ++++++++++++++------ libsovtoken/src/logic/request.rs | 5 +++-- libsovtoken/src/utils/mod.rs | 23 +++++++++++++++-------- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index c250a212e..bfb93eeef 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -1,6 +1,14 @@ //! Implementation of the Indy-Sdk Payment API handlers. No business logic in these methods. //! +/// use statements are listed the following pattern: +/// follow this or risk having gum thrown in your hair +/// +/// first: standard rust imports +/// second: imported crates +/// third: libsovtoken name spaces +/// +use std::ffi::CString; use std::os::raw::c_char; use indy_sys; @@ -30,15 +38,12 @@ use logic::payments::{CreatePaymentHandler}; use logic::set_fees; use logic::xfer_payload::XferPayload; -use std::sync::mpsc::channel; - use utils::constants::general::{JsonCallback, PAYMENT_METHOD_NAME, LEDGER_ID}; use utils::ErrorCode; use utils::constants::txn_types::{GET_FEES, GET_UTXO}; use utils::ffi_support::{str_from_char_ptr, string_from_char_ptr, c_pointer_from_string}; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::general::ResultExtension; -use std::ffi::CString; use utils::callbacks::ClosureHandler; /// This method generates private part of payment address @@ -946,7 +951,8 @@ pub extern fn sovtoken_init() -> i32 { debug!("sovtoken_init() started"); debug!("Going to call Payment::register"); - let (receiver, cmd_handle, cb) = ClosureHandler::cb_ec(); + // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. + let (_receiver, cmd_handle, cb) = ClosureHandler::cb_ec(); let payment_method_name = CString::new(PAYMENT_METHOD_NAME).unwrap(); @@ -975,7 +981,8 @@ pub extern fn sovtoken_init() -> i32 { debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_UTXO"); - let (receiver_utxo, cmd_handle_utxo, cb_utxo) = ClosureHandler::cb_ec(); + // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. + let (_receiver_utxo, cmd_handle_utxo, cb_utxo) = ClosureHandler::cb_ec(); unsafe { @@ -990,7 +997,8 @@ pub extern fn sovtoken_init() -> i32 { debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_FEES"); - let (receiver_fees, cmd_handle_fees, cb_fees) = ClosureHandler::cb_ec(); + // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. + let (_receiver_fees, cmd_handle_fees, cb_fees) = ClosureHandler::cb_ec(); unsafe { diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index 70fc7a2c6..9dbd5a2ac 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -56,9 +56,10 @@ impl Request } pub fn multi_sign_request(wallet_handle: IndyHandle, req: &str, dids: Vec<&str>) -> Result { - let mut signed_req: String = req.to_string(); + let signed_req: String = req.to_string(); for did in dids { - let (receiver, cmd_handle, cb) = ClosureHandler::cb_ec_string(); + // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. + let (_receiver, cmd_handle, cb) = ClosureHandler::cb_ec_string(); ErrorCode::from( unsafe { diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index b4d7902b9..98f263955 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -2,28 +2,35 @@ Utils Mod contains useful helper functions */ -pub mod base58; -pub mod constants; +/// use statements are listed the following pattern: +/// follow this or risk having gum thrown in your hair +/// +/// first: standard rust imports +/// second: imported crates +/// third: libsovtoken name spaces + + +use std::sync::mpsc; + #[macro_use] pub mod ffi_support; -pub mod general; #[macro_use] pub mod json_conversion; #[macro_use] pub mod logger; #[macro_use] pub mod conversions; #[macro_use] pub mod macros; -pub mod random; + +pub mod base58; pub mod callbacks; +pub mod constants; +pub mod general; +pub mod random; pub mod sequence; pub mod results; #[cfg(any(test, feature = "integration"))] pub mod test; - pub type IndyHandle = i32; -use std::sync::mpsc; -use num_traits::{FromPrimitive, ToPrimitive}; - #[derive(Debug, PartialEq, Copy, Clone, FromPrimitive, ToPrimitive)] #[repr(i32)] #[allow(dead_code)] From 1c7baf34631cd0b21dbbe70b30ee5c4689bb7b56 Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Fri, 15 Mar 2019 12:22:22 -0600 Subject: [PATCH 63/91] fixes syntax errors, does not fix wrapper errors. tests still do not compile. Signed-off-by: Matt Raffel --- libsovtoken/src/logic/build_payment.rs | 19 +++++++++---------- libsovtoken/src/logic/request.rs | 16 ++++++++-------- libsovtoken/src/utils/callbacks.rs | 12 ++++++------ libsovtoken/src/utils/results.rs | 5 +++-- libsovtoken/tests/add_fees_for_attrib_test.rs | 2 +- .../tests/add_fees_for_cred_def_test.rs | 8 +++++--- libsovtoken/tests/add_fees_for_nym.rs | 5 +++-- .../tests/add_fees_for_revoke_reg_def.rs | 11 +++++++---- libsovtoken/tests/add_fees_for_schema_test.rs | 2 +- libsovtoken/tests/api_tests.rs | 3 +-- .../tests/build_fees_txn_handler_test.rs | 10 ++++++---- .../tests/build_mint_txn_handler_test.rs | 13 ++++++------- .../tests/build_payment_req_handler_test.rs | 10 +++++----- libsovtoken/tests/build_verify_req_test.rs | 5 +++-- libsovtoken/tests/create_payment_tests.rs | 7 ++++--- .../tests/parse_payment_response_test.rs | 6 +++--- libsovtoken/tests/payment_chaos_tests.rs | 4 ++-- libsovtoken/tests/utils/did.rs | 3 ++- libsovtoken/tests/utils/ledger.rs | 3 ++- libsovtoken/tests/utils/mint.rs | 3 ++- libsovtoken/tests/utils/wallet.rs | 2 +- 21 files changed, 80 insertions(+), 69 deletions(-) diff --git a/libsovtoken/src/logic/build_payment.rs b/libsovtoken/src/logic/build_payment.rs index 1c644ec14..d433983e2 100644 --- a/libsovtoken/src/logic/build_payment.rs +++ b/libsovtoken/src/logic/build_payment.rs @@ -1,14 +1,16 @@ //! what is this module for? -use utils::ErrorCode; use libc::c_char; +use serde_json; + use logic::config::payment_config::PaymentRequest; use logic::input::Inputs; use logic::output::Outputs; use logic::xfer_payload::XferPayload; -use utils::ffi_support::{string_from_char_ptr, c_pointer_from_str}; use utils::base58::{IntoBase58, FromBase58}; -use serde_json; +use utils::ErrorCode; +use utils::ffi_support::{string_from_char_ptr, c_pointer_from_str}; + type BuildPaymentRequestCb = extern fn(ch: i32, err: i32, request_json: *const c_char) -> i32; type DeserializedArguments = (Inputs, Outputs, Option, BuildPaymentRequestCb); @@ -58,7 +60,6 @@ pub fn handle_signing( cb(command_handle, error_code as i32, pointer); } - fn build_payment_request_pointer( signed_payload: Result ) -> Result<*const c_char, ErrorCode> { @@ -86,12 +87,12 @@ fn build_payment_request_pointer( }); } - #[cfg(test)] mod test_deserialize_inputs { - use utils::ErrorCode; + use libc::c_char; use std::ptr; + use utils::ErrorCode; use utils::test::default; use super::{ @@ -100,7 +101,6 @@ mod test_deserialize_inputs { deserialize_inputs, }; - pub fn call_deserialize_inputs( inputs_json: Option<*const c_char>, outputs_json: Option<*const c_char>, @@ -167,15 +167,14 @@ mod test_deserialize_inputs { } } - #[cfg(test)] mod test_handle_signing { use super::*; - use indy::utils::results::ResultHandler; use logic::request::Request; + use utils::ErrorCode; + use utils::results::ResultHandler; use utils::test::{default, callbacks}; - fn call_handle_signing(input_payload: Result) -> Result { let (receiver, command_handle, cb) = callbacks::cb_ec_string(); handle_signing(command_handle, input_payload, cb.unwrap()); diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index 9dbd5a2ac..fb63cc46c 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -1,19 +1,19 @@ //! //! +use libc::c_char; use serde::Serialize; use serde_json; use std::ffi::CString; -use libc::c_char; -use utils::{IndyHandle, ErrorCode}; - -use utils::ffi_support::{cstring_from_str, c_pointer_from_string}; -use utils::random::rand_req_id; -use utils::json_conversion::JsonSerialize; -use utils::constants::general::PROTOCOL_VERSION; -use logic::type_aliases::{ProtocolVersion, ReqId}; use indy_sys::ledger::indy_multi_sign_request; + +use logic::type_aliases::{ProtocolVersion, ReqId}; +use utils::{IndyHandle, ErrorCode}; use utils::callbacks::ClosureHandler; +use utils::constants::general::PROTOCOL_VERSION; +use utils::ffi_support::{cstring_from_str, c_pointer_from_string}; +use utils::json_conversion::JsonSerialize; +use utils::random::rand_req_id; pub const DEFAULT_LIBSOVTOKEN_DID: &'static str = "LibsovtokenDid11111111"; diff --git a/libsovtoken/src/utils/callbacks.rs b/libsovtoken/src/utils/callbacks.rs index 60dea5529..1b746b4ac 100644 --- a/libsovtoken/src/utils/callbacks.rs +++ b/libsovtoken/src/utils/callbacks.rs @@ -1,13 +1,10 @@ -use utils::{ErrorCode, IndyHandle}; - -use utils::sequence::SequenceUtils; - -use std::os::raw::c_char; +//! use std::collections::HashMap; -use std::slice; use std::ffi::CStr; use std::fmt::Display; +use std::os::raw::c_char; +use std::slice; use std::sync::Mutex; use std::sync::mpsc::{channel, Receiver}; @@ -22,6 +19,9 @@ use indy_sys::{ResponseEmptyCB, ResponseStringSliceCB, ResponseBoolCB}; +use utils::{ErrorCode, IndyHandle}; +use utils::sequence::SequenceUtils; + fn log_error(e: T) { warn!("Unable to send through libindy callback: {}", e); } diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index ff92fcf43..30ee2aa3a 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -1,8 +1,9 @@ -use utils::ErrorCode; - +//! use std::sync::mpsc::Receiver; use std::time::Duration; +use utils::ErrorCode; + pub struct ResultHandler {} impl ResultHandler { diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index 5cb0e1d39..58ff27cdd 100644 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -7,7 +7,7 @@ mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index 4e31d5cc9..b65dfe47a 100644 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -4,11 +4,13 @@ extern crate indy; extern crate sovtoken; -mod utils; -use sovtoken::utils::random::rand_string; use std::{thread, time}; use std::collections::HashMap; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; +use sovtoken::utils::random::rand_string; + +mod utils; + use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index 18a3ddd36..5b312c309 100644 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -3,10 +3,11 @@ extern crate indy; extern crate sovtoken; +use std::collections::HashMap; +use sovtoken::utils::ErrorCode; + mod utils; -use utils::ErrorCode; -use std::collections::HashMap; use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index ac800c3fe..bc0e41d4a 100644 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -3,13 +3,16 @@ extern crate sovtoken; extern crate indy; +use std::{thread, time}; +use std::collections::HashMap; + +use sovtoken::utils::random::rand_string; +use sovtoken::utils::ErrorCode; + mod utils; -use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; -use std::{thread, time}; -use sovtoken::utils::random::rand_string; -use std::collections::HashMap; + pub const SCHEMA_VERSION: &'static str = "1.0"; pub const GVT_SCHEMA_ATTRIBUTES: &'static str = r#"["name", "age", "sex", "height"]"#; diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index 20b4b0267..719341c2a 100644 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -7,7 +7,7 @@ extern crate sovtoken; mod utils; use std::{thread, time}; use std::collections::HashMap; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs index f02b97aa0..bc9b0ba19 100644 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -2,10 +2,9 @@ //! tests for API related functions extern crate sovtoken; -extern crate indy; // lib-sdk project -use utils::ErrorCode; use sovtoken::api::sovtoken_init; +use sovtoken::utils::ErrorCode; #[test] diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs index 5f8b5d3db..97078d5b2 100644 --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -4,16 +4,18 @@ extern crate libc; extern crate sovtoken; extern crate indy; // lib-sdk project extern crate bs58; -pub mod utils; -use utils::ErrorCode; + use libc::c_char; -use sovtoken::utils::ffi_support; -use sovtoken::utils::test::callbacks; use std::ffi::CString; use std::ptr; use std::sync::mpsc::{Receiver}; use std::time::Duration; +use sovtoken::utils::ErrorCode; +use sovtoken::utils::ffi_support; +use sovtoken::utils::test::callbacks; + +pub mod utils; use utils::payment::fees; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index 73107217b..b1fbcee69 100644 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -9,8 +9,6 @@ extern crate serde_json; #[macro_use] extern crate log; -mod utils; - use libc::c_char; use std::sync::mpsc::channel; use std::time::Duration; @@ -18,12 +16,8 @@ use std::ptr; use std::ffi::CString; use indy::utils::results::ResultHandler; -use utils::ErrorCode; - -use utils::wallet::Wallet; -use utils::parse_mint_response::ParseMintResponse; -use utils::setup::{Setup, SetupConfig}; +use sovtoken::utils::ErrorCode; use sovtoken::utils::ffi_support::{str_from_char_ptr, c_pointer_from_str}; use sovtoken::utils::constants::txn_types::MINT_PUBLIC; use sovtoken::utils::constants::txn_fields::OUTPUTS; @@ -32,6 +26,11 @@ use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::config::output_mint_config::MintRequest; use sovtoken::logic::request::Request; +mod utils; + +use utils::wallet::Wallet; +use utils::parse_mint_response::ParseMintResponse; +use utils::setup::{Setup, SetupConfig}; // ***** HELPER METHODS ***** diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index 844ad0bd8..a23a4ef5b 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -8,18 +8,18 @@ extern crate bs58; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -use utils::ErrorCode; use indy::utils::results::ResultHandler; use libc::c_char; +use std::ptr; +use std::ffi::CString; +use std::time::Duration; +use std::sync::mpsc::channel; use sovtoken::logic::address; use sovtoken::logic::parsers::common::TXO; +use sovtoken::utils::ErrorCode; use sovtoken::utils::constants::txn_types::XFER_PUBLIC; use sovtoken::utils::ffi_support::c_pointer_from_string; use sovtoken::utils::test::callbacks; -use std::ptr; -use std::ffi::CString; -use std::time::Duration; -use std::sync::mpsc::channel; mod utils; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index 75035c17c..2a22abffd 100644 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -5,11 +5,12 @@ extern crate indy; use std::{thread, time}; +use sovtoken::utils::ErrorCode; +use sovtoken::logic::parsers::common::TXO; + mod utils; -use utils::ErrorCode; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; -use sovtoken::logic::parsers::common::TXO; fn sleep(msec: u64) { diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index afbc94e46..68db8b1f3 100644 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -1,6 +1,8 @@ //! //! tests for Payment related functions + +extern crate bs58; extern crate env_logger; extern crate libc; extern crate rand; @@ -9,9 +11,8 @@ extern crate rand; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate bs58; -extern crate sovtoken; extern crate indy; // lib-sdk project +extern crate sovtoken; use libc::c_char; use rand::Rng; @@ -19,10 +20,10 @@ use std::ptr; use std::ffi::CString; use std::time::Duration; -use utils::ErrorCode; use sovtoken::logic::config::payment_address_config::PaymentAddressConfig; use sovtoken::logic::address::unqualified_address_from_address; use sovtoken::utils::test::callbacks; +use sovtoken::utils::ErrorCode; mod utils; // ***** HELPER TEST DATA ***** diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index 78ae13ce2..61e681649 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -1,10 +1,10 @@ extern crate env_logger; -extern crate libc; -extern crate sovtoken; extern crate indy; +extern crate libc; extern crate serde_json; +extern crate sovtoken; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ "op": "REPLY", diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index 6a53db377..87d3e7ce1 100644 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -5,9 +5,9 @@ extern crate indy; // lib-sdk project #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; -pub mod utils; +use sovtoken::utils::ErrorCode; -use utils::ErrorCode; +pub mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index 0a03bf5de..debd06d74 100644 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -1,6 +1,7 @@ extern crate indy; +extern crate sovtoken; -use utils::ErrorCode; +use sovtoken::utils::ErrorCode; type DidAndVerKey = (String, String); diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs index 3171eddb1..f898a0fed 100644 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,7 +1,8 @@ extern crate indy; +extern crate sovtoken; -use utils::ErrorCode; use std::time::Duration; +use sovtoken::utils::ErrorCode; const SUBMIT_RETRY_CNT: usize = 3; diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs index dedef3e71..e42600958 100644 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -4,7 +4,8 @@ extern crate serde_json; use std::collections::HashMap; use std::str::FromStr; -use utils::ErrorCode; + +use sovtoken::utils::ErrorCode; use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs index c9bd3cd2c..7b491071e 100644 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -6,9 +6,9 @@ extern crate env_logger; extern crate indy; extern crate sovtoken; -use self::indy::ErrorCode; use self::indy::wallet::Wallet as IndyWallet; use self::sovtoken::utils::random::rand_string; +use self::sovtoken::utils::ErrorCode; static USEFUL_CREDENTIALS : &'static str = r#" { From ffeb15bf0de6c8cdab2aceda7ecd6db0f1d54364 Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Mon, 18 Mar 2019 09:13:55 -0600 Subject: [PATCH 64/91] trying to fix Signed-off-by: Matt Raffel --- libsovtoken/src/utils/mod.rs | 4 ++++ libsovtoken/tests/utils/did.rs | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index 98f263955..e782a5cc4 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -11,6 +11,7 @@ use std::sync::mpsc; +use std::convert::{From, Into}; #[macro_use] pub mod ffi_support; #[macro_use] pub mod json_conversion; @@ -245,6 +246,7 @@ pub enum ErrorCode impl ErrorCode { + #[allow(non_snake_case)] #[allow(dead_code)] #[allow(unused)] @@ -317,6 +319,7 @@ impl ErrorCode { PaymentInsufficientFundsError => "Payment cannot be processed because there was insufficient funds", PaymentSourceDoesNotExistError => "No such source on a ledger.", PaymentExtraFundsError => "Payment cannot be processed because there were more funds than required", + _ => "ErrorCode description not found", } } @@ -342,6 +345,7 @@ impl From for ErrorCode { if conversion.is_some() { conversion.unwrap() } else { + // TODO: is this really a panic ??? panic!("Unable to convert from {}, unknown error code", i) } } diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index debd06d74..e5482a1a6 100644 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -5,6 +5,13 @@ use sovtoken::utils::ErrorCode; type DidAndVerKey = (String, String); + +//impl From for ErrorCode { +// fn from(item: indy::ErrorCode) -> Self { +// item as ErrorCode +// } +//} + #[derive(Clone, Copy)] pub enum NymRole { @@ -32,7 +39,7 @@ pub fn create_nym( pool_handle: i32, did_trustee: &str, role: NymRole -) -> Result { +) -> Result { let (did, verkey) = indy::did::Did::new(wallet_handle, "{}").unwrap(); let req_nym = indy::ledger::Ledger::build_nym_request( @@ -72,7 +79,7 @@ Create and store the initial dids of trustees. Includes the initial trustee. */ -pub fn initial_trustees(num_trustees: u8, wallet_handle: i32, pool_handle: i32) -> Result, ErrorCode> { +pub fn initial_trustees(num_trustees: u8, wallet_handle: i32, pool_handle: i32) -> Result, sovtoken::utils::ErrorCode> { let first = initial_trustee(wallet_handle); let mut trustees = create_multiple_nym( From 88afb46093bd60e154c4c7f6a29f31de1bf4288c Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Mon, 18 Mar 2019 09:43:43 -0600 Subject: [PATCH 65/91] fixes compile error about conversions Signed-off-by: Matt Raffel --- libsovtoken/src/utils/mod.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index e782a5cc4..cbeb8a9db 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -339,6 +339,20 @@ impl ErrorCode { } } +impl From for ErrorCode { + fn from(e : indy::ErrorCode) -> Self { + let i: i32 = num_traits::ToPrimitive::to_i32(&e).unwrap(); + ErrorCode::from(i) + } +} + +impl Into for ErrorCode { + fn into(self) -> indy::ErrorCode { + let i: i32 = num_traits::ToPrimitive::to_i32(&self).unwrap(); + indy::ErrorCode::from(i) + } +} + impl From for ErrorCode { fn from(i: i32) -> Self { let conversion = num_traits::FromPrimitive::from_i32(i); From 2b449a954cd52b14ecefff8ac3445776fd561b15 Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Mon, 18 Mar 2019 11:16:40 -0600 Subject: [PATCH 66/91] down to one compile error Signed-off-by: Matt Raffel --- libsovtoken/tests/add_fees_for_cred_def_test.rs | 10 +++++----- libsovtoken/tests/add_fees_for_nym.rs | 8 ++++---- libsovtoken/tests/add_fees_for_revoke_reg_def.rs | 6 +++--- libsovtoken/tests/add_fees_for_schema_test.rs | 10 +++++----- .../tests/build_add_fees_txn_handler_test.rs | 8 ++++---- .../tests/build_payment_req_handler_test.rs | 14 +++++++------- libsovtoken/tests/build_verify_req_test.rs | 4 ++-- libsovtoken/tests/parse_payment_response_test.rs | 2 +- libsovtoken/tests/payment_chaos_tests.rs | 8 ++++---- libsovtoken/tests/utils/environment.rs | 3 +++ libsovtoken/tests/utils/ledger.rs | 3 ++- libsovtoken/tests/utils/wallet.rs | 2 +- 12 files changed, 41 insertions(+), 37 deletions(-) diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index b65dfe47a..5f5cffcab 100644 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -23,7 +23,7 @@ fn send_cred_def_with_fees(did: &str, inputs_json: &str, outputs_json: &str, extra: Option<&str>, - schema: Option) -> Result<(String, String, String), ErrorCode> { + schema: Option) -> Result<(String, String, String), indy::ErrorCode> { let schema = schema.unwrap_or_else(|| create_schema_json(did, name, version, attrs, wallet_handle, pool_handle)); let tag = rand_string(7); @@ -136,7 +136,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -144,7 +144,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -175,7 +175,7 @@ pub fn build_and_submit_cred_def_with_fees_double_spend() { send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -205,7 +205,7 @@ pub fn build_and_submit_cred_def_with_fees_twice_and_check_utxo_remain_unspent() let schema = Some(create_schema_json(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle)); let parsed_err = send_cred_def_with_fees(&did_new, rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, schema).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index 5b312c309..81f519b05 100644 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -88,7 +88,7 @@ pub fn build_and_submit_nym_with_fees_insufficient_funds() { let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); let err = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap_err(); - assert_eq!(err, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(err, indy::ErrorCode::PaymentInsufficientFundsError); } #[test] @@ -153,7 +153,7 @@ pub fn build_and_submit_nym_with_fees_utxo_already_spent() { let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); let err = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap_err(); - assert_eq!(err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -233,7 +233,7 @@ pub fn build_and_submit_nym_with_fees_from_invalid_did_and_check_utxo_remain_uns let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req, &inputs, &outputs, None).unwrap(); let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees).unwrap(); let err = indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure); + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -286,7 +286,7 @@ pub fn build_and_submit_nym_with_fees_from_other_nym_txn() { let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[1], &nym_req_with_fees_2).unwrap(); let err = indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure); + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees_1).unwrap(); indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap(); diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index bc0e41d4a..9921017af 100644 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -27,7 +27,7 @@ fn send_revoc_reg_def_with_fees(issuer_did: &str, extra: Option<&str>, wallet_handle: i32, pool_handle: i32, - cred_def_id: Option) -> Result { + cred_def_id: Option) -> Result { let cred_def_id = cred_def_id.unwrap_or_else(|| { let (_, id, _) = create_cred_def(issuer_did, name, @@ -194,7 +194,7 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_spent_utxo() { pool_handle, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -233,5 +233,5 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_insufficient_funds() { pool_handle, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); } diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index 719341c2a..89ef7f103 100644 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -20,7 +20,7 @@ fn send_schema_with_fees(did: &str, pool_handle: i32, inputs_json: &str, outputs_json: &str, - extra: Option<&str>) -> Result<(String, String, String, String), ErrorCode> { + extra: Option<&str>) -> Result<(String, String, String, String), indy::ErrorCode> { let (schema_id, schema_json) = indy::anoncreds::Issuer::create_schema(did, name, version, attrs).unwrap(); let schema_req = indy::ledger::Ledger::build_schema_request(did, &schema_json).unwrap(); let schema_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &schema_req).unwrap(); @@ -98,7 +98,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -106,7 +106,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -137,7 +137,7 @@ pub fn build_and_submit_schema_with_fees_double_spend() { send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap(); let err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); } @@ -178,7 +178,7 @@ pub fn build_and_submit_schema_with_fees_twice_and_check_utxo_remain_unspent() { let err = send_schema_with_fees(dids[0], name.as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure); + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2) diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index 38850b604..e22d59510 100644 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -8,16 +8,16 @@ use std::sync::mpsc::channel; use std::time::Duration; use indy::{IndyHandle, ErrorCode}; +use indy::utils::callbacks::ClosureHandler; use indy::utils::results::ResultHandler; +use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ffi_support::c_pointer_from_string; use sovtoken::utils::ffi_support::c_pointer_from_str; -use sovtoken::logic::parsers::common::TXO; -use sovtoken::utils::test::callbacks; use utils::wallet::Wallet; fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, extra: Option, request: String) -> Result { - let (receiver, command_handle, cb) = callbacks::cb_ec_string(); + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); let did = "mydid1"; let extra = extra.map(c_pointer_from_string).unwrap_or(std::ptr::null()); let error_code = sovtoken::api::add_request_fees_handler( @@ -213,5 +213,5 @@ fn build_add_fees_to_request_works_for_invalid_utxo() { let err = indy::payments::Payment::add_request_fees(wallet.handle, Some(&did), &fake_request, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure) + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index a23a4ef5b..bfa3f39fa 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -64,7 +64,7 @@ fn generate_payment_addresses(wallet: &Wallet) -> (Vec, Vec) { } fn get_resp_for_payment_req(pool_handle: i32, wallet_handle: i32, did: &str, - inputs: &str, outputs: &str) -> Result { + inputs: &str, outputs: &str) -> Result { let (req, method) = indy::payments::Payment::build_payment_req(wallet_handle, Some(did), inputs, outputs, None).unwrap(); let res = indy::ledger::Ledger::submit_request(pool_handle, &req).unwrap(); @@ -197,7 +197,7 @@ fn success_signed_request() { assert_eq!(ErrorCode::from(error_code), ErrorCode::Success); - let request_string = ResultHandler::one(ErrorCode::Success, receiver).unwrap(); + let request_string = ResultHandler::one(indy::ErrorCode::Success, receiver).unwrap(); let request: serde_json::value::Value = serde_json::from_str(&request_string).unwrap(); debug!("Received request {:?}", request); @@ -273,7 +273,7 @@ fn success_signed_request_from_libindy() { closure ); - let request_string = ResultHandler::one_timeout(ErrorCode::Success, receiver, Duration::from_secs(5)).unwrap(); + let request_string = ResultHandler::one_timeout(indy::ErrorCode::Success, receiver, Duration::from_secs(5)).unwrap(); let request: serde_json::value::Value = serde_json::from_str(&request_string).unwrap(); debug!("Received request {:?}", request); @@ -372,7 +372,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_1).unwrap_err(); - assert_eq!(res, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(res, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([ { @@ -386,7 +386,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_2).unwrap_err(); - assert_eq!(res, ErrorCode::PaymentExtraFundsError); + assert_eq!(res, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -422,7 +422,7 @@ pub fn build_and_submit_payment_req_with_spent_utxo() { "amount": 20 }]).to_string(); let err = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs).unwrap_err(); - assert_eq!(err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); //utxo should stay unspent! let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, dids[0], &addresses[0]); @@ -447,7 +447,7 @@ pub fn build_payment_with_invalid_utxo() { ]).to_string(); let err = indy::payments::Payment::build_payment_req(wallet.handle, Some(&did), &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure); + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); } pub fn build_payment_req_for_not_owned_payment_address() { diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index 2a22abffd..1ad65cc3b 100644 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -186,7 +186,7 @@ pub fn build_and_submit_verify_req_for_unexistant_utxo() { let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); let err = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap_err(); - assert_eq!(err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -199,5 +199,5 @@ fn build_verify_req_works_for_invalid_utxo() { let err = indy::payments::Payment::build_verify_req(wallet.handle, Some(&did), receipt).unwrap_err(); - assert_eq!(err, ErrorCode::CommonInvalidStructure) + assert_eq!(err, indy::ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index 61e681649..feb7d73eb 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -90,5 +90,5 @@ pub fn parse_payment_response_works() { pub fn parse_payment_response_works_for_invalid() { sovtoken::api::sovtoken_init(); let resp = indy::payments::Payment::parse_payment_response("sov", "123").unwrap_err(); - assert_eq!(resp, ErrorCode::CommonInvalidStructure); + assert_eq!(resp, indy::ErrorCode::CommonInvalidStructure); } \ No newline at end of file diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index 87d3e7ce1..f6a099a56 100644 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -39,7 +39,7 @@ pub fn pay_without_outputs_fails() { ]).to_string(); let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, ErrorCode::CommonInvalidStructure); + assert_eq!(ec, indy::ErrorCode::CommonInvalidStructure); } @@ -72,7 +72,7 @@ pub fn pay_without_inputs_fails() { ]).to_string(); let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, ErrorCode::CommonInvalidStructure); + assert_eq!(ec, indy::ErrorCode::CommonInvalidStructure); } // ------------------------------------------------------------------------------------------------ @@ -105,7 +105,7 @@ pub fn pay_from_non_existent_payment_source_fails() { ]).to_string(); let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, ErrorCode::WalletItemNotFound); + assert_eq!(ec, indy::ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ @@ -140,7 +140,7 @@ pub fn pay_from_existent_and_non_existent_payment_source_fails() { ]).to_string(); let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, ErrorCode::WalletItemNotFound); + assert_eq!(ec, indy::ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ diff --git a/libsovtoken/tests/utils/environment.rs b/libsovtoken/tests/utils/environment.rs index 99d368e83..e10373877 100644 --- a/libsovtoken/tests/utils/environment.rs +++ b/libsovtoken/tests/utils/environment.rs @@ -1,3 +1,6 @@ +// TODO: this should be removed and the warning fixed. this is temporary +#![allow(deprecated)] + use std::env; use std::path::PathBuf; diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs index f898a0fed..99cc1fccc 100644 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,8 +1,9 @@ extern crate indy; extern crate sovtoken; +use indy::ErrorCode; use std::time::Duration; -use sovtoken::utils::ErrorCode; + const SUBMIT_RETRY_CNT: usize = 3; diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs index 7b491071e..248cce3de 100644 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -8,7 +8,7 @@ extern crate sovtoken; use self::indy::wallet::Wallet as IndyWallet; use self::sovtoken::utils::random::rand_string; -use self::sovtoken::utils::ErrorCode; +use self::indy::ErrorCode; static USEFUL_CREDENTIALS : &'static str = r#" { From acd362838359a43abbb1e2823defee1db237dfd8 Mon Sep 17 00:00:00 2001 From: Matt Raffel Date: Mon, 18 Mar 2019 14:11:06 -0600 Subject: [PATCH 67/91] everything compiles. including tests. haven't actually run the tests yet. lots of cleanup Signed-off-by: Matt Raffel --- libsovtoken/tests/add_fees_for_attrib_test.rs | 10 +++++----- libsovtoken/tests/build_add_fees_txn_handler_test.rs | 10 +++++++++- libsovtoken/tests/build_mint_txn_handler_test.rs | 2 +- libsovtoken/tests/build_payment_req_handler_test.rs | 8 ++++---- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index 58ff27cdd..9ac810b6c 100644 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -107,7 +107,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_1).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -115,7 +115,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_2).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -145,7 +145,7 @@ pub fn build_and_submit_attrib_with_fees_from_invalid_did_and_check_utxo_remain_ }]).to_string(); let parsed_err = _send_attrib_with_fees(&did_new, Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -188,10 +188,10 @@ pub fn build_and_submit_attrib_with_fees_double_spend() { assert_eq!(ATTRIB_RAW_DATA, data); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA_2), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err, ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); } -fn _send_attrib_with_fees(did: &str, data: Option<&str>, wallet_handle: i32, pool_handle: i32, inputs: &str, outputs: &str) -> Result { +fn _send_attrib_with_fees(did: &str, data: Option<&str>, wallet_handle: i32, pool_handle: i32, inputs: &str, outputs: &str) -> Result { let attrib_req = indy::ledger::Ledger::build_attrib_request(did, did, None, data, None).unwrap(); let attrib_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &attrib_req).unwrap(); let (attrib_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet_handle, Some(did), &attrib_req_signed, inputs, outputs, None).unwrap(); diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index e22d59510..4f8ee6bdc 100644 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -4,6 +4,7 @@ extern crate sovtoken; extern crate indy; pub mod utils; +use std::os::raw::c_char; use std::sync::mpsc::channel; use std::time::Duration; @@ -16,8 +17,15 @@ use sovtoken::utils::ffi_support::c_pointer_from_str; use utils::wallet::Wallet; + +// ***** HELPER METHODS ***** +extern "C" fn empty_create_payment_callback(_command_handle_: i32, _err: i32, _payment_req: *const c_char) -> i32 { + return ErrorCode::Success as i32; +} + fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, extra: Option, request: String) -> Result { let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + let did = "mydid1"; let extra = extra.map(c_pointer_from_string).unwrap_or(std::ptr::null()); let error_code = sovtoken::api::add_request_fees_handler( @@ -28,7 +36,7 @@ fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, ext c_pointer_from_string(inputs), c_pointer_from_string(outputs), extra, - cb + Some(empty_create_payment_callback) ); return ResultHandler::one(ErrorCode::from(error_code), receiver); diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index b1fbcee69..8b09a46f4 100644 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -150,7 +150,7 @@ fn valid_output_json_from_libindy() { cb ); - assert_eq!(return_error, ErrorCode::Success, "Expecting Valid JSON for 'build_mint_txn_handler'"); + assert_eq!(return_error, indy::ErrorCode::Success, "Expecting Valid JSON for 'build_mint_txn_handler'"); let (req, payment_method) = ResultHandler::two_timeout(return_error, receiver, Duration::from_secs(5)).unwrap(); diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index bfa3f39fa..0070be345 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -8,10 +8,11 @@ extern crate bs58; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; +use indy::utils::callbacks::ClosureHandler; use indy::utils::results::ResultHandler; -use libc::c_char; use std::ptr; use std::ffi::CString; +use std::os::raw::c_char; use std::time::Duration; use std::sync::mpsc::channel; use sovtoken::logic::address; @@ -19,7 +20,6 @@ use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ErrorCode; use sovtoken::utils::constants::txn_types::XFER_PUBLIC; use sovtoken::utils::ffi_support::c_pointer_from_string; -use sovtoken::utils::test::callbacks; mod utils; use utils::wallet::Wallet; @@ -180,7 +180,7 @@ fn success_signed_request() { ] }); - let (receiver, command_handle, cb) = callbacks::cb_ec_string(); + let (receiver, command_handle, _) = ClosureHandler::cb_ec_string(); trace!("Calling build_payment_req"); @@ -192,7 +192,7 @@ fn success_signed_request() { c_pointer_from_string(inputs.to_string()), c_pointer_from_string(outputs.to_string()), ptr::null(), - cb + Some(empty_create_payment_callback) ); assert_eq!(ErrorCode::from(error_code), ErrorCode::Success); From 27cfea1fff7428be187b73c8cf9adc74c7af8072 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Wed, 20 Mar 2019 15:41:15 +0300 Subject: [PATCH 68/91] IS-1167: Updated Libsovtoken to use 1.8.1 indy rust wrapper and to use ErrorCode from wrapper. Signed-off-by: artem.ivanov --- libsovtoken/Cargo.toml | 4 +- libsovtoken/src/api/mod.rs | 3 +- libsovtoken/src/lib.rs | 4 +- libsovtoken/src/logic/indy_sdk_api/ledger.rs | 81 ++++ libsovtoken/src/logic/indy_sdk_api/mod.rs | 1 + libsovtoken/src/utils/mod.rs | 364 +----------------- libsovtoken/src/utils/results.rs | 115 +++--- libsovtoken/tests/add_fees_for_attrib_test.rs | 30 +- 8 files changed, 171 insertions(+), 431 deletions(-) create mode 100644 libsovtoken/src/logic/indy_sdk_api/ledger.rs diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index dd1530ffa..90fd7d74e 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -31,9 +31,7 @@ log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" indy-sys = "1.8.1" -indy = "=1.6.7" -num-traits = "0.2" -num-derive = "0.2" +indy = "1.8.1" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index bfb93eeef..4726a3ee2 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -23,6 +23,7 @@ use logic::config::{ }; use logic::did::Did; use logic::indy_sdk_api::crypto_api::CryptoSdk; +use logic::indy_sdk_api::ledger; use logic::minting; use logic::verify; use logic::parsers::{ @@ -822,7 +823,7 @@ pub extern "C" fn build_verify_req_handler( }; let did = did.map(|s| String::from(s)); - let res = indy::ledger::Ledger::build_get_txn_request_async( + let res = ledger::Ledger::build_get_txn_request_async( did.as_ref().map(|x| &**x), Some(LEDGER_ID), txo.seq_no as i32, diff --git a/libsovtoken/src/lib.rs b/libsovtoken/src/lib.rs index b973de19d..5f1302447 100644 --- a/libsovtoken/src/lib.rs +++ b/libsovtoken/src/lib.rs @@ -18,9 +18,6 @@ extern crate rand; extern crate serde; extern crate sodiumoxide; extern crate sha2; -extern crate num_traits; -#[macro_use] -extern crate num_derive; // ------------------------------------------ // crates from crate.io etc that require macro // ------------------------------------------ @@ -44,6 +41,7 @@ extern crate android_logger; // ------------------------------------------ extern crate indy_sys; // lib-sdk project +extern crate indyrs as indy; // lib-sdk rust wrapper to get ErrorCodes // ------------------------------------------ // define our crate by defining the modules in the project diff --git a/libsovtoken/src/logic/indy_sdk_api/ledger.rs b/libsovtoken/src/logic/indy_sdk_api/ledger.rs new file mode 100644 index 000000000..dba1a24c7 --- /dev/null +++ b/libsovtoken/src/logic/indy_sdk_api/ledger.rs @@ -0,0 +1,81 @@ +use utils::{ErrorCode, IndyHandle}; + +use std::ffi::CString; +use std::time::Duration; + +use indy_sys::ledger; +use indy_sys::ResponseStringCB; + +use utils::results::ResultHandler; +use utils::callbacks::ClosureHandler; + +pub struct Ledger {} + +impl Ledger { + /// Builds a GET_TXN request. Request to get any transaction by its seq_no. + /// + /// # Arguments + /// * `submitter_did` - DID of the request submitter. + /// * `ledger_type` - (Optional) type of the ledger the requested transaction belongs to: + /// DOMAIN - used default, + /// POOL, + /// CONFIG + /// * `seq_no` - seq_no of transaction in ledger. + /// + /// # Returns + /// Request result as json. + pub fn build_get_txn_request(submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Ledger::_build_get_txn_request(command_handle, submitter_did, ledger_type, seq_no, cb); + + ResultHandler::one(err, receiver) + } + + /// Builds a GET_TXN request. Request to get any transaction by its seq_no. + /// + /// # Arguments + /// * `submitter_did` - DID of the request submitter. + /// * `ledger_type` - (Optional) type of the ledger the requested transaction belongs to: + /// DOMAIN - used default, + /// POOL, + /// CONFIG + /// * `seq_no` - seq_no of transaction in ledger. + /// * `timeout` - the maximum time this function waits for a response + /// + /// # Returns + /// Request result as json. + pub fn build_get_txn_request_timeout(submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32, timeout: Duration) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Ledger::_build_get_txn_request(command_handle, submitter_did, ledger_type, seq_no, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Builds a GET_TXN request. Request to get any transaction by its seq_no. + /// + /// # Arguments + /// * `submitter_did` - DID of the request submitter. + /// * `ledger_type` - (Optional) type of the ledger the requested transaction belongs to: + /// DOMAIN - used default, + /// POOL, + /// CONFIG + /// * `seq_no` - seq_no of transaction in ledger. + /// * `closure` - The closure that is called when finished + /// + /// # Returns + /// Request result as json. + pub fn build_get_txn_request_async(submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32, closure: F) -> ErrorCode where F: FnMut(ErrorCode, String) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(Box::new(closure)); + + Ledger::_build_get_txn_request(command_handle, submitter_did, ledger_type, seq_no, cb) + } + + fn _build_get_txn_request(command_handle: IndyHandle, submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32, cb: Option) -> ErrorCode { + let submitter_did= opt_c_str_json!(submitter_did); + let ledger_type = opt_c_str_json!(ledger_type); + + ErrorCode::from(unsafe { ledger::indy_build_get_txn_request(command_handle, submitter_did.as_ptr(), ledger_type.as_ptr(), seq_no, cb) }) + } +} \ No newline at end of file diff --git a/libsovtoken/src/logic/indy_sdk_api/mod.rs b/libsovtoken/src/logic/indy_sdk_api/mod.rs index 676fbddfd..e38a919c7 100644 --- a/libsovtoken/src/logic/indy_sdk_api/mod.rs +++ b/libsovtoken/src/logic/indy_sdk_api/mod.rs @@ -2,3 +2,4 @@ pub mod crypto_api; pub mod crypto; +pub mod ledger; diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index cbeb8a9db..c55729d84 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -10,9 +10,6 @@ /// third: libsovtoken name spaces -use std::sync::mpsc; -use std::convert::{From, Into}; - #[macro_use] pub mod ffi_support; #[macro_use] pub mod json_conversion; #[macro_use] pub mod logger; @@ -31,364 +28,5 @@ pub mod test; pub type IndyHandle = i32; +pub use indy::ErrorCode; -#[derive(Debug, PartialEq, Copy, Clone, FromPrimitive, ToPrimitive)] -#[repr(i32)] -#[allow(dead_code)] -pub enum ErrorCode -{ - Success = 0, - - // Common errors - - // Caller passed invalid value as param 1 (null, invalid json and etc..) - CommonInvalidParam1 = 100, - - // Caller passed invalid value as param 2 (null, invalid json and etc..) - CommonInvalidParam2 = 101, - - // Caller passed invalid value as param 3 (null, invalid json and etc..) - CommonInvalidParam3 = 102, - - // Caller passed invalid value as param 4 (null, invalid json and etc..) - CommonInvalidParam4 = 103, - - // Caller passed invalid value as param 5 (null, invalid json and etc..) - CommonInvalidParam5 = 104, - - // Caller passed invalid value as param 6 (null, invalid json and etc..) - CommonInvalidParam6 = 105, - - // Caller passed invalid value as param 7 (null, invalid json and etc..) - CommonInvalidParam7 = 106, - - // Caller passed invalid value as param 8 (null, invalid json and etc..) - CommonInvalidParam8 = 107, - - // Caller passed invalid value as param 9 (null, invalid json and etc..) - CommonInvalidParam9 = 108, - - // Caller passed invalid value as param 10 (null, invalid json and etc..) - CommonInvalidParam10 = 109, - - // Caller passed invalid value as param 11 (null, invalid json and etc..) - CommonInvalidParam11 = 110, - - // Caller passed invalid value as param 11 (null, invalid json and etc..) - CommonInvalidParam12 = 111, - - // Invalid library state was detected in runtime. It signals library bug - CommonInvalidState = 112, - - // Object (json, config, key, credential and etc...) passed by library caller has invalid structure - CommonInvalidStructure = 113, - - // IO Error - CommonIOError = 114, - - // Caller passed invalid value as param 13 (null, invalid json and etc..) - CommonInvalidParam13 = 115, - - // Caller passed invalid value as param 14 (null, invalid json and etc..) - CommonInvalidParam14 = 116, - - // Caller passed invalid value as param 15 (null, invalid json and etc..) - CommonInvalidParam15 = 117, - - // Caller passed invalid value as param 16 (null, invalid json and etc..) - CommonInvalidParam16 = 118, - - // Caller passed invalid value as param 17 (null, invalid json and etc..) - CommonInvalidParam17 = 119, - - // Caller passed invalid value as param 18 (null, invalid json and etc..) - CommonInvalidParam18 = 120, - - // Caller passed invalid value as param 19 (null, invalid json and etc..) - CommonInvalidParam19 = 121, - - // Caller passed invalid value as param 20 (null, invalid json and etc..) - CommonInvalidParam20 = 122, - - // Caller passed invalid value as param 21 (null, invalid json and etc..) - CommonInvalidParam21 = 123, - - // Caller passed invalid value as param 22 (null, invalid json and etc..) - CommonInvalidParam22 = 124, - - // Caller passed invalid value as param 23 (null, invalid json and etc..) - CommonInvalidParam23 = 125, - - // Caller passed invalid value as param 24 (null, invalid json and etc..) - CommonInvalidParam24 = 126, - - // Caller passed invalid value as param 25 (null, invalid json and etc..) - CommonInvalidParam25 = 127, - - // Caller passed invalid value as param 26 (null, invalid json and etc..) - CommonInvalidParam26 = 128, - - // Caller passed invalid value as param 27 (null, invalid json and etc..) - CommonInvalidParam27 = 129, - - // Wallet errors - // Caller passed invalid wallet handle - WalletInvalidHandle = 200, - - // Unknown type of wallet was passed on create_wallet - WalletUnknownTypeError = 201, - - // Attempt to register already existing wallet type - WalletTypeAlreadyRegisteredError = 202, - - // Attempt to create wallet with name used for another exists wallet - WalletAlreadyExistsError = 203, - - // Requested entity id isn't present in wallet - WalletNotFoundError = 204, - - // Trying to use wallet with pool that has different name - WalletIncompatiblePoolError = 205, - - // Trying to open wallet that was opened already - WalletAlreadyOpenedError = 206, - - // Attempt to open encrypted wallet with invalid credentials - WalletAccessFailed = 207, - - // Input provided to wallet operations is considered not valid - WalletInputError = 208, - - // Decoding of wallet data during input/output failed - WalletDecodingError = 209, - - // Storage error occurred during wallet operation - WalletStorageError = 210, - - // Error during encryption-related operations - WalletEncryptionError = 211, - - // Requested wallet item not found - WalletItemNotFound = 212, - - // Returned if wallet's add_record operation is used with record name that already exists - WalletItemAlreadyExists = 213, - - // Returned if provided wallet query is invalid - WalletQueryError = 214, - - // Ledger errors - // Trying to open pool ledger that wasn't created before - PoolLedgerNotCreatedError = 300, - - // Caller passed invalid pool ledger handle - PoolLedgerInvalidPoolHandle = 301, - - // Pool ledger terminated - PoolLedgerTerminated = 302, - - // No concensus during ledger operation - LedgerNoConsensusError = 303, - - // Attempt to parse invalid transaction response - LedgerInvalidTransaction = 304, - - // Attempt to send transaction without the necessary privileges - LedgerSecurityError = 305, - - // Attempt to create pool ledger config with name used for another existing pool - PoolLedgerConfigAlreadyExistsError = 306, - - // Timeout for action - PoolLedgerTimeout = 307, - - // Attempt to open Pool for witch Genesis Transactions are not compatible with set Protocol version. - // Call pool.indy_set_protocol_version to set correct Protocol version. - PoolIncompatibleProtocolVersion = 308, - - // Revocation registry is full and creation of new registry is necessary - AnoncredsRevocationRegistryFullError = 400, - - AnoncredsInvalidUserRevocIndex = 401, - - // Attempt to generate master secret with duplicated name - AnoncredsMasterSecretDuplicateNameError = 404, - - AnoncredsProofRejected = 405, - - AnoncredsCredentialRevoked = 406, - - // Attempt to create credential definition with duplicated did schema pair - AnoncredsCredDefAlreadyExistsError = 407, - - // Signus errors - // Unknown format of DID entity keys - UnknownCryptoTypeError = 500, - - // Attempt to create duplicate did - DidAlreadyExistsError = 600, - - // Unknown payment method was given - UnknownPaymentMethod = 700, - - //No method were scraped from inputs/outputs or more than one were scraped - IncompatiblePaymentError = 701, - - // Insufficient funds on inputs - PaymentInsufficientFundsError = 702, - - // No such source on a ledger - PaymentSourceDoesNotExistError = 703, - - // Extra funds on inputs - PaymentExtraFundsError = 705, -} - - -impl ErrorCode { - - #[allow(non_snake_case)] - #[allow(dead_code)] - #[allow(unused)] - pub fn description(&self) -> &'static str { - match self { - CommonInvalidParam1 => "Caller passed invalid value as param 1", - CommonInvalidParam2 => "Caller passed invalid value as param 2", - CommonInvalidParam3 => "Caller passed invalid value as param 3", - CommonInvalidParam4 => "Caller passed invalid value as param 4", - CommonInvalidParam5 => "Caller passed invalid value as param 5", - CommonInvalidParam6 => "Caller passed invalid value as param 6", - CommonInvalidParam7 => "Caller passed invalid value as param 7", - CommonInvalidParam8 => "Caller passed invalid value as param 8", - CommonInvalidParam9 => "Caller passed invalid value as param 9", - CommonInvalidParam10 => "Caller passed invalid value as param 10", - CommonInvalidParam11 => "Caller passed invalid value as param 11", - CommonInvalidParam12 => "Caller passed invalid value as param 12", - CommonInvalidParam13 => "Caller passed invalid value as param 13", - CommonInvalidParam14 => "Caller passed invalid value as param 14", - CommonInvalidParam15 => "Caller passed invalid value as param 15", - CommonInvalidParam16 => "Caller passed invalid value as param 16", - CommonInvalidParam17 => "Caller passed invalid value as param 17", - CommonInvalidParam18 => "Caller passed invalid value as param 18", - CommonInvalidParam19 => "Caller passed invalid value as param 19", - CommonInvalidParam20 => "Caller passed invalid value as param 20", - CommonInvalidParam21 => "Caller passed invalid value as param 21", - CommonInvalidParam22 => "Caller passed invalid value as param 22", - CommonInvalidParam23 => "Caller passed invalid value as param 23", - CommonInvalidParam24 => "Caller passed invalid value as param 24", - CommonInvalidParam25 => "Caller passed invalid value as param 25", - CommonInvalidParam26 => "Caller passed invalid value as param 26", - CommonInvalidParam27 => "Caller passed invalid value as param 27", - CommonInvalidState => "Invalid library state was detected in runtime. It signals library bug", - CommonInvalidStructure => "Object (json, config, key, credential and etc...) passed by library caller has invalid structure", - CommonIOError => "IO Error", - WalletInvalidHandle => "Caller passed invalid wallet handle", - WalletUnknownTypeError => "Caller passed invalid wallet handle", - WalletTypeAlreadyRegisteredError => "Attempt to register already existing wallet type", - WalletAlreadyExistsError => "Attempt to create wallet with name used for another exists wallet", - WalletNotFoundError => "Requested entity id isn't present in wallet", - WalletIncompatiblePoolError => "Trying to use wallet with pool that has different name", - WalletAccessFailed => "Trying to open wallet encrypted wallet with invalid credentials", - WalletAlreadyOpenedError => "Trying to open wallet that was opened already", - WalletInputError => "Input provided to wallet operations is considered not valid", - WalletDecodingError => "Decoding of wallet data during input/output failed", - WalletStorageError => "Storage error occurred during wallet operation", - WalletEncryptionError => "Error during encryption-related operations", - WalletItemNotFound => "Requested wallet item not found", - WalletItemAlreadyExists => "Returned if wallet's add_record operation is used with record name that already exists", - WalletQueryError => "Returned if provided wallet query is invalid", - PoolLedgerNotCreatedError => "Trying to open pool ledger that wasn't created before", - PoolLedgerInvalidPoolHandle => "Caller passed invalid pool ledger handle", - PoolLedgerTerminated => "Pool ledger terminated", - LedgerNoConsensusError => "No concensus during ledger operation", - LedgerInvalidTransaction => "Attempt to send unknown or incomplete transaction message", - LedgerSecurityError => "Attempt to send transaction without the necessary privileges", - PoolLedgerConfigAlreadyExistsError => "Attempt to create pool ledger config with name used for another existing pool", - PoolLedgerTimeout => "Timeout for action", - PoolIncompatibleProtocolVersion => "Attempt to open Pool for witch Genesis Transactions are not compatible with set Protocol version. Set the correct Protocol version first.", - AnoncredsRevocationRegistryFullError => "Revocation registry is full and creation of new registry is necessary", - AnoncredsInvalidUserRevocIndex => "Invalid user revocation index", - AnoncredsMasterSecretDuplicateNameError => "Attempt to generate master secret with duplicated name", - AnoncredsProofRejected => "Proof rejected", - AnoncredsCredentialRevoked => "Credential revoked", - AnoncredsCredDefAlreadyExistsError => "Credential definition already exists", - UnknownCryptoTypeError => "Unknown format of DID entity keys", - DidAlreadyExistsError => "Did already exists", - UnknownPaymentMethod => "Unknown payment method was given", - IncompatiblePaymentError => "Multiple different payment methods were specified", - PaymentInsufficientFundsError => "Payment cannot be processed because there was insufficient funds", - PaymentSourceDoesNotExistError => "No such source on a ledger.", - PaymentExtraFundsError => "Payment cannot be processed because there were more funds than required", - _ => "ErrorCode description not found", - } - } - - pub fn is_ok(&self) -> bool { - *self == ErrorCode::Success - } - - pub fn is_err(&self) -> bool { - *self != ErrorCode::Success - } - - pub fn try_err(&self) -> Result<(), ErrorCode> { - if self.is_err() { - return Err(*self) - } - Ok(()) - } -} - -impl From for ErrorCode { - fn from(e : indy::ErrorCode) -> Self { - let i: i32 = num_traits::ToPrimitive::to_i32(&e).unwrap(); - ErrorCode::from(i) - } -} - -impl Into for ErrorCode { - fn into(self) -> indy::ErrorCode { - let i: i32 = num_traits::ToPrimitive::to_i32(&self).unwrap(); - indy::ErrorCode::from(i) - } -} - -impl From for ErrorCode { - fn from(i: i32) -> Self { - let conversion = num_traits::FromPrimitive::from_i32(i); - if conversion.is_some() { - conversion.unwrap() - } else { - // TODO: is this really a panic ??? - panic!("Unable to convert from {}, unknown error code", i) - } - } -} - -impl Into for ErrorCode { - fn into(self) -> i32 { - num_traits::ToPrimitive::to_i32(&self).unwrap() - } -} - -impl From for ErrorCode { - fn from(err: mpsc::RecvTimeoutError) -> Self { - match err { - mpsc::RecvTimeoutError::Timeout => { - warn!("Timed out waiting for libindy to call back"); - ErrorCode::CommonIOError - }, - mpsc::RecvTimeoutError::Disconnected => { - warn!("Channel to libindy was disconnected unexpectedly"); - ErrorCode::CommonIOError - } - } - } -} - -impl From for ErrorCode { - fn from(e: mpsc::RecvError) -> Self { - warn!("Channel returned an error - {:?}", e); - ErrorCode::CommonIOError - } -} \ No newline at end of file diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index 30ee2aa3a..4175ef341 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -6,87 +6,110 @@ use utils::ErrorCode; pub struct ResultHandler {} +macro_rules! try_err { + ($x:ident) => { + if $x != ErrorCode::Success { + return Err($x) + } + } +} + +fn map_recv_timeout_channel_error_error_code(err: ::std::sync::mpsc::RecvTimeoutError) -> ErrorCode { + match err { + ::std::sync::mpsc::RecvTimeoutError::Timeout => { + warn!("Timed out waiting for libindy to call back"); + ErrorCode::CommonIOError + } + ::std::sync::mpsc::RecvTimeoutError::Disconnected => { + warn!("Channel to libindy was disconnected unexpectedly"); + ErrorCode::CommonIOError + } + } +} + +fn map_recv_channel_error_error_code(err: ::std::sync::mpsc::RecvError) -> ErrorCode { + warn!("Channel returned an error - {:?}", err); + ErrorCode::CommonIOError +} + impl ResultHandler { pub fn empty(err: ErrorCode, receiver: Receiver) -> Result<(), ErrorCode> { - err.try_err()?; - match receiver.recv() { - Ok(err) => err.try_err(), - Err(e) => Err(ErrorCode::from(e)) - } + try_err!(err); + + let err = receiver.recv().map_err(map_recv_channel_error_error_code)?; + + try_err!(err); + + Ok(()) } pub fn empty_timeout(err: ErrorCode, receiver: Receiver, timeout: Duration) -> Result<(), ErrorCode> { - err.try_err()?; + try_err!(err); - match receiver.recv_timeout(timeout) { - Ok(err) => err.try_err(), - Err(e) => Err(ErrorCode::from(e)) - } + let err = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; + + try_err!(err); + + Ok(()) } pub fn one(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>) -> Result { - err.try_err()?; + try_err!(err); - let (err, val) = receiver.recv()?; + let (err, val) = receiver.recv().map_err(map_recv_channel_error_error_code)?; - err.try_err()?; + try_err!(err); Ok(val) } pub fn one_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>, timeout: Duration) -> Result { - err.try_err()?; - - match receiver.recv_timeout(timeout) { - Ok((err, val)) => { - err.try_err()?; - Ok(val) - }, - Err(e) => Err(ErrorCode::from(e)) - } + try_err!(err); + + let (err, val) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; + + try_err!(err); + + Ok(val) } pub fn two(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>) -> Result<(T1, T2), ErrorCode> { - err.try_err()?; + try_err!(err); - let (err, val, val2) = receiver.recv()?; + let (err, val, val2) = receiver.recv().map_err(map_recv_channel_error_error_code)?; - err.try_err()?; + try_err!(err); Ok((val, val2)) } pub fn two_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>, timeout: Duration) -> Result<(T1, T2), ErrorCode> { - err.try_err()?; - - match receiver.recv_timeout(timeout) { - Ok((err, val1, val2)) => { - err.try_err()?; - Ok((val1, val2)) - }, - Err(e) => Err(ErrorCode::from(e)) - } + try_err!(err); + + let (err, val, val2) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; + + try_err!(err); + + Ok((val, val2)) } pub fn three(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>) -> Result<(T1, T2, T3), ErrorCode> { - err.try_err()?; + try_err!(err); - let (err, val, val2, val3) = receiver.recv()?; + let (err, val, val2, val3) = receiver.recv().map_err(map_recv_channel_error_error_code)?; - err.try_err()?; + try_err!(err); Ok((val, val2, val3)) } pub fn three_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>, timeout: Duration) -> Result<(T1, T2, T3), ErrorCode> { - err.try_err()?; - - match receiver.recv_timeout(timeout) { - Ok((err, val1, val2, val3)) => { - err.try_err()?; - Ok((val1, val2, val3)) - }, - Err(e) => Err(ErrorCode::from(e)) - } + try_err!(err); + + let (err, val, val2, val3) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; + + try_err!(err); + + Ok((val, val2, val3)) } } diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index 9ac810b6c..5d613b0c4 100644 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -1,16 +1,16 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use sovtoken::utils::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; +use indy::future::Future; pub const ATTRIB_RAW_DATA_2: &'static str = r#"{"endpoint":{"ha":"127.0.0.1:5555"}}"#; pub const ATTRIB_RAW_DATA: &'static str = r#"{"endpoint":{"ha":"127.0.0.1:5555"}}"#; @@ -107,7 +107,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_1).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -115,7 +115,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_2).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -134,7 +134,7 @@ pub fn build_and_submit_attrib_with_fees_from_invalid_did_and_check_utxo_remain_ let pool_handle = setup.pool_handle; let dids = setup.trustees.dids(); - let (did_new, _) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, _) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); let utxo = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); @@ -145,7 +145,7 @@ pub fn build_and_submit_attrib_with_fees_from_invalid_did_and_check_utxo_remain_ }]).to_string(); let parsed_err = _send_attrib_with_fees(&did_new, Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err.error_code, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -188,20 +188,20 @@ pub fn build_and_submit_attrib_with_fees_double_spend() { assert_eq!(ATTRIB_RAW_DATA, data); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA_2), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } -fn _send_attrib_with_fees(did: &str, data: Option<&str>, wallet_handle: i32, pool_handle: i32, inputs: &str, outputs: &str) -> Result { - let attrib_req = indy::ledger::Ledger::build_attrib_request(did, did, None, data, None).unwrap(); - let attrib_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &attrib_req).unwrap(); - let (attrib_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet_handle, Some(did), &attrib_req_signed, inputs, outputs, None).unwrap(); - let attrib_resp = indy::ledger::Ledger::submit_request(pool_handle, &attrib_req_with_fees).unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &attrib_resp) +fn _send_attrib_with_fees(did: &str, data: Option<&str>, wallet_handle: i32, pool_handle: i32, inputs: &str, outputs: &str) -> Result { + let attrib_req = indy::ledger::build_attrib_request(did, did, None, data, None).wait().unwrap(); + let attrib_req_signed = indy::ledger::sign_request(wallet_handle, did, &attrib_req).wait().unwrap(); + let (attrib_req_with_fees, pm) = indy::payments::add_request_fees(wallet_handle, Some(did), &attrib_req_signed, inputs, outputs, None).wait().unwrap(); + let attrib_resp = indy::ledger::submit_request(pool_handle, &attrib_req_with_fees).wait().unwrap(); + indy::payments::parse_response_with_fees(&pm, &attrib_resp).wait() } fn send_get_attrib_req(wallet: &Wallet, pool_handle: i32, did: &str, target: &str, attribute: Option<&str>) -> String { - let get_attrib_req = indy::ledger::Ledger::build_get_attrib_request(Some(did), target, attribute, None, None).unwrap(); - indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, did, &get_attrib_req).unwrap() + let get_attrib_req = indy::ledger::build_get_attrib_request(Some(did), target, attribute, None, None).wait().unwrap(); + indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, did, &get_attrib_req).wait().unwrap() } fn get_data_from_attrib_reply(reply: String) -> String { From f6be76d007d82ffd4250d4b96767b06f0620db7d Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Wed, 20 Mar 2019 15:50:14 +0300 Subject: [PATCH 69/91] IS-1167: Updated Libsovtoken tests to satisfy 1.8.1 indy rust wrapper Signed-off-by: artem.ivanov --- .../tests/add_fees_for_cred_def_test.rs | 58 +++---- libsovtoken/tests/add_fees_for_nym.rs | 117 +++++++------- .../tests/add_fees_for_revoke_reg_def.rs | 147 +++++++++--------- libsovtoken/tests/add_fees_for_schema_test.rs | 34 ++-- .../tests/build_add_fees_txn_handler_test.rs | 48 +++--- .../tests/build_fees_txn_handler_test.rs | 2 +- .../build_get_utxo_request_handler_test.rs | 18 ++- .../tests/build_mint_txn_handler_test.rs | 49 +++--- .../tests/build_payment_req_handler_test.rs | 51 +++--- libsovtoken/tests/build_verify_req_test.rs | 60 +++---- libsovtoken/tests/create_payment_tests.rs | 10 +- .../tests/parse_payment_response_test.rs | 10 +- libsovtoken/tests/payment_chaos_tests.rs | 46 +++--- libsovtoken/tests/utils/did.rs | 30 ++-- libsovtoken/tests/utils/ledger.rs | 12 +- libsovtoken/tests/utils/mint.rs | 12 +- libsovtoken/tests/utils/payment/address.rs | 7 +- libsovtoken/tests/utils/payment/fees.rs | 16 +- libsovtoken/tests/utils/payment/get_utxo.rs | 10 +- libsovtoken/tests/utils/pool.rs | 7 +- libsovtoken/tests/utils/setup.rs | 7 +- libsovtoken/tests/utils/wallet.rs | 37 ++--- 22 files changed, 390 insertions(+), 398 deletions(-) diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index 5f5cffcab..1fced95bc 100644 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -1,12 +1,12 @@ -#[macro_use] extern crate serde_json; -#[macro_use] extern crate serde_derive; -extern crate indy; +#[macro_use] +extern crate serde_json; +#[macro_use] +extern crate serde_derive; +extern crate indyrs as indy; extern crate sovtoken; - use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::ErrorCode; use sovtoken::utils::random::rand_string; mod utils; @@ -14,6 +14,8 @@ mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; +use indy::future::Future; + fn send_cred_def_with_fees(did: &str, name: &str, version: &str, @@ -23,32 +25,32 @@ fn send_cred_def_with_fees(did: &str, inputs_json: &str, outputs_json: &str, extra: Option<&str>, - schema: Option) -> Result<(String, String, String), indy::ErrorCode> { + schema: Option) -> Result<(String, String, String), indy::IndyError> { let schema = schema.unwrap_or_else(|| create_schema_json(did, name, version, attrs, wallet_handle, pool_handle)); let tag = rand_string(7); - let (cred_def_id, cred_def_json) = indy::anoncreds::Issuer::create_and_store_credential_def( + let (cred_def_id, cred_def_json) = indy::anoncreds::issuer_create_and_store_credential_def( wallet_handle, did, &schema, &tag, None, &json!({"support_revocation": false}).to_string() - ).unwrap(); + ).wait().unwrap(); - let cred_def_req = indy::ledger::Ledger::build_cred_def_request(did, &cred_def_json).unwrap(); - let cred_def_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &cred_def_req).unwrap(); - let (cred_def_req_with_fees, pm) = indy::payments::Payment::add_request_fees( + let cred_def_req = indy::ledger::build_cred_def_request(did, &cred_def_json).wait().unwrap(); + let cred_def_req_signed = indy::ledger::sign_request(wallet_handle, did, &cred_def_req).wait().unwrap(); + let (cred_def_req_with_fees, pm) = indy::payments::add_request_fees( wallet_handle, Some(did), &cred_def_req_signed, inputs_json, outputs_json, extra - ).unwrap(); - let cred_def_response_with_fees = indy::ledger::Ledger::submit_request(pool_handle, &cred_def_req_with_fees).unwrap(); + ).wait().unwrap(); + let cred_def_response_with_fees = indy::ledger::submit_request(pool_handle, &cred_def_req_with_fees).wait().unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &cred_def_response_with_fees).map(|s| (s, cred_def_id, cred_def_json)) + indy::payments::parse_response_with_fees(&pm, &cred_def_response_with_fees).map(|s| (s, cred_def_id, cred_def_json)).wait() } fn create_schema_json(did: &str, @@ -57,14 +59,14 @@ fn create_schema_json(did: &str, attrs: &str, wallet_handle: i32, pool_handle: i32) -> String { - let (schema_id, schema_json) = indy::anoncreds::Issuer::create_schema(did, name, version, attrs).unwrap(); - let schema_req = indy::ledger::Ledger::build_schema_request(did, &schema_json).unwrap(); - let schema_resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &schema_req).unwrap(); + let (schema_id, schema_json) = indy::anoncreds::issuer_create_schema(did, name, version, attrs).wait().unwrap(); + let schema_req = indy::ledger::build_schema_request(did, &schema_json).wait().unwrap(); + let schema_resp = indy::ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &schema_req).wait().unwrap(); thread::sleep(time::Duration::from_millis(100)); - let get_schema_req = indy::ledger::Ledger::build_get_schema_request(Some(did), &schema_id).unwrap(); - let get_schema_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &get_schema_req).unwrap(); + let get_schema_req = indy::ledger::build_get_schema_request(Some(did), &schema_id).wait().unwrap(); + let get_schema_req_signed = indy::ledger::sign_request(wallet_handle, did, &get_schema_req).wait().unwrap(); let get_schema_resp = utils::ledger::submit_request_with_retries(pool_handle, &get_schema_req_signed, &schema_resp).unwrap(); - let (_, schema_json) = indy::ledger::Ledger::parse_get_schema_response(&get_schema_resp).unwrap(); + let (_, schema_json) = indy::ledger::parse_get_schema_response(&get_schema_resp).wait().unwrap(); schema_json } @@ -105,9 +107,9 @@ pub fn build_and_submit_cred_def_with_fees() { thread::sleep(time::Duration::from_millis(100)); - let get_cred_def_req = indy::ledger::Ledger::build_get_cred_def_request(Some(dids[0]), &cred_def_id).unwrap(); - let get_cred_def_resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_cred_def_req).unwrap(); - let (cred_def_id_get, _) = indy::ledger::Ledger::parse_get_cred_def_response(&get_cred_def_resp).unwrap(); + let get_cred_def_req = indy::ledger::build_get_cred_def_request(Some(dids[0]), &cred_def_id).wait().unwrap(); + let get_cred_def_resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_cred_def_req).wait().unwrap(); + let (cred_def_id_get, _) = indy::ledger::parse_get_cred_def_response(&get_cred_def_resp).wait().unwrap(); assert_eq!(cred_def_id, cred_def_id_get); } @@ -136,7 +138,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None, None).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -144,7 +146,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None, None).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -175,7 +177,7 @@ pub fn build_and_submit_cred_def_with_fees_double_spend() { send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -193,7 +195,7 @@ pub fn build_and_submit_cred_def_with_fees_twice_and_check_utxo_remain_unspent() let addresses = &setup.addresses; let pool_handle = setup.pool_handle; let dids = setup.trustees.dids(); - let (did_new, _) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, _) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); let utxo = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); @@ -205,7 +207,7 @@ pub fn build_and_submit_cred_def_with_fees_twice_and_check_utxo_remain_unspent() let schema = Some(create_schema_json(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle)); let parsed_err = send_cred_def_with_fees(&did_new, rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, schema).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err.error_code, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index 81f519b05..a4c1fdb67 100644 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -1,10 +1,9 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; use std::collections::HashMap; -use sovtoken::utils::ErrorCode; mod utils; @@ -12,6 +11,8 @@ use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; +use indy::future::Future; + #[test] pub fn build_and_submit_nym_with_fees() { let wallet = Wallet::new(); @@ -37,21 +38,21 @@ pub fn build_and_submit_nym_with_fees() { "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - let parsed_resp = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap(); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + let parsed_resp = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap(); let parsed_resp_json: Vec> = serde_json::from_str(&parsed_resp).unwrap(); assert_eq!(parsed_resp_json.len(), 1); assert_eq!(parsed_resp_json[0].get("amount").unwrap().as_u64().unwrap(), 9); assert_eq!(parsed_resp_json[0].get("recipient").unwrap().as_str().unwrap(), addresses[0]); - let get_nym_req = indy::ledger::Ledger::build_get_nym_request(Some(dids[0]), &did_new).unwrap(); - let get_nym_resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_nym_req).unwrap(); + let get_nym_req = indy::ledger::build_get_nym_request(Some(dids[0]), &did_new).wait().unwrap(); + let get_nym_resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_nym_req).wait().unwrap(); let get_nym_resp_json: serde_json::Value = serde_json::from_str(&get_nym_resp).unwrap(); assert!(get_nym_resp_json.as_object().unwrap().get("result").unwrap().as_object().unwrap().get("data").is_some()); } @@ -81,14 +82,14 @@ pub fn build_and_submit_nym_with_fees_insufficient_funds() { "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - let err = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap_err(); - assert_eq!(err, indy::ErrorCode::PaymentInsufficientFundsError); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + let err = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); } #[test] @@ -104,12 +105,12 @@ pub fn build_and_submit_nym_with_no_fees() { let pool_handle = setup.pool_handle; let dids = setup.trustees.dids(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_signed).unwrap(); - let resp = indy::payments::Payment::parse_response_with_fees("sov", &nym_resp).unwrap(); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_signed).wait().unwrap(); + let resp = indy::payments::parse_response_with_fees("sov", &nym_resp).wait().unwrap(); assert_eq!(resp, json!([]).to_string()); } @@ -138,22 +139,22 @@ pub fn build_and_submit_nym_with_fees_utxo_already_spent() { "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap(); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap(); - let (did_new_2, verkey_new_2) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new_2, verkey_new_2) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new_2, Some(&verkey_new_2), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - let err = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap_err(); - assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new_2, Some(&verkey_new_2), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + let err = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -181,13 +182,13 @@ pub fn build_and_submit_nym_with_fees_and_get_utxo() { "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - let parsed_resp = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap(); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + let parsed_resp = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap(); let parsed_resp_json: Vec> = serde_json::from_str(&parsed_resp).unwrap(); assert_eq!(parsed_resp_json.len(), 1); @@ -226,14 +227,14 @@ pub fn build_and_submit_nym_with_fees_from_invalid_did_and_check_utxo_remain_uns "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); - let (did_new_2, _) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); + let (did_new_2, _) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(&did_new_2, &did_new, Some(&verkey_new), None, None).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req, &inputs, &outputs, None).unwrap(); - let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees).unwrap(); - let err = indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); + let nym_req = indy::ledger::build_nym_request(&did_new_2, &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req, &inputs, &outputs, None).wait().unwrap(); + let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees).wait().unwrap(); + let err = indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -269,13 +270,13 @@ pub fn build_and_submit_nym_with_fees_from_other_nym_txn() { // User 1 generates fees for his nym and sends it to the ledger // Malicious node gets the request from user, fetches fees from it and sends its own nym with that fees // It should not be accepted by other nodes and nym from user should be written - let (did_new_1, verkey_new_1) = indy::did::Did::new(wallet.handle, "{}").unwrap(); - let (did_new_2, verkey_new_2) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new_1, verkey_new_1) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); + let (did_new_2, verkey_new_2) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req_1 = indy::ledger::Ledger::build_nym_request(dids[0], &did_new_1, Some(&verkey_new_1), None, None).unwrap(); - let nym_req_2 = indy::ledger::Ledger::build_nym_request(dids[1], &did_new_2, Some(&verkey_new_2), None, None).unwrap(); + let nym_req_1 = indy::ledger::build_nym_request(dids[0], &did_new_1, Some(&verkey_new_1), None, None).wait().unwrap(); + let nym_req_2 = indy::ledger::build_nym_request(dids[1], &did_new_2, Some(&verkey_new_2), None, None).wait().unwrap(); - let (nym_req_with_fees_1, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_1, &inputs, &outputs, None).unwrap(); + let (nym_req_with_fees_1, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_1, &inputs, &outputs, None).wait().unwrap(); let nym_req_with_fees_1_parsed = serde_json::from_str::>(&nym_req_with_fees_1).unwrap(); let fees: &serde_json::Value = nym_req_with_fees_1_parsed.get("fees").unwrap(); @@ -284,10 +285,10 @@ pub fn build_and_submit_nym_with_fees_from_other_nym_txn() { nym_req_without_fees.insert("fees".to_string(), fees.clone()); let nym_req_with_fees_2 = serde_json::to_string(&nym_req_without_fees).unwrap(); - let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[1], &nym_req_with_fees_2).unwrap(); - let err = indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); + let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[1], &nym_req_with_fees_2).wait().unwrap(); + let err = indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); - let resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees_1).unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &resp).unwrap(); + let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees_1).wait().unwrap(); + indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap(); } diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index 9921017af..73b9bc6b1 100644 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -1,18 +1,21 @@ -#[macro_use] extern crate serde_json; -#[macro_use] extern crate serde_derive; +#[macro_use] +extern crate serde_json; +#[macro_use] +extern crate serde_derive; extern crate sovtoken; -extern crate indy; +extern crate indyrs as indy; use std::{thread, time}; use std::collections::HashMap; use sovtoken::utils::random::rand_string; -use sovtoken::utils::ErrorCode; mod utils; + use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; +use indy::future::Future; pub const SCHEMA_VERSION: &'static str = "1.0"; pub const GVT_SCHEMA_ATTRIBUTES: &'static str = r#"["name", "age", "sex", "height"]"#; @@ -27,42 +30,42 @@ fn send_revoc_reg_def_with_fees(issuer_did: &str, extra: Option<&str>, wallet_handle: i32, pool_handle: i32, - cred_def_id: Option) -> Result { + cred_def_id: Option) -> Result { let cred_def_id = cred_def_id.unwrap_or_else(|| { let (_, id, _) = create_cred_def(issuer_did, - name, - version, - attrs, - wallet_handle, - pool_handle, - None); + name, + version, + attrs, + wallet_handle, + pool_handle, + None); id }); let tails_writer_config = utils::anoncreds::tails_writer_config(); - let tails_writer_handle = indy::blob_storage::Blob::open_writer("default", &tails_writer_config).unwrap(); + let tails_writer_handle = indy::blob_storage::open_writer("default", &tails_writer_config).wait().unwrap(); let it: Option = None; let (_rev_reg_id, revoc_reg_def_json, _rev_reg_entry_json) = - indy::anoncreds::Issuer::create_and_store_revoc_reg(wallet_handle, - issuer_did, - None, - tag, - &cred_def_id, - &json!({ "max_cred_num": Some(5), "issuance_type": it }).to_string(), - tails_writer_handle).unwrap(); - - let req = indy::ledger::Ledger::build_revoc_reg_def_request(issuer_did, &revoc_reg_def_json).unwrap(); + indy::anoncreds::issuer_create_and_store_revoc_reg(wallet_handle, + issuer_did, + None, + tag, + &cred_def_id, + &json!({ "max_cred_num": Some(5), "issuance_type": it }).to_string(), + tails_writer_handle).wait().unwrap(); + + let req = indy::ledger::build_revoc_reg_def_request(issuer_did, &revoc_reg_def_json).wait().unwrap(); let (req_with_fees, pm) = - indy::payments::Payment::add_request_fees( + indy::payments::add_request_fees( wallet_handle, Some(issuer_did), &req, inputs_json, outputs_json, - extra).unwrap(); - let response = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, issuer_did, &req_with_fees).unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &response) + extra).wait().unwrap(); + let response = indy::ledger::sign_and_submit_request(pool_handle, wallet_handle, issuer_did, &req_with_fees).wait().unwrap(); + indy::payments::parse_response_with_fees(&pm, &response).wait() } fn create_cred_def(did: &str, @@ -75,18 +78,18 @@ fn create_cred_def(did: &str, let schema = schema.unwrap_or_else(|| create_schema_json(did, name, version, attrs, wallet_handle, pool_handle)); let tag = rand_string(7); - let (cred_def_id, cred_def_json) = indy::anoncreds::Issuer::create_and_store_credential_def( + let (cred_def_id, cred_def_json) = indy::anoncreds::issuer_create_and_store_credential_def( wallet_handle, did, &schema, &tag, None, &json!({"support_revocation": true}).to_string() - ).unwrap(); + ).wait().unwrap(); - let cred_def_req = indy::ledger::Ledger::build_cred_def_request(did, &cred_def_json).unwrap(); - let cred_def_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &cred_def_req).unwrap(); - indy::ledger::Ledger::submit_request(pool_handle, &cred_def_req_signed).unwrap(); + let cred_def_req = indy::ledger::build_cred_def_request(did, &cred_def_json).wait().unwrap(); + let cred_def_req_signed = indy::ledger::sign_request(wallet_handle, did, &cred_def_req).wait().unwrap(); + indy::ledger::submit_request(pool_handle, &cred_def_req_signed).wait().unwrap(); (schema, cred_def_id, cred_def_json) } @@ -97,14 +100,14 @@ fn create_schema_json(did: &str, attrs: &str, wallet_handle: i32, pool_handle: i32) -> String { - let (schema_id, schema_json) = indy::anoncreds::Issuer::create_schema(did, name, version, attrs).unwrap(); - let schema_req = indy::ledger::Ledger::build_schema_request(did, &schema_json).unwrap(); - let schema_resp = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &schema_req).unwrap(); + let (schema_id, schema_json) = indy::anoncreds::issuer_create_schema(did, name, version, attrs).wait().unwrap(); + let schema_req = indy::ledger::build_schema_request(did, &schema_json).wait().unwrap(); + let schema_resp = indy::ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &schema_req).wait().unwrap(); thread::sleep(time::Duration::from_millis(100)); - let get_schema_req = indy::ledger::Ledger::build_get_schema_request(Some(did), &schema_id).unwrap(); - let get_schema_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &get_schema_req).unwrap(); + let get_schema_req = indy::ledger::build_get_schema_request(Some(did), &schema_id).wait().unwrap(); + let get_schema_req_signed = indy::ledger::sign_request(wallet_handle, did, &get_schema_req).wait().unwrap(); let get_schema_resp = utils::ledger::submit_request_with_retries(pool_handle, &get_schema_req_signed, &schema_resp).unwrap(); - let (_, schema_json) = indy::ledger::Ledger::parse_get_schema_response(&get_schema_resp).unwrap(); + let (_, schema_json) = indy::ledger::parse_get_schema_response(&get_schema_resp).wait().unwrap(); schema_json } @@ -133,16 +136,16 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees() { }]).to_string(); let parsed_resp = send_revoc_reg_def_with_fees(dids[0], - rand_string(5).as_str(), - SCHEMA_VERSION, - rand_string(7).as_str(), - GVT_SCHEMA_ATTRIBUTES, - &inputs, - &outputs, - None, - wallet.handle, - pool_handle, - None).unwrap(); + rand_string(5).as_str(), + SCHEMA_VERSION, + rand_string(7).as_str(), + GVT_SCHEMA_ATTRIBUTES, + &inputs, + &outputs, + None, + wallet.handle, + pool_handle, + None).unwrap(); let parsed_resp_json: Vec> = serde_json::from_str(&parsed_resp).unwrap(); assert_eq!(parsed_resp_json.len(), 1); @@ -174,8 +177,8 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_spent_utxo() { "amount": 10 }]).to_string(); - let (req, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &inputs, &outputs, None).unwrap(); - indy::ledger::Ledger::submit_request(pool_handle, &req).unwrap(); + let (req, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &inputs, &outputs, None).wait().unwrap(); + indy::ledger::submit_request(pool_handle, &req).wait().unwrap(); let outputs_2 = json!([{ "recipient": addresses[0], @@ -183,18 +186,18 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_spent_utxo() { }]).to_string(); let parsed_err = send_revoc_reg_def_with_fees(dids[0], - rand_string(5).as_str(), - SCHEMA_VERSION, - rand_string(7).as_str(), - GVT_SCHEMA_ATTRIBUTES, - &inputs, - &outputs_2, - None, - wallet.handle, - pool_handle, - None).unwrap_err(); - - assert_eq!(parsed_err, indy::ErrorCode::PaymentSourceDoesNotExistError); + rand_string(5).as_str(), + SCHEMA_VERSION, + rand_string(7).as_str(), + GVT_SCHEMA_ATTRIBUTES, + &inputs, + &outputs_2, + None, + wallet.handle, + pool_handle, + None).unwrap_err(); + + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -222,16 +225,16 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_insufficient_funds() { }]).to_string(); let parsed_err = send_revoc_reg_def_with_fees(dids[0], - rand_string(5).as_str(), - SCHEMA_VERSION, - rand_string(7).as_str(), - GVT_SCHEMA_ATTRIBUTES, - &inputs, - &outputs, - None, - wallet.handle, - pool_handle, - None).unwrap_err(); - - assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); + rand_string(5).as_str(), + SCHEMA_VERSION, + rand_string(7).as_str(), + GVT_SCHEMA_ATTRIBUTES, + &inputs, + &outputs, + None, + wallet.handle, + pool_handle, + None).unwrap_err(); + + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); } diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index 89ef7f103..b009b3e1c 100644 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -1,17 +1,17 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; - mod utils; use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; +use indy::future::Future; + fn send_schema_with_fees(did: &str, name: &str, version: &str, @@ -20,13 +20,13 @@ fn send_schema_with_fees(did: &str, pool_handle: i32, inputs_json: &str, outputs_json: &str, - extra: Option<&str>) -> Result<(String, String, String, String), indy::ErrorCode> { - let (schema_id, schema_json) = indy::anoncreds::Issuer::create_schema(did, name, version, attrs).unwrap(); - let schema_req = indy::ledger::Ledger::build_schema_request(did, &schema_json).unwrap(); - let schema_req_signed = indy::ledger::Ledger::sign_request(wallet_handle, did, &schema_req).unwrap(); - let (schema_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet_handle, Some(did), &schema_req_signed, inputs_json, outputs_json, extra).unwrap(); - let schema_resp = indy::ledger::Ledger::submit_request(pool_handle, &schema_req_with_fees).unwrap(); - indy::payments::Payment::parse_response_with_fees(&pm, &schema_resp).map(|s| (s, schema_id, schema_json, schema_resp)) + extra: Option<&str>) -> Result<(String, String, String, String), indy::IndyError> { + let (schema_id, schema_json) = indy::anoncreds::issuer_create_schema(did, name, version, attrs).wait().unwrap(); + let schema_req = indy::ledger::build_schema_request(did, &schema_json).wait().unwrap(); + let schema_req_signed = indy::ledger::sign_request(wallet_handle, did, &schema_req).wait().unwrap(); + let (schema_req_with_fees, pm) = indy::payments::add_request_fees(wallet_handle, Some(did), &schema_req_signed, inputs_json, outputs_json, extra).wait().unwrap(); + let schema_resp = indy::ledger::submit_request(pool_handle, &schema_req_with_fees).wait().unwrap(); + indy::payments::parse_response_with_fees(&pm, &schema_resp).wait().map(|s| (s, schema_id, schema_json, schema_resp)) } pub const SCHEMA_VERSION: &'static str = "1.0"; @@ -65,10 +65,10 @@ pub fn build_and_submit_schema_with_fees() { thread::sleep(time::Duration::from_millis(100)); - let get_schema_req = indy::ledger::Ledger::build_get_schema_request(Some(dids[0]), &schema_id).unwrap(); - let get_schema_req_signed = indy::ledger::Ledger::sign_request( wallet.handle, dids[0], &get_schema_req).unwrap(); + let get_schema_req = indy::ledger::build_get_schema_request(Some(dids[0]), &schema_id).wait().unwrap(); + let get_schema_req_signed = indy::ledger::sign_request( wallet.handle, dids[0], &get_schema_req).wait().unwrap(); let get_schema_resp = utils::ledger::submit_request_with_retries(pool_handle, &get_schema_req_signed, &schema_resp).unwrap(); - let (schema_id_get, _) = indy::ledger::Ledger::parse_get_schema_response(&get_schema_resp).unwrap(); + let (schema_id_get, _) = indy::ledger::parse_get_schema_response(&get_schema_resp).wait().unwrap(); assert_eq!(schema_id, schema_id_get); } @@ -98,7 +98,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -106,7 +106,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None).unwrap_err(); - assert_eq!(parsed_err, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -137,7 +137,7 @@ pub fn build_and_submit_schema_with_fees_double_spend() { send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap(); let err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } @@ -178,7 +178,7 @@ pub fn build_and_submit_schema_with_fees_twice_and_check_utxo_remain_unspent() { let err = send_schema_with_fees(dids[0], name.as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2) diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index 4f8ee6bdc..cdff39c9a 100644 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -1,21 +1,23 @@ -#[macro_use] extern crate serde_json; -#[macro_use] extern crate serde_derive; +#[macro_use] +extern crate serde_json; +#[macro_use] +extern crate serde_derive; extern crate sovtoken; -extern crate indy; +extern crate indyrs as indy; + pub mod utils; use std::os::raw::c_char; -use std::sync::mpsc::channel; -use std::time::Duration; -use indy::{IndyHandle, ErrorCode}; -use indy::utils::callbacks::ClosureHandler; -use indy::utils::results::ResultHandler; +use sovtoken::utils::callbacks::ClosureHandler; +use sovtoken::utils::results::ResultHandler; use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ffi_support::c_pointer_from_string; use sovtoken::utils::ffi_support::c_pointer_from_str; use utils::wallet::Wallet; +use indy::{ErrorCode, IndyHandle}; +use indy::future::Future; // ***** HELPER METHODS ***** @@ -24,7 +26,7 @@ extern "C" fn empty_create_payment_callback(_command_handle_: i32, _err: i32, _p } fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, extra: Option, request: String) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + let (receiver, command_handle, _) = ClosureHandler::cb_ec_string(); let did = "mydid1"; let extra = extra.map(c_pointer_from_string).unwrap_or(std::ptr::null()); @@ -39,7 +41,7 @@ fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, ext Some(empty_create_payment_callback) ); - return ResultHandler::one(ErrorCode::from(error_code), receiver); + return ResultHandler::one(ErrorCode::from(error_code), receiver); } fn init_wallet_with_address() -> (utils::wallet::Wallet, String) { @@ -65,7 +67,7 @@ fn test_add_fees_to_request_valid() { let txo = TXO { address: input_address, seq_no: 1 }; let inputs = json!([txo.to_libindy_string().unwrap()]); - + let outputs = json!([{ "recipient": "pay:sov:dctKSXBbv2My3TGGUgTFjkxu1A9JM3Sscd5FydY4dkxnfwA7q", "amount": 20, @@ -103,7 +105,7 @@ fn test_add_fees_to_request_valid() { assert_eq!(expected_fees_request.to_string(), result); } -#[test] +#[test] // TODO: look carefully on changes fn test_add_fees_to_request_valid_from_libindy() { let (wallet, input_address) = init_wallet_with_address(); let did = "Th7MpTaRZVRYnPiabds81Y"; @@ -144,23 +146,15 @@ fn test_add_fees_to_request_valid_from_libindy() { } }); - let (sender, receiver) = channel(); - - let cb = move |ec, req, method| { - sender.send((ec, req, method)).unwrap(); - }; - - let return_error = indy::payments::Payment::add_request_fees_async( + let (req, method) = indy::payments::add_request_fees( wallet.handle, Some(did), &fake_request.to_string(), &inputs.to_string(), &outputs.to_string(), None, - cb - ); + ).wait().unwrap(); - let (req, method) = ResultHandler::two_timeout(return_error, receiver, Duration::from_secs(15)).unwrap(); assert_eq!("sov", method); assert_eq!(expected_fees_request.to_string(), req); } @@ -196,15 +190,15 @@ fn test_add_fees_to_request_valid_from_libindy_for_not_owned_payment_address() { "amount": 20, }]); - let err = indy::payments::Payment::add_request_fees(wallet_2.handle, Some(dids[0]), &fake_request.to_string(), &inputs.to_string(), &outputs.to_string(), None).unwrap_err(); - assert_eq!(err, indy::ErrorCode::WalletItemNotFound); + let err = indy::payments::add_request_fees(wallet_2.handle, Some(dids[0]), &fake_request.to_string(), &inputs.to_string(), &outputs.to_string(), None).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::WalletItemNotFound); } #[test] fn build_add_fees_to_request_works_for_invalid_utxo() { sovtoken::api::sovtoken_init(); let wallet = Wallet::new(); - let (did, _) = indy::did::Did::new(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).unwrap(); + let (did, _) = indy::did::create_and_store_my_did(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).wait().unwrap(); let fake_request = json!({ "operation": { @@ -219,7 +213,7 @@ fn build_add_fees_to_request_works_for_invalid_utxo() { "amount": 20, }]).to_string(); - let err = indy::payments::Payment::add_request_fees(wallet.handle, Some(&did), &fake_request, &inputs, &outputs, None).unwrap_err(); + let err = indy::payments::add_request_fees(wallet.handle, Some(&did), &fake_request, &inputs, &outputs, None).wait().unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure) + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs index 97078d5b2..76becc710 100644 --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -2,7 +2,7 @@ #[macro_use] extern crate serde_derive; extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project +extern crate indyrs as indy; // lib-sdk project extern crate bs58; diff --git a/libsovtoken/tests/build_get_utxo_request_handler_test.rs b/libsovtoken/tests/build_get_utxo_request_handler_test.rs index a6575f1d7..5eb5ec65c 100644 --- a/libsovtoken/tests/build_get_utxo_request_handler_test.rs +++ b/libsovtoken/tests/build_get_utxo_request_handler_test.rs @@ -1,7 +1,7 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; +extern crate indyrs as indy; mod utils; use utils::wallet::Wallet; @@ -9,6 +9,8 @@ use utils::setup::{Setup, SetupConfig}; use sovtoken::logic::address::strip_qualifier_from_address; use sovtoken::logic::address::verkey_from_unqualified_address; +use indy::future::Future; + #[test] pub fn build_and_submit_get_utxo_request() { let wallet = Wallet::new(); @@ -23,9 +25,9 @@ pub fn build_and_submit_get_utxo_request() { let pool_handle = setup.pool_handle; let dids = setup.trustees.dids(); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_get_payment_sources_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_get_payment_sources_response(&payment_method, &res).wait().unwrap(); let res_parsed: Vec = serde_json::from_str(&res).unwrap(); assert_eq!(res_parsed.len(), 1); @@ -48,9 +50,9 @@ pub fn build_and_submit_get_utxo_request_no_utxo() { let pool_handle = setup.pool_handle; let dids = setup.trustees.dids(); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_get_payment_sources_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_get_payment_sources_response(&payment_method, &res).wait().unwrap(); let res_parsed: Vec = serde_json::from_str(&res).unwrap(); assert_eq!(res_parsed.len(), 0); @@ -69,7 +71,7 @@ pub fn payment_address_is_identifier() { let payment_addresses = &setup.addresses; let dids = setup.trustees.dids(); - let (get_utxo_req, _) = indy::payments::Payment::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).unwrap(); + let (get_utxo_req, _) = indy::payments::build_get_payment_sources_request(wallet.handle, Some(dids[0]), &payment_addresses[0]).wait().unwrap(); let req : serde_json::Value = serde_json::from_str(&get_utxo_req).unwrap(); let identifier = req.as_object().unwrap().get("identifier").unwrap().as_str().unwrap(); let unqualified_addr = strip_qualifier_from_address(&payment_addresses[0]); diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index 8b09a46f4..4ffcdc10b 100644 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -3,20 +3,16 @@ extern crate libc; extern crate sovtoken; #[macro_use] extern crate serde_derive; -extern crate indy; // lib-sdk project +extern crate indyrs as indy; // lib-sdk project #[macro_use] extern crate serde_json; #[macro_use] extern crate log; use libc::c_char; -use std::sync::mpsc::channel; -use std::time::Duration; use std::ptr; use std::ffi::CString; -use indy::utils::results::ResultHandler; - use sovtoken::utils::ErrorCode; use sovtoken::utils::ffi_support::{str_from_char_ptr, c_pointer_from_str}; use sovtoken::utils::constants::txn_types::MINT_PUBLIC; @@ -32,6 +28,7 @@ use utils::wallet::Wallet; use utils::parse_mint_response::ParseMintResponse; use utils::setup::{Setup, SetupConfig}; +use indy::future::Future; // ***** HELPER METHODS ***** @@ -130,29 +127,19 @@ fn valid_output_json() { } } -#[test] +#[test] // TODO: look carefully on changes fn valid_output_json_from_libindy() { sovtoken::api::sovtoken_init(); let did = "Th7MpTaRZVRYnPiabds81Y"; let wallet = Wallet::new(); let outputs_str = VALID_OUTPUT_JSON; - let (sender, receiver) = channel(); - - let cb = move |ec, req, payment_method| { - sender.send((ec, req, payment_method)).unwrap(); - }; - let return_error = indy::payments::Payment::build_mint_req_async( + let (req, payment_method) = indy::payments::build_mint_req( wallet.handle, Some(did), outputs_str, None, - cb - ); - - assert_eq!(return_error, indy::ErrorCode::Success, "Expecting Valid JSON for 'build_mint_txn_handler'"); - - let (req, payment_method) = ResultHandler::two_timeout(return_error, receiver, Duration::from_secs(5)).unwrap(); + ).wait().unwrap(); let mint_request_json_value : serde_json::Value = serde_json::from_str(&req).unwrap(); let mint_operation = mint_request_json_value @@ -204,12 +191,12 @@ pub fn build_and_submit_mint_txn_works() { } ]).to_string(); - let (mint_req, _) = indy::payments::Payment::build_mint_req( + let (mint_req, _) = indy::payments::build_mint_req( wallet.handle, Some(dids[0]), &output_json, None, - ).unwrap(); + ).wait().unwrap(); trace!("{:?}", &mint_req); @@ -221,7 +208,7 @@ pub fn build_and_submit_mint_txn_works() { trace!("{:?}", &mint_req); - let result = indy::ledger::Ledger::submit_request(pool_handle, &mint_req).unwrap(); + let result = indy::ledger::submit_request(pool_handle, &mint_req).wait().unwrap(); let response = ParseMintResponse::from_json(&result).unwrap(); assert_eq!(response.op, ResponseOperations::REPLY); let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, &dids[0], &payment_addresses[0]); @@ -259,12 +246,12 @@ pub fn build_and_submit_mint_txn_works_with_empty_did() { } ]).to_string(); - let (mint_req, _) = indy::payments::Payment::build_mint_req( + let (mint_req, _) = indy::payments::build_mint_req( wallet.handle, None, &output_json, None, - ).unwrap(); + ).wait().unwrap(); trace!("{:?}", &mint_req); @@ -276,7 +263,7 @@ pub fn build_and_submit_mint_txn_works_with_empty_did() { trace!("{:?}", &mint_req); - let result = indy::ledger::Ledger::submit_request(pool_handle, &mint_req).unwrap(); + let result = indy::ledger::submit_request(pool_handle, &mint_req).wait().unwrap(); let response = ParseMintResponse::from_json(&result).unwrap(); assert_eq!(response.op, ResponseOperations::REPLY); let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, &dids[0], &payment_addresses[0]); @@ -314,12 +301,12 @@ pub fn build_and_submit_mint_txn_works_for_double_send_mint() { } ]).to_string(); - let (mint_req, _) = indy::payments::Payment::build_mint_req( + let (mint_req, _) = indy::payments::build_mint_req( wallet.handle, Some(dids[0]), &output_json, None - ).unwrap(); + ).wait().unwrap(); trace!("{:?}", &mint_req); @@ -331,10 +318,10 @@ pub fn build_and_submit_mint_txn_works_for_double_send_mint() { trace!("{:?}", &mint_req); - let result = indy::ledger::Ledger::submit_request(pool_handle, &mint_req).unwrap(); + let result = indy::ledger::submit_request(pool_handle, &mint_req).wait().unwrap(); let response = ParseMintResponse::from_json(&result).unwrap(); assert_eq!(response.op, ResponseOperations::REPLY); - let result = indy::ledger::Ledger::submit_request(pool_handle, &mint_req).unwrap(); + let result = indy::ledger::submit_request(pool_handle, &mint_req).wait().unwrap(); let response = ParseMintResponse::from_json(&result).unwrap(); assert_eq!(response.op, ResponseOperations::REPLY); let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, &dids[0], &payment_addresses[0]); @@ -366,12 +353,12 @@ fn mint_10_billion_tokens() { "amount": tokens, }]).to_string(); - let (mint_req, _) = indy::payments::Payment::build_mint_req( + let (mint_req, _) = indy::payments::build_mint_req( wallet.handle, Some(dids[0]), &output_json, None - ).unwrap(); + ).wait().unwrap(); trace!("{:?}", &mint_req); @@ -383,7 +370,7 @@ fn mint_10_billion_tokens() { trace!("{:?}", &mint_req); - let result = indy::ledger::Ledger::submit_request(pool_handle, &mint_req).unwrap(); + let result = indy::ledger::submit_request(pool_handle, &mint_req).wait().unwrap(); let response = ParseMintResponse::from_json(&result).unwrap(); trace!("{:?}", &response); diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index 0070be345..c75112eab 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -1,30 +1,29 @@ extern crate env_logger; extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project +extern crate indyrs as indy; // lib-sdk project extern crate bs58; #[macro_use] extern crate log; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -use indy::utils::callbacks::ClosureHandler; -use indy::utils::results::ResultHandler; use std::ptr; use std::ffi::CString; use std::os::raw::c_char; -use std::time::Duration; -use std::sync::mpsc::channel; use sovtoken::logic::address; use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ErrorCode; use sovtoken::utils::constants::txn_types::XFER_PUBLIC; +use sovtoken::utils::callbacks::ClosureHandler; +use sovtoken::utils::results::ResultHandler; use sovtoken::utils::ffi_support::c_pointer_from_string; mod utils; use utils::wallet::Wallet; use utils::setup::{SetupConfig, Setup}; +use indy::future::Future; // ***** HELPER METHODS ***** extern "C" fn empty_create_payment_callback(_command_handle_: i32, _err: i32, _payment_req: *const c_char) -> i32 { @@ -64,11 +63,11 @@ fn generate_payment_addresses(wallet: &Wallet) -> (Vec, Vec) { } fn get_resp_for_payment_req(pool_handle: i32, wallet_handle: i32, did: &str, - inputs: &str, outputs: &str) -> Result { - let (req, method) = indy::payments::Payment::build_payment_req(wallet_handle, - Some(did), inputs, outputs, None).unwrap(); - let res = indy::ledger::Ledger::submit_request(pool_handle, &req).unwrap(); - indy::payments::Payment::parse_payment_response(&method, &res) + inputs: &str, outputs: &str) -> Result { + let (req, method) = indy::payments::build_payment_req(wallet_handle, + Some(did), inputs, outputs, None).wait().unwrap(); + let res = indy::ledger::submit_request(pool_handle, &req).wait().unwrap(); + indy::payments::parse_payment_response(&method, &res).wait() } // ***** UNIT TESTS **** @@ -209,7 +208,7 @@ fn success_signed_request() { assert!(request.get("reqId").is_some()); } -#[test] +#[test] // TODO: look carefully on changes fn success_signed_request_from_libindy() { sovtoken::api::sovtoken_init(); @@ -255,25 +254,15 @@ fn success_signed_request_from_libindy() { ] }); - let (sender, receiver) = channel(); - - let closure = move|error_code, req, _| { - sender.send((error_code, req)).unwrap(); - }; - - trace!("Calling build_payment_req"); - let _ = indy::payments::Payment::build_payment_req_async( + let (request_string, _) = indy::payments::build_payment_req( wallet.handle, Some(&did), &inputs.to_string(), &outputs.to_string(), None, - closure - ); - - let request_string = ResultHandler::one_timeout(indy::ErrorCode::Success, receiver, Duration::from_secs(5)).unwrap(); + ).wait().unwrap(); let request: serde_json::value::Value = serde_json::from_str(&request_string).unwrap(); debug!("Received request {:?}", request); @@ -372,7 +361,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_1).unwrap_err(); - assert_eq!(res, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(res.error_code, indy::ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([ { @@ -386,7 +375,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_2).unwrap_err(); - assert_eq!(res, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(res.error_code, indy::ErrorCode::PaymentExtraFundsError); } #[test] @@ -422,7 +411,7 @@ pub fn build_and_submit_payment_req_with_spent_utxo() { "amount": 20 }]).to_string(); let err = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs).unwrap_err(); - assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); //utxo should stay unspent! let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, dids[0], &addresses[0]); @@ -436,7 +425,7 @@ pub fn build_and_submit_payment_req_with_spent_utxo() { pub fn build_payment_with_invalid_utxo() { sovtoken::api::sovtoken_init(); let wallet = Wallet::new(); - let (did, _) = indy::did::Did::new(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).unwrap(); + let (did, _) = indy::did::create_and_store_my_did(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).wait().unwrap(); let inputs = json!(["txo:sov:1234"]).to_string(); let outputs = json!([ @@ -446,8 +435,8 @@ pub fn build_payment_with_invalid_utxo() { } ]).to_string(); - let err = indy::payments::Payment::build_payment_req(wallet.handle, Some(&did), &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure); + let err = indy::payments::build_payment_req(wallet.handle, Some(&did), &inputs, &outputs, None).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); } pub fn build_payment_req_for_not_owned_payment_address() { @@ -475,6 +464,6 @@ pub fn build_payment_req_for_not_owned_payment_address() { } ]).to_string(); - let err = indy::payments::Payment::build_payment_req(wallet_2.handle, Some(dids[0]), &inputs, &outputs, None).unwrap_err(); - assert_eq!(err, indy::ErrorCode::WalletItemNotFound); + let err = indy::payments::build_payment_req(wallet_2.handle, Some(dids[0]), &inputs, &outputs, None).wait().unwrap_err(); + assert_eq!(err.error_code, indy::ErrorCode::WalletItemNotFound); } \ No newline at end of file diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index 1ad65cc3b..43bf0d621 100644 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -1,17 +1,17 @@ #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; extern crate sovtoken; -extern crate indy; +extern crate indyrs as indy; use std::{thread, time}; -use sovtoken::utils::ErrorCode; use sovtoken::logic::parsers::common::TXO; mod utils; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; +use indy::future::Future; fn sleep(msec: u64) { let ms = time::Duration::from_millis(msec); @@ -36,9 +36,9 @@ pub fn build_and_submit_verify_on_mint() { //We need to wait a little before trying to verify txn sleep(1000); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_verify_req(wallet.handle, Some(dids[0]), &txo).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_verify_payment_req(wallet.handle, Some(dids[0]), &txo).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); assert!(res_parsed.as_object().unwrap().get("sources").unwrap().as_array().unwrap().is_empty()); @@ -63,9 +63,9 @@ pub fn build_and_submit_verify_on_mint_with_empty_did() { //We need to wait a little before trying to verify txn sleep(1000); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_verify_req(wallet.handle, None, &txo).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_verify_payment_req(wallet.handle, None, &txo).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); assert!(res_parsed.as_object().unwrap().get("sources").unwrap().as_array().unwrap().is_empty()); @@ -94,9 +94,9 @@ pub fn build_and_submit_verify_on_xfer() { "amount": 10 } ]).to_string(); - let (req, method) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &inputs, &outputs, None).unwrap(); - let res = indy::ledger::Ledger::submit_request(pool_handle, &req).unwrap(); - let res = indy::payments::Payment::parse_payment_response(&method, &res).unwrap(); + let (req, method) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &inputs, &outputs, None).wait().unwrap(); + let res = indy::ledger::submit_request(pool_handle, &req).wait().unwrap(); + let res = indy::payments::parse_payment_response(&method, &res).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); let utxos = res_parsed.as_array().unwrap(); @@ -106,9 +106,9 @@ pub fn build_and_submit_verify_on_xfer() { //We need to wait a little before trying to verify txn sleep(1000); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_verify_req(wallet.handle, Some(dids[0]), &new_utxo).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_verify_payment_req(wallet.handle, Some(dids[0]), &new_utxo).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); assert_eq!(res_parsed.as_object().unwrap().get("sources").unwrap().as_array().unwrap().get(0).unwrap().as_str().unwrap(), txo); @@ -138,13 +138,13 @@ pub fn build_and_submit_verify_on_fees() { "amount": 9 }]).to_string(); - let (did_new, verkey_new) = indy::did::Did::new(wallet.handle, "{}").unwrap(); + let (did_new, verkey_new) = indy::did::create_and_store_my_did(wallet.handle, "{}").wait().unwrap(); - let nym_req = indy::ledger::Ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).unwrap(); - let nym_req_signed = indy::ledger::Ledger::sign_request(wallet.handle, dids[0], &nym_req).unwrap(); - let (nym_req_with_fees, pm) = indy::payments::Payment::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).unwrap(); - let nym_resp = indy::ledger::Ledger::submit_request(pool_handle, &nym_req_with_fees).unwrap(); - let res = indy::payments::Payment::parse_response_with_fees(&pm, &nym_resp).unwrap(); + let nym_req = indy::ledger::build_nym_request(dids[0], &did_new, Some(&verkey_new), None, None).wait().unwrap(); + let nym_req_signed = indy::ledger::sign_request(wallet.handle, dids[0], &nym_req).wait().unwrap(); + let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); + let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); + let res = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); let utxos = res_parsed.as_array().unwrap(); @@ -154,9 +154,9 @@ pub fn build_and_submit_verify_on_fees() { //We need to wait a little before trying to verify txn sleep(1000); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_verify_req(wallet.handle, Some(dids[0]), &new_utxo).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let res = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap(); + let (get_utxo_req, payment_method) = indy::payments::build_verify_payment_req(wallet.handle, Some(dids[0]), &new_utxo).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let res = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap(); let res_parsed: serde_json::Value = serde_json::from_str(&res).unwrap(); assert_eq!(res_parsed.as_object().unwrap().get("sources").unwrap().as_array().unwrap().get(0).unwrap().as_str().unwrap(), txo); @@ -182,22 +182,22 @@ pub fn build_and_submit_verify_req_for_unexistant_utxo() { //We need to wait a little before trying to verify txn sleep(1000); - let (get_utxo_req, payment_method) = indy::payments::Payment::build_verify_req(wallet.handle, Some(dids[0]), &txo).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).unwrap(); - let err = indy::payments::Payment::parse_verify_response(&payment_method, &res).unwrap_err(); + let (get_utxo_req, payment_method) = indy::payments::build_verify_payment_req(wallet.handle, Some(dids[0]), &txo).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); + let err = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap_err(); - assert_eq!(err, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); } #[test] fn build_verify_req_works_for_invalid_utxo() { sovtoken::api::sovtoken_init(); let wallet = Wallet::new(); - let (did, _) = indy::did::Did::new(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).unwrap(); + let (did, _) = indy::did::create_and_store_my_did(wallet.handle, &json!({"seed": "000000000000000000000000Trustee1"}).to_string()).wait().unwrap(); let receipt = "txo:sov:1234"; - let err = indy::payments::Payment::build_verify_req(wallet.handle, Some(&did), receipt).unwrap_err(); + let err = indy::payments::build_verify_payment_req(wallet.handle, Some(&did), receipt).wait().unwrap_err(); - assert_eq!(err, indy::ErrorCode::CommonInvalidStructure) + assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index 68db8b1f3..28b9aaa7b 100644 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -11,7 +11,7 @@ extern crate rand; #[macro_use] extern crate serde_json; #[macro_use] extern crate serde_derive; -extern crate indy; // lib-sdk project +extern crate indyrs as indy; // lib-sdk project extern crate sovtoken; use libc::c_char; @@ -26,6 +26,8 @@ use sovtoken::utils::test::callbacks; use sovtoken::utils::ErrorCode; mod utils; +use indy::future::Future; + // ***** HELPER TEST DATA ***** const WALLET_ID: i32 = 99; const COMMAND_HANDLE: i32 = 1; @@ -153,8 +155,8 @@ pub fn create_address_two_times_with_the_same_seed() { let seed = json!({"seed": "00000000000000000000000000000000"}).to_string(); - let _pa1 = indy::payments::Payment::create_payment_address(wallet.handle, "sov", &seed).unwrap(); - let err = indy::payments::Payment::create_payment_address(wallet.handle, "sov", &seed).unwrap_err(); + let _pa1 = indy::payments::create_payment_address(wallet.handle, "sov", &seed).wait().unwrap(); + let err = indy::payments::create_payment_address(wallet.handle, "sov", &seed).wait().unwrap_err(); - assert_eq!(err, indy::ErrorCode::WalletItemAlreadyExists); + assert_eq!(err.error_code, indy::ErrorCode::WalletItemAlreadyExists); } \ No newline at end of file diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index feb7d73eb..b5209bdc8 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -1,10 +1,10 @@ extern crate env_logger; -extern crate indy; +extern crate indyrs as indy; extern crate libc; extern crate serde_json; extern crate sovtoken; -use sovtoken::utils::ErrorCode; +use indy::future::Future; static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ "op": "REPLY", @@ -76,7 +76,7 @@ static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ #[test] pub fn parse_payment_response_works() { sovtoken::api::sovtoken_init(); - let resp = indy::payments::Payment::parse_payment_response("sov", PARSE_PAYMENT_RESPONSE_JSON).unwrap(); + let resp = indy::payments::parse_payment_response("sov", PARSE_PAYMENT_RESPONSE_JSON).wait().unwrap(); let resp: Vec = serde_json::from_str(&resp).unwrap(); assert_eq!(resp.len(), 4); for utxo in resp { @@ -89,6 +89,6 @@ pub fn parse_payment_response_works() { #[test] pub fn parse_payment_response_works_for_invalid() { sovtoken::api::sovtoken_init(); - let resp = indy::payments::Payment::parse_payment_response("sov", "123").unwrap_err(); - assert_eq!(resp, indy::ErrorCode::CommonInvalidStructure); + let resp = indy::payments::parse_payment_response("sov", "123").wait().unwrap_err(); + assert_eq!(resp.error_code, indy::ErrorCode::CommonInvalidStructure); } \ No newline at end of file diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index f6a099a56..4f29474f5 100644 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -1,16 +1,16 @@ extern crate libc; extern crate sovtoken; -extern crate indy; // lib-sdk project +extern crate indyrs as indy; // lib-sdk project #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; -use sovtoken::utils::ErrorCode; - pub mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; +use indy::future::Future; + // ------------------------------------------------------------------------------------------------ #[test] pub fn pay_without_outputs_fails() { @@ -38,8 +38,8 @@ pub fn pay_without_outputs_fails() { let pay_output_json = json!([ ]).to_string(); - let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, indy::ErrorCode::CommonInvalidStructure); + let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); + assert_eq!(ec.error_code, indy::ErrorCode::CommonInvalidStructure); } @@ -71,8 +71,8 @@ pub fn pay_without_inputs_fails() { } ]).to_string(); - let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, indy::ErrorCode::CommonInvalidStructure); + let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); + assert_eq!(ec.error_code, indy::ErrorCode::CommonInvalidStructure); } // ------------------------------------------------------------------------------------------------ @@ -104,8 +104,8 @@ pub fn pay_from_non_existent_payment_source_fails() { } ]).to_string(); - let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, indy::ErrorCode::WalletItemNotFound); + let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); + assert_eq!(ec.error_code, indy::ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ @@ -139,8 +139,8 @@ pub fn pay_from_existent_and_non_existent_payment_source_fails() { } ]).to_string(); - let ec = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap_err(); - assert_eq!(ec, indy::ErrorCode::WalletItemNotFound); + let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); + assert_eq!(ec.error_code, indy::ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ @@ -174,9 +174,9 @@ pub fn pay_with_insufficent_funds_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("InsufficientFundsError"), "Expected InsufficientFundsError"); } @@ -216,9 +216,9 @@ pub fn pay_with_insufficent_funds_with_several_output_addresses_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("InsufficientFundsError"), "Expected InsufficientFundsError"); } @@ -256,9 +256,9 @@ pub fn pay_with_insufficent_funds_with_several_txo_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("InsufficientFundsError"), "Expected InsufficientFundsError"); } @@ -294,9 +294,9 @@ pub fn pay_with_funds_remaining_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("ExtraFundsError"), "Expected ExtraFundsError"); } @@ -336,9 +336,9 @@ pub fn pay_with_funds_remaining_with_several_outputs_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("ExtraFundsError"), "Expected ExtraFundsError"); } @@ -376,9 +376,9 @@ pub fn pay_with_funds_remaining_with_several_txo_fails() { } ]).to_string(); - let (payment_request, _) = indy::payments::Payment::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).unwrap(); + let (payment_request, _) = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap(); - let payment_result = indy::ledger::Ledger::submit_request(pool_handle, &payment_request).unwrap(); + let payment_result = indy::ledger::submit_request(pool_handle, &payment_request).wait().unwrap(); assert!(payment_result.contains("ExtraFundsError"), "Expected ExtraFundsError"); } \ No newline at end of file diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index e5482a1a6..3fe0abc50 100644 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -1,7 +1,7 @@ -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; -use sovtoken::utils::ErrorCode; +use indy::future::Future; type DidAndVerKey = (String, String); @@ -39,20 +39,20 @@ pub fn create_nym( pool_handle: i32, did_trustee: &str, role: NymRole -) -> Result { - let (did, verkey) = indy::did::Did::new(wallet_handle, "{}").unwrap(); +) -> DidAndVerKey { + let (did, verkey) = indy::did::create_and_store_my_did(wallet_handle, "{}").wait().unwrap(); - let req_nym = indy::ledger::Ledger::build_nym_request( + let req_nym = indy::ledger::build_nym_request( did_trustee, &did, Some(&verkey), None, role.prepare() - )?; + ).wait().unwrap(); - indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym)?; + indy::ledger::sign_and_submit_request(pool_handle, wallet_handle, &did_trustee, &req_nym).wait().unwrap(); - Ok((did, verkey)) + (did, verkey) } /** @@ -64,14 +64,14 @@ pub fn create_multiple_nym( did_trustee: &str, n: u8, role: NymRole -) -> Result, ErrorCode> { +) -> Vec { let mut v: Vec<(String, String)> = Vec::new(); for _ in 0..n { - let new_did = create_nym(wallet_handle, pool_handle, did_trustee, role)?; + let new_did = create_nym(wallet_handle, pool_handle, did_trustee, role); v.push(new_did); } - Ok(v) + v } /** @@ -79,7 +79,7 @@ Create and store the initial dids of trustees. Includes the initial trustee. */ -pub fn initial_trustees(num_trustees: u8, wallet_handle: i32, pool_handle: i32) -> Result, sovtoken::utils::ErrorCode> { +pub fn initial_trustees(num_trustees: u8, wallet_handle: i32, pool_handle: i32) -> Vec { let first = initial_trustee(wallet_handle); let mut trustees = create_multiple_nym( @@ -88,10 +88,10 @@ pub fn initial_trustees(num_trustees: u8, wallet_handle: i32, pool_handle: i32) &first.0, num_trustees - 1, NymRole::Trustee - )?; + ); trustees.insert(0, first); - Ok(trustees) + trustees } /** @@ -102,7 +102,7 @@ pub fn initial_trustee(wallet_handle: i32) -> DidAndVerKey { "seed":"000000000000000000000000Trustee1" }).to_string(); - indy::did::Did::new(wallet_handle, &first_json_seed).unwrap() + indy::did::create_and_store_my_did(wallet_handle, &first_json_seed).wait().unwrap() } /** diff --git a/libsovtoken/tests/utils/ledger.rs b/libsovtoken/tests/utils/ledger.rs index 99cc1fccc..6fb0eee4c 100644 --- a/libsovtoken/tests/utils/ledger.rs +++ b/libsovtoken/tests/utils/ledger.rs @@ -1,20 +1,20 @@ -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; -use indy::ErrorCode; use std::time::Duration; +use indy::future::Future; const SUBMIT_RETRY_CNT: usize = 3; -pub fn submit_request_with_retries(pool_handle: i32, request_json: &str, previous_response: &str) -> Result { +pub fn submit_request_with_retries(pool_handle: i32, request_json: &str, previous_response: &str) -> Result { _submit_retry(_extract_seq_no_from_reply(previous_response).unwrap(), || { - indy::ledger::Ledger::submit_request(pool_handle, request_json) + indy::ledger::submit_request(pool_handle, request_json).wait() }) } -fn _submit_retry(minimal_timestamp: u64, submit_action: F) -> Result - where F: Fn() -> Result { +fn _submit_retry(minimal_timestamp: u64, submit_action: F) -> Result + where F: Fn() -> Result { let mut i = 0; let action_result = loop { let action_result = submit_action()?; diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs index e42600958..7f6d8bf31 100644 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -1,4 +1,4 @@ -extern crate indy; +extern crate indyrs as indy; extern crate serde_json; use std::collections::HashMap; @@ -11,7 +11,9 @@ use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; use utils; -pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { +use indy::future::Future; + +pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { let vec_outputs:Vec> = cfg.iter().map(|(pa, am)| { let mut map = HashMap::new(); map.insert("recipient", serde_json::Value::String(pa.clone())); @@ -23,11 +25,11 @@ pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i let json = serde_json::to_string(&vec_outputs).unwrap(); - let (mint_req, _) = indy::payments::Payment::build_mint_req(wallet_handle, Some(did), &json, None)?; + let (mint_req, _) = indy::payments::build_mint_req(wallet_handle, Some(did), &json, None).wait().unwrap(); - let mint_req = Request::::multi_sign_request(wallet_handle, &mint_req, trustee_dids.to_vec())?; + let mint_req = Request::::multi_sign_request(wallet_handle, &mint_req, trustee_dids.to_vec()).unwrap(); - let result = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req)?; + let result = indy::ledger::sign_and_submit_request(pool_handle, wallet_handle, did, &mint_req).wait().unwrap(); utils::parse_mint_response::ParseMintResponse::from_json(&result).map_err(|_| ErrorCode::CommonInvalidStructure) } diff --git a/libsovtoken/tests/utils/payment/address.rs b/libsovtoken/tests/utils/payment/address.rs index d77a0b85f..ade6b54e3 100644 --- a/libsovtoken/tests/utils/payment/address.rs +++ b/libsovtoken/tests/utils/payment/address.rs @@ -4,7 +4,10 @@ Helpers dealing with addresses For integration tests */ -use indy::payments::Payment; +extern crate indyrs as indy; + +use indy::payments; +use indy::future::Future; use utils::wallet::Wallet; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; @@ -16,7 +19,7 @@ pub fn generate(wallet: &Wallet, seed: Option<&str>) -> String { .map(seed_json) .unwrap_or(String::from("{}")); - Payment::create_payment_address(wallet.handle, PAYMENT_METHOD_NAME, &seed).unwrap() + payments::create_payment_address(wallet.handle, PAYMENT_METHOD_NAME, &seed).wait().unwrap() } /** diff --git a/libsovtoken/tests/utils/payment/fees.rs b/libsovtoken/tests/utils/payment/fees.rs index 242438161..9befd8471 100644 --- a/libsovtoken/tests/utils/payment/fees.rs +++ b/libsovtoken/tests/utils/payment/fees.rs @@ -1,24 +1,26 @@ -extern crate indy; +extern crate indyrs as indy; use sovtoken::logic::config::set_fees_config::SetFees; use sovtoken::logic::request::Request; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; use utils::wallet::Wallet; +use indy::future::Future; + pub fn set_fees(pool_handle: i32, wallet_handle: i32, payment_method: &str, fees: &str, dids: &Vec<&str>, submitter_did: Option<&str>) -> String { - let set_fees_req = indy::payments::Payment::build_set_txn_fees_req(wallet_handle, submitter_did, payment_method, &fees).unwrap(); + let set_fees_req = indy::payments::build_set_txn_fees_req(wallet_handle, submitter_did, payment_method, &fees).wait().unwrap(); let set_fees_req = Request::::multi_sign_request(wallet_handle, &set_fees_req, dids.to_vec()).unwrap(); - indy::ledger::Ledger::submit_request(pool_handle, &set_fees_req).unwrap() + indy::ledger::submit_request(pool_handle, &set_fees_req).wait().unwrap() } pub fn get_fees(wallet: &Wallet, pool_handle: i32, submitter_did: Option<&str>) -> String { - let get_fees_req = indy::payments::Payment::build_get_txn_fees_req( + let get_fees_req = indy::payments::build_get_txn_fees_req( wallet.handle, submitter_did, PAYMENT_METHOD_NAME - ).unwrap(); - let result = indy::ledger::Ledger::submit_request(pool_handle, &get_fees_req).unwrap(); - indy::payments::Payment::parse_get_txn_fees_response(PAYMENT_METHOD_NAME, &result).unwrap() + ).wait().unwrap(); + let result = indy::ledger::submit_request(pool_handle, &get_fees_req).wait().unwrap(); + indy::payments::parse_get_txn_fees_response(PAYMENT_METHOD_NAME, &result).wait().unwrap() } \ No newline at end of file diff --git a/libsovtoken/tests/utils/payment/get_utxo.rs b/libsovtoken/tests/utils/payment/get_utxo.rs index e7bf5047f..4f26e251c 100644 --- a/libsovtoken/tests/utils/payment/get_utxo.rs +++ b/libsovtoken/tests/utils/payment/get_utxo.rs @@ -1,7 +1,9 @@ -extern crate indy; +extern crate indyrs as indy; extern crate serde_json; extern crate sovtoken; +use indy::future::Future; + use sovtoken::logic::parsers::parse_get_utxo_response::UTXO; use utils::wallet::Wallet; @@ -12,8 +14,8 @@ pub fn get_first_utxo_txo_for_payment_address(wallet: &Wallet, pool_handle: i32, } pub fn send_get_utxo_request(wallet: &Wallet, pool_handle: i32, did: &str, address: &str) -> Vec { - let (req, method) = indy::payments::Payment::build_get_payment_sources_request(wallet.handle, Some(did), address).unwrap(); - let res = indy::ledger::Ledger::sign_and_submit_request(pool_handle, wallet.handle, did, &req).unwrap(); - let parsed_resp = indy::payments::Payment::parse_get_payment_sources_response(&method, &res).unwrap(); + let (req, method) = indy::payments::build_get_payment_sources_request(wallet.handle, Some(did), address).wait().unwrap(); + let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, did, &req).wait().unwrap(); + let parsed_resp = indy::payments::parse_get_payment_sources_response(&method, &res).wait().unwrap(); serde_json::from_str(&parsed_resp).unwrap() } \ No newline at end of file diff --git a/libsovtoken/tests/utils/pool.rs b/libsovtoken/tests/utils/pool.rs index b2dfbdf91..67db85865 100644 --- a/libsovtoken/tests/utils/pool.rs +++ b/libsovtoken/tests/utils/pool.rs @@ -1,10 +1,13 @@ +extern crate indyrs as indy; + use std::path::Path; use std::path::PathBuf; use std::fs; use utils::environment::EnvironmentUtils; use std::io::Write; use sovtoken::utils::random::rand_string; -extern crate indy; + +use indy::future::Future; pub fn create_pool_config() -> String { let path = create_genesis_txn_file_for_test_pool("p1", None, None); @@ -15,7 +18,7 @@ pub fn create_pool_config() -> String { pub fn create_pool_ledger(pool_cfg: Option<&str>) -> String { let name = rand_string(10); - indy::pool::Pool::create_ledger_config(&name, pool_cfg).unwrap(); + indy::pool::create_pool_ledger_config(&name, pool_cfg).wait().unwrap(); name } diff --git a/libsovtoken/tests/utils/setup.rs b/libsovtoken/tests/utils/setup.rs index 21d246de8..7e6b13f73 100644 --- a/libsovtoken/tests/utils/setup.rs +++ b/libsovtoken/tests/utils/setup.rs @@ -15,6 +15,7 @@ use serde_json; const PROTOCOL_VERSION: usize = 2; +use indy::future::Future; /** Config to be passed to [`Setup::new`]. @@ -159,10 +160,10 @@ impl<'a> Setup<'a> { let pc_string = pool::create_pool_config(); let pool_config = Some(pc_string.as_str()); - indy::pool::Pool::set_protocol_version(PROTOCOL_VERSION).unwrap(); + indy::pool::set_protocol_version(PROTOCOL_VERSION).wait().unwrap(); let pool_name = pool::create_pool_ledger(pool_config); - let pool_handle = indy::pool::Pool::open_ledger(&pool_name, None).unwrap(); + let pool_handle = indy::pool::open_pool_ledger(&pool_name, None).wait().unwrap(); pool_handle } @@ -170,7 +171,6 @@ impl<'a> Setup<'a> fn create_users(wallet: &Wallet, pool_handle: i32, did_trustee: &str, num_users: u8) -> Entities { did::create_multiple_nym(wallet.handle, pool_handle, did_trustee, num_users, did::NymRole::User) - .unwrap() .into_iter() .map(Entity::new) .collect() @@ -179,7 +179,6 @@ impl<'a> Setup<'a> fn create_trustees(wallet: &Wallet, pool_handle: i32, num_trustees: u8) -> Entities { did::initial_trustees(num_trustees, wallet.handle, pool_handle) - .unwrap() .into_iter() .map(Entity::new) .collect() diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs index 248cce3de..1cc3779cd 100644 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -3,12 +3,13 @@ */ extern crate env_logger; -extern crate indy; +extern crate indyrs as indy; extern crate sovtoken; -use self::indy::wallet::Wallet as IndyWallet; +use self::indy::wallet; use self::sovtoken::utils::random::rand_string; -use self::indy::ErrorCode; + +use indy::future::Future; static USEFUL_CREDENTIALS : &'static str = r#" { @@ -45,16 +46,16 @@ impl Wallet { pub fn new() -> Wallet { let wallet_name : String = rand_string(20); let mut wallet = Wallet { name : wallet_name , handle: -1 }; - wallet.create().unwrap(); - wallet.open().unwrap(); + wallet.create(); + wallet.open(); return wallet; } pub fn from_name(name: &str) -> Wallet { let mut wallet = Wallet { name: name.to_string(), handle: -1 }; - wallet.create().unwrap(); - wallet.open().unwrap(); + wallet.create(); + wallet.open(); return wallet; } @@ -67,31 +68,31 @@ impl Wallet { /* private instance methods for open/create/etc...*/ - fn open(&mut self) -> Result { + fn open(&mut self) -> i32 { let config : String = Wallet::create_wallet_config(&self.name); - let handle = IndyWallet::open(&config, USEFUL_CREDENTIALS)?; + let handle = wallet::open_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap(); self.handle = handle; - return Ok(handle); + return handle; } - fn create(&self) -> Result<(), ErrorCode> { + fn create(&self) -> () { let config = Wallet::create_wallet_config(&self.name); - return IndyWallet::create(&config, USEFUL_CREDENTIALS) + wallet::create_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap() } - fn close(&self) -> Result<(), ErrorCode> { - IndyWallet::close(self.handle) + fn close(&self) -> (){ + wallet::close_wallet(self.handle).wait().unwrap() } - fn delete(&self) -> Result<(), ErrorCode> { + fn delete(&self) -> () { let config : String = Wallet::create_wallet_config(&self.name); - return IndyWallet::delete(&config, USEFUL_CREDENTIALS) + return wallet::delete_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap() } } impl Drop for Wallet { fn drop(&mut self) { - self.close().unwrap(); - self.delete().unwrap(); + self.close(); + self.delete(); } } From 4d23bcb433ce6ff34c4f1bc51eb198f95f02b5e2 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 10:15:10 +0300 Subject: [PATCH 70/91] IS-1167: Fixed failed Libsovtoken tests. Signed-off-by: artem.ivanov --- libsovtoken/src/logic/hash.rs | 2 +- libsovtoken/src/logic/indy_sdk_api/ledger.rs | 74 ++++++++++++++++++- libsovtoken/src/logic/request.rs | 25 +++---- .../tests/build_add_fees_txn_handler_test.rs | 13 +--- .../tests/build_payment_req_handler_test.rs | 7 +- 5 files changed, 87 insertions(+), 34 deletions(-) diff --git a/libsovtoken/src/logic/hash.rs b/libsovtoken/src/logic/hash.rs index ac4698248..8a091eaf3 100644 --- a/libsovtoken/src/logic/hash.rs +++ b/libsovtoken/src/logic/hash.rs @@ -65,7 +65,7 @@ impl Hash { /// ``` /// extern crate openssl; /// extern crate sovtoken; -/// extern crate indy; +/// extern crate indyrs as indy; /// use self::openssl::hash::{hash, MessageDigest, Hasher, DigestBytes}; /// use self::sovtoken::logic::hash::Hashable; /// use self::indy::ErrorCode; diff --git a/libsovtoken/src/logic/indy_sdk_api/ledger.rs b/libsovtoken/src/logic/indy_sdk_api/ledger.rs index dba1a24c7..d07c6a249 100644 --- a/libsovtoken/src/logic/indy_sdk_api/ledger.rs +++ b/libsovtoken/src/logic/indy_sdk_api/ledger.rs @@ -2,6 +2,7 @@ use utils::{ErrorCode, IndyHandle}; use std::ffi::CString; use std::time::Duration; +use std::ptr::null; use indy_sys::ledger; use indy_sys::ResponseStringCB; @@ -73,9 +74,76 @@ impl Ledger { } fn _build_get_txn_request(command_handle: IndyHandle, submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32, cb: Option) -> ErrorCode { - let submitter_did= opt_c_str_json!(submitter_did); - let ledger_type = opt_c_str_json!(ledger_type); + let submitter_did_str = opt_c_str!(submitter_did); + let ledger_type_str = opt_c_str!(ledger_type); - ErrorCode::from(unsafe { ledger::indy_build_get_txn_request(command_handle, submitter_did.as_ptr(), ledger_type.as_ptr(), seq_no, cb) }) + ErrorCode::from(unsafe { ledger::indy_build_get_txn_request(command_handle, opt_c_ptr!(submitter_did, submitter_did_str), opt_c_ptr!(ledger_type, ledger_type_str), seq_no, cb) }) + } + + /// Multi signs request message. + /// + /// Adds submitter information to passed request json, signs it with submitter + /// sign key (see Crypto::sign). + /// + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open). + /// * `submitter_did` - Id of Identity stored in secured Wallet. + /// * `request_json` - Request data json. + /// + /// # Returns + /// Signed request json. + pub fn multi_sign_request(wallet_handle: IndyHandle, submitter_did: &str, request_json: &str) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Ledger::_multi_sign_request(command_handle, wallet_handle, submitter_did, request_json, cb); + + ResultHandler::one(err, receiver) + } + + /// Multi signs request message. + /// + /// Adds submitter information to passed request json, signs it with submitter + /// sign key (see Crypto::sign). + /// + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open). + /// * `submitter_did` - Id of Identity stored in secured Wallet. + /// * `request_json` - Request data json. + /// * `timeout` - the maximum time this function waits for a response + /// + /// # Returns + /// Signed request json. + pub fn multi_sign_request_timeout(wallet_handle: IndyHandle, submitter_did: &str, request_json: &str, timeout: Duration) -> Result { + let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); + + let err = Ledger::_multi_sign_request(command_handle, wallet_handle, submitter_did, request_json, cb); + + ResultHandler::one_timeout(err, receiver, timeout) + } + + /// Multi signs request message. + /// + /// Adds submitter information to passed request json, signs it with submitter + /// sign key (see Crypto::sign). + /// + /// # Arguments + /// * `wallet_handle` - wallet handle (created by Wallet::open). + /// * `submitter_did` - Id of Identity stored in secured Wallet. + /// * `request_json` - Request data json. + /// * `closure` - The closure that is called when finished + /// + /// # Returns + /// Signed request json. + pub fn multi_sign_request_async(wallet_handle: IndyHandle, submitter_did: &str, request_json: &str, closure: F) -> ErrorCode where F: FnMut(ErrorCode, String) + Send { + let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(Box::new(closure)); + + Ledger::_multi_sign_request(command_handle, wallet_handle, submitter_did, request_json, cb) + } + + fn _multi_sign_request(command_handle: IndyHandle, wallet_handle: IndyHandle, submitter_did: &str, request_json: &str, cb: Option) -> ErrorCode { + let submitter_did = c_str!(submitter_did); + let request_json = c_str!(request_json); + + ErrorCode::from(unsafe { ledger::indy_multi_sign_request(command_handle, wallet_handle, submitter_did.as_ptr(), request_json.as_ptr(), cb) }) } } \ No newline at end of file diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index fb63cc46c..272a38d45 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -5,16 +5,15 @@ use serde::Serialize; use serde_json; use std::ffi::CString; -use indy_sys::ledger::indy_multi_sign_request; - use logic::type_aliases::{ProtocolVersion, ReqId}; use utils::{IndyHandle, ErrorCode}; -use utils::callbacks::ClosureHandler; use utils::constants::general::PROTOCOL_VERSION; use utils::ffi_support::{cstring_from_str, c_pointer_from_string}; use utils::json_conversion::JsonSerialize; use utils::random::rand_req_id; +use logic::indy_sdk_api::ledger; + pub const DEFAULT_LIBSOVTOKEN_DID: &'static str = "LibsovtokenDid11111111"; #[derive(Serialize, Deserialize, Debug)] @@ -25,20 +24,20 @@ pub struct Request pub operation: T, pub req_id: ReqId, pub protocol_version: ProtocolVersion, - pub identifier : String, + pub identifier: String, } -impl Request +impl Request where T: Serialize { - pub fn new(operation: T, identifier : Option) -> Self { + pub fn new(operation: T, identifier: Option) -> Self { let req_id = rand_req_id(); return Request { operation, protocol_version: PROTOCOL_VERSION, req_id, identifier: identifier.unwrap_or(DEFAULT_LIBSOVTOKEN_DID.to_string()) - } + }; } pub fn serialize_to_cstring(&self) -> Result { @@ -56,16 +55,10 @@ impl Request } pub fn multi_sign_request(wallet_handle: IndyHandle, req: &str, dids: Vec<&str>) -> Result { - let signed_req: String = req.to_string(); + let mut signed_req: String = req.to_string(); + for did in dids { - // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. - let (_receiver, cmd_handle, cb) = ClosureHandler::cb_ec_string(); - ErrorCode::from( - unsafe - { - indy_multi_sign_request(cmd_handle, wallet_handle, did.as_ptr() as *const _, signed_req.as_ptr() as *const _, cb) - } - ); + signed_req = ledger::Ledger::multi_sign_request(wallet_handle, did, &signed_req)?; // TODO: checkme. sync call } Ok(signed_req) } diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index cdff39c9a..66ca1092c 100644 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -7,10 +7,8 @@ extern crate indyrs as indy; pub mod utils; -use std::os::raw::c_char; - -use sovtoken::utils::callbacks::ClosureHandler; use sovtoken::utils::results::ResultHandler; +use sovtoken::utils::test::callbacks; use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ffi_support::c_pointer_from_string; use sovtoken::utils::ffi_support::c_pointer_from_str; @@ -20,13 +18,8 @@ use indy::{ErrorCode, IndyHandle}; use indy::future::Future; -// ***** HELPER METHODS ***** -extern "C" fn empty_create_payment_callback(_command_handle_: i32, _err: i32, _payment_req: *const c_char) -> i32 { - return ErrorCode::Success as i32; -} - fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, extra: Option, request: String) -> Result { - let (receiver, command_handle, _) = ClosureHandler::cb_ec_string(); + let (receiver, command_handle, cb) = callbacks::cb_ec_string(); let did = "mydid1"; let extra = extra.map(c_pointer_from_string).unwrap_or(std::ptr::null()); @@ -38,7 +31,7 @@ fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, ext c_pointer_from_string(inputs), c_pointer_from_string(outputs), extra, - Some(empty_create_payment_callback) + cb ); return ResultHandler::one(ErrorCode::from(error_code), receiver); diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index c75112eab..ef423ff14 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -15,9 +15,9 @@ use sovtoken::logic::address; use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ErrorCode; use sovtoken::utils::constants::txn_types::XFER_PUBLIC; -use sovtoken::utils::callbacks::ClosureHandler; use sovtoken::utils::results::ResultHandler; use sovtoken::utils::ffi_support::c_pointer_from_string; +use sovtoken::utils::test::callbacks; mod utils; use utils::wallet::Wallet; @@ -179,8 +179,7 @@ fn success_signed_request() { ] }); - let (receiver, command_handle, _) = ClosureHandler::cb_ec_string(); - + let (receiver, command_handle, cb) = callbacks::cb_ec_string(); trace!("Calling build_payment_req"); @@ -191,7 +190,7 @@ fn success_signed_request() { c_pointer_from_string(inputs.to_string()), c_pointer_from_string(outputs.to_string()), ptr::null(), - Some(empty_create_payment_callback) + cb ); assert_eq!(ErrorCode::from(error_code), ErrorCode::Success); From 770b78579fe59083f82364db9a1a141199d45f96 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 12:14:48 +0300 Subject: [PATCH 71/91] IS-1167: Removed bunch of unused functions Signed-off-by: artem.ivanov --- libsovtoken/src/logic/indy_sdk_api/crypto.rs | 494 +------------------ libsovtoken/src/utils/callbacks.rs | 323 +----------- libsovtoken/src/utils/results.rs | 60 --- libsovtoken/src/utils/test/callbacks.rs | 15 - 4 files changed, 4 insertions(+), 888 deletions(-) diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto.rs b/libsovtoken/src/logic/indy_sdk_api/crypto.rs index 47224758d..99a80b82e 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto.rs @@ -4,11 +4,8 @@ use std::ffi::CString; use std::time::Duration; use indy_sys::crypto; -use indy_sys::{ResponseEmptyCB, - ResponseStringCB, - ResponseSliceCB, - ResponseBoolCB, - ResponseStringSliceCB}; +use indy_sys::{ResponseStringCB, + ResponseSliceCB}; use utils::results::ResultHandler; use utils::callbacks::ClosureHandler; @@ -87,100 +84,6 @@ impl Key { ErrorCode::from(unsafe { crypto::indy_create_key(command_handle, wallet_handle, my_key_json.as_ptr(), cb) }) } - - /// Saves/replaces the metadata for the `verkey` in the wallet - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id where to store the metadata - /// * `metadata` - the metadata that will be stored with the key, can be empty string - pub fn set_metadata(wallet_handle: IndyHandle, verkey: &str, metadata: &str) -> Result<(), ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let err = Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb); - - ResultHandler::empty(err, receiver) - } - - /// Saves/replaces the metadata for the `verkey` in the wallet - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id where to store the metadata - /// * `metadata` - the metadata that will be stored with the key, can be empty string - /// * `timeout` - the maximum time this function waits for a response - pub fn set_metadata_timeout(wallet_handle: IndyHandle, verkey: &str, metadata: &str, timeout: Duration) -> Result<(), ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec(); - - let err = Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb); - - ResultHandler::empty_timeout(err, receiver, timeout) - } - - /// Saves/replaces the metadata for the `verkey` in the wallet - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id where to store the metadata - /// * `metadata` - the metadata that will be stored with the key, can be empty string - /// * `closure` - The closure that is called when finished - pub fn set_metadata_async(wallet_handle: IndyHandle, verkey: &str, metadata: &str, closure: F) -> ErrorCode where F: FnMut(ErrorCode) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec(Box::new(closure)); - - Key::_set_metadata(command_handle, wallet_handle, verkey, metadata, cb) - } - - fn _set_metadata(command_handle: IndyHandle, wallet_handle: IndyHandle, verkey: &str, metadata: &str, cb: Option) -> ErrorCode { - let verkey = c_str!(verkey); - let metadata = c_str!(metadata); - - ErrorCode::from(unsafe { crypto::indy_set_key_metadata(command_handle, wallet_handle, verkey.as_ptr(), metadata.as_ptr(), cb) }) - } - - /// Retrieves the metadata for the `verkey` in the wallet - /// # Argument - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id to retrieve metadata - /// # Returns - /// metadata currently stored with the key; Can be empty if no metadata was saved for this key - pub fn get_metadata(wallet_handle: IndyHandle, verkey: &str) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - - let err = Key::_get_metadata(command_handle, wallet_handle, verkey, cb); - - ResultHandler::one(err, receiver) - } - - /// Retrieves the metadata for the `verkey` in the wallet - /// # Argument - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id to retrieve metadata - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// metadata currently stored with the key; Can be empty if no metadata was saved for this key - pub fn get_metadata_timeout(wallet_handle: IndyHandle, verkey: &str, timeout: Duration) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - - let err = Key::_get_metadata(command_handle, wallet_handle, verkey, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - - /// Retrieves the metadata for the `verkey` in the wallet - /// # Argument - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `verkey` - the public key or key id to retrieve metadata - /// * `closure` - The closure that is called when finished - /// # Returns - /// errorcode from calling ffi function - pub fn get_metadata_async(wallet_handle: IndyHandle, verkey: &str, closure: F) -> ErrorCode where F: FnMut(ErrorCode, String) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string(Box::new(closure)); - - Key::_get_metadata(command_handle, wallet_handle, verkey, cb) - } - - fn _get_metadata(command_handle: IndyHandle, wallet_handle: IndyHandle, verkey: &str, cb: Option) -> ErrorCode { - let verkey = c_str!(verkey); - - ErrorCode::from(unsafe { crypto::indy_get_key_metadata(command_handle, wallet_handle, verkey.as_ptr(), cb) }) - } } pub struct Crypto {} @@ -240,398 +143,5 @@ impl Crypto { cb) }) } - - /// Verify a signature with a verkey - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `message` - the data that was signed - /// * `signature` - the signature to verify - /// # Returns - /// true if signature is valid, false otherwise - pub fn verify(signer_vk: &str, message: &[u8], signature: &[u8]) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_bool(); - - let err = Crypto::_verify(command_handle, signer_vk, message, signature, cb); - - ResultHandler::one(err, receiver) - } - - /// Verify a signature with a verkey - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `message` - the data that was signed - /// * `signature` - the signature to verify - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// true if signature is valid, false otherwise - pub fn verify_timeout(signer_vk: &str, message: &[u8], signature: &[u8], timeout: Duration) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_bool(); - - let err = Crypto::_verify(command_handle, signer_vk, message, signature, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - - /// Verify a signature with a verkey - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `message` - the data that was signed - /// * `signature` - the signature to verify - /// * `closure` - The closure that is called when finished - /// # Returns - /// errorcode from calling ffi function - pub fn verify_async(signer_vk: &str, message: &[u8], signature: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, bool) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_bool(Box::new(closure)); - - Crypto::_verify(command_handle, signer_vk, message, signature, cb) - } - - fn _verify(command_handle: IndyHandle, signer_vk: &str, message: &[u8], signature: &[u8], cb: Option) -> ErrorCode { - let signer_vk = c_str!(signer_vk); - - ErrorCode::from(unsafe { - crypto::indy_crypto_verify(command_handle, signer_vk.as_ptr(), - message.as_ptr() as *const u8, message.len() as u32, - signature.as_ptr() as *const u8, signature.len() as u32, cb) - }) - } - - /// Encrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `recipient_vk` - key id or verkey of the other party's key - /// * `message` - the data to be encrypted - /// # Returns - /// the encrypted message - pub fn auth_crypt(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8]) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb); - - ResultHandler::one(err, receiver) - } - - /// Encrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `recipient_vk` - key id or verkey of the other party's key - /// * `message` - the data to be encrypted - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// the encrypted message - pub fn auth_crypt_timeout(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - - /// Encrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `recipient_vk` - key id or verkey of the other party's key - /// * `message` - the data to be encrypted - /// * `closure` - The closure that is called when finished - /// # Returns - /// errorcode from calling ffi function - pub fn auth_crypt_async(wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); - - Crypto::_auth_crypt(command_handle, wallet_handle, sender_vk, recipient_vk, message, cb) - } - - fn _auth_crypt(command_handle: IndyHandle, wallet_handle: IndyHandle, sender_vk: &str, recipient_vk: &str, message: &[u8], cb: Option) -> ErrorCode { - let sender_vk = c_str!(sender_vk); - let recipient_vk = c_str!(recipient_vk); - ErrorCode::from(unsafe { - crypto::indy_crypto_auth_crypt(command_handle, wallet_handle, - sender_vk.as_ptr(), - recipient_vk.as_ptr(), - message.as_ptr() as *const u8, - message.len() as u32, cb) - }) - } - - /// Decrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: the message to be decrypted - /// # Returns - /// sender's verkey and decrypted message - pub fn auth_decrypt(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8]) -> Result<(String, Vec), ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_slice(); - - let err = Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); - - ResultHandler::two(err, receiver) - } - - /// Decrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: the message to be decrypted - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// sender's verkey and decrypted message - pub fn auth_decrypt_timeout(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], timeout: Duration) -> Result<(String, Vec), ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_slice(); - - let err = Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); - - ResultHandler::two_timeout(err, receiver, timeout) - } - - /// Decrypt a message by authenticated-encryption scheme. - /// - /// Sender can encrypt a confidential message specifically for Recipient, using Sender's public key. - /// Using Recipient's public key, Sender can compute a shared secret key. - /// Using Sender's public key and his secret key, Recipient can compute the exact same shared secret key. - /// That shared secret key can be used to verify that the encrypted message was not tampered with, - /// before eventually decrypting it. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: the message to be decrypted - /// * `closure` - The closure that is called when finished - /// # Returns - /// errorcode from calling ffi function - pub fn auth_decrypt_async(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, String, Vec) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_slice(Box::new(closure)); - - Crypto::_auth_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb) - } - - fn _auth_decrypt(command_handle: IndyHandle, wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], cb: Option) -> ErrorCode { - let recipient_vk = c_str!(recipient_vk); - ErrorCode::from(unsafe { - crypto::indy_crypto_auth_decrypt(command_handle, - wallet_handle, - recipient_vk.as_ptr(), - encrypted_message.as_ptr() as *const u8, - encrypted_message.len() as u32, cb) - }) - } - - /// Encrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: verkey of message recipient - /// * `message`: a pointer to first byte of message that to be encrypted - /// - /// # Returns - /// the encrypted message - pub fn anon_crypt(recipient_vk: &str, message: &[u8]) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_anon_crypt(command_handle, recipient_vk, message, cb); - - ResultHandler::one(err, receiver) - } - - /// Encrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: verkey of message recipient - /// * `message`: a pointer to first byte of message that to be encrypted - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// the encrypted message - pub fn anon_crypt_timeout(recipient_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_anon_crypt(command_handle, recipient_vk, message, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - - /// Encrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open) - /// * `recipient_vk`: verkey of message recipient - /// * `message`: a pointer to first byte of message that to be encrypted - /// * `closure` - The closure that is called when finished - /// # Returns - /// errorcode from calling ffi function - pub fn anon_crypt_async(recipient_vk: &str, message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); - - Crypto::_anon_crypt(command_handle, recipient_vk, message, cb) - } - - fn _anon_crypt(command_handle: IndyHandle, recipient_vk: &str, message: &[u8], cb: Option) -> ErrorCode { - let recipient_vk = c_str!(recipient_vk); - ErrorCode::from(unsafe { - crypto::indy_crypto_anon_crypt(command_handle, - recipient_vk.as_ptr(), - message.as_ptr() as *const u8, - message.len() as u32, - cb) - }) - } - - /// Decrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open). - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: a pointer to first byte of message that to be decrypted - /// - /// # Returns - /// decrypted message - pub fn anon_decrypt(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8]) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); - - ResultHandler::one(err, receiver) - } - - /// Decrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open). - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: a pointer to first byte of message that to be decrypted - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// decrypted message - pub fn anon_decrypt_timeout(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], timeout: Duration) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - - /// Decrypts a message by anonymous-encryption scheme. - /// - /// Sealed boxes are designed to anonymously send messages to a Recipient given its public key. - /// Only the Recipient can decrypt these messages, using its private key. - /// While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender. - /// - /// Note to use DID keys with this function you can call Did::get_ver_key to get key id (verkey) - /// for specific DID. - /// - /// # Arguments - /// * `wallet_handle`: wallet handle (created by Wallet::open). - /// * `recipient_vk`: key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `encrypted_message`: a pointer to first byte of message that to be decrypted - /// * `closure` - The closure that is called when finished - /// # Returns - /// decrypted message - pub fn anon_decrypt_async(wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], closure: F) -> ErrorCode where F: FnMut(ErrorCode, Vec) + Send { - let (command_handle, cb) = ClosureHandler::convert_cb_ec_slice(Box::new(closure)); - - Crypto::_anon_decrypt(command_handle, wallet_handle, recipient_vk, encrypted_message, cb) - } - - fn _anon_decrypt(command_handle: IndyHandle, wallet_handle: IndyHandle, recipient_vk: &str, encrypted_message: &[u8], cb: Option) -> ErrorCode { - let recipient_vk = c_str!(recipient_vk); - ErrorCode::from(unsafe { - crypto::indy_crypto_anon_decrypt(command_handle, - wallet_handle, - recipient_vk.as_ptr(), - encrypted_message.as_ptr() as *const u8, - encrypted_message.len() as u32, cb) - }) - } } diff --git a/libsovtoken/src/utils/callbacks.rs b/libsovtoken/src/utils/callbacks.rs index 1b746b4ac..96b9cd3af 100644 --- a/libsovtoken/src/utils/callbacks.rs +++ b/libsovtoken/src/utils/callbacks.rs @@ -9,15 +9,8 @@ use std::sync::Mutex; use std::sync::mpsc::{channel, Receiver}; use indy_sys::{ResponseEmptyCB, - ResponseI32CB, - ResponseI32UsizeCB, - ResponseStringCB, - ResponseStringStringCB, - ResponseStringStringStringCB, - ResponseStringStringU64CB, - ResponseSliceCB, - ResponseStringSliceCB, - ResponseBoolCB}; + ResponseStringCB, + ResponseSliceCB}; use utils::{ErrorCode, IndyHandle}; use utils::sequence::SequenceUtils; @@ -58,66 +51,6 @@ impl ClosureHandler { (command_handle, Some(_callback)) } - pub fn cb_ec_i32() -> (Receiver<(ErrorCode, IndyHandle)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val| { - sender.send((err, val)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_i32(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_i32(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, val: i32) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - cb(ErrorCode::from(err), val) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_i32_usize() -> (Receiver<(ErrorCode, IndyHandle, usize)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2| { - sender.send((err, val1, val2)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_i32_usize(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_i32_usize(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, val1: i32, val2: usize) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - cb(ErrorCode::from(err), val1, val2) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - pub fn cb_ec_string() -> (Receiver<(ErrorCode, String)>, IndyHandle, Option) { let (sender, receiver) = channel(); @@ -149,166 +82,6 @@ impl ClosureHandler { (command_handle, Some(_callback)) } - pub fn cb_ec_string_string() -> (Receiver<(ErrorCode, String, String)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2| { - sender.send((err, val1, val2)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_string(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let str1 = rust_str!(str1); - let str2 = rust_str!(str2); - cb(ErrorCode::from(err), str1, str2) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_string_opt_string() -> (Receiver<(ErrorCode, String, Option)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2| { - sender.send((err, val1, val2)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_opt_string(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_opt_string(closure: Box) + Send>) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex) + Send>>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let str1 = rust_str!(str1); - let str2 = opt_rust_str!(str2); - cb(ErrorCode::from(err), str1, str2) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_string_string_string() -> (Receiver<(ErrorCode, String, String, String)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2, val3| { - sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); - }); - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string_string(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_string_string(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, str3: *const c_char) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let str1 = rust_str!(str1); - let str2 = rust_str!(str2); - let str3 = rust_str!(str3); - cb(ErrorCode::from(err), str1, str2, str3) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_string_opt_string_opt_string() -> (Receiver<(ErrorCode, String, Option, Option)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2, val3| { - sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); - }); - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_opt_string_opt_string(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_opt_string_opt_string(closure: Box, Option) + Send>) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex, Option) + Send>>> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, str3: *const c_char) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let str1 = rust_str!(str1); - let str2 = opt_rust_str!(str2); - let str3 = opt_rust_str!(str3); - cb(ErrorCode::from(err), str1, str2, str3) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_string_string_u64() -> (Receiver<(ErrorCode, String, String, u64)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, val1, val2, val3| { - sender.send((err, val1, val2, val3)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_string_u64(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_string_u64(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex >> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, str1: *const c_char, str2: *const c_char, arg1: u64) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let str1 = rust_str!(str1); - let str2 = rust_str!(str2); - cb(ErrorCode::from(err), str1, str2, arg1) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - pub fn cb_ec_slice() -> (Receiver<(ErrorCode, Vec)>, IndyHandle, Option) { let (sender, receiver) = channel(); @@ -339,78 +112,12 @@ impl ClosureHandler { (command_handle, Some(_callback)) } - - pub fn cb_ec_string_slice() -> (Receiver<(ErrorCode, String, Vec)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, key, msg| { - sender.send((err, key, msg)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_string_slice(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_string_slice(closure: Box) + Send>) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex) + Send> >> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, vk: *const c_char, msg_raw: *const u8, msg_len: u32) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let key = rust_str!(vk); - let msg = rust_slice!(msg_raw, msg_len); - cb(ErrorCode::from(err), key, msg.to_vec()) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } - - pub fn cb_ec_bool() -> (Receiver<(ErrorCode, bool)>, IndyHandle, Option) { - let (sender, receiver) = channel(); - - let closure = Box::new(move |err, v| { - sender.send((err, v)).unwrap_or_else(log_error); - }); - - let (command_handle, cb) = ClosureHandler::convert_cb_ec_bool(closure); - - (receiver, command_handle, cb) - } - - pub fn convert_cb_ec_bool(closure: Box) -> (IndyHandle, Option) { - lazy_static! { - static ref CALLBACKS: Mutex >> = Default::default(); - } - - extern "C" fn _callback(command_handle: IndyHandle, err: i32, valid: u8) { - let mut callbacks = CALLBACKS.lock().unwrap(); - let mut cb = callbacks.remove(&command_handle).unwrap(); - let v = valid > 0; - cb(ErrorCode::from(err), v) - } - - let mut callbacks = CALLBACKS.lock().unwrap(); - let command_handle = SequenceUtils::get_next_id(); - callbacks.insert(command_handle, closure); - - (command_handle, Some(_callback)) - } } #[cfg(test)] mod test { use super::*; - use std::ffi::CString; - use std::ptr::null; - #[test] fn cb_ec_slice() { let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); @@ -423,30 +130,4 @@ mod test { assert_eq!(err, ErrorCode::Success); assert_eq!(test_vec, slice1); } - - #[test] - fn ec_string_opt_string_null() { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_opt_string(); - - let callback = cb.unwrap(); - callback(command_handle, 0, CString::new("This is a test").unwrap().as_ptr(), null()); - - let (err, str1, str2) = receiver.recv().unwrap(); - assert_eq!(err, ErrorCode::Success); - assert_eq!(str1, "This is a test".to_string()); - assert_eq!(str2, None); - } - - #[test] - fn ec_string_opt_string_some() { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string_opt_string(); - - let callback = cb.unwrap(); - callback(command_handle, 0, CString::new("This is a test").unwrap().as_ptr(), CString::new("The second string has something").unwrap().as_ptr()); - - let (err, str1, str2) = receiver.recv().unwrap(); - assert_eq!(err, ErrorCode::Success); - assert_eq!(str1, "This is a test".to_string()); - assert_eq!(str2, Some("The second string has something".to_string())); - } } diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index 4175ef341..3ed898456 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -33,26 +33,6 @@ fn map_recv_channel_error_error_code(err: ::std::sync::mpsc::RecvError) -> Error } impl ResultHandler { - pub fn empty(err: ErrorCode, receiver: Receiver) -> Result<(), ErrorCode> { - try_err!(err); - - let err = receiver.recv().map_err(map_recv_channel_error_error_code)?; - - try_err!(err); - - Ok(()) - } - - pub fn empty_timeout(err: ErrorCode, receiver: Receiver, timeout: Duration) -> Result<(), ErrorCode> { - try_err!(err); - - let err = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; - - try_err!(err); - - Ok(()) - } - pub fn one(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>) -> Result { try_err!(err); @@ -72,44 +52,4 @@ impl ResultHandler { Ok(val) } - - pub fn two(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>) -> Result<(T1, T2), ErrorCode> { - try_err!(err); - - let (err, val, val2) = receiver.recv().map_err(map_recv_channel_error_error_code)?; - - try_err!(err); - - Ok((val, val2)) - } - - pub fn two_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2)>, timeout: Duration) -> Result<(T1, T2), ErrorCode> { - try_err!(err); - - let (err, val, val2) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; - - try_err!(err); - - Ok((val, val2)) - } - - pub fn three(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>) -> Result<(T1, T2, T3), ErrorCode> { - try_err!(err); - - let (err, val, val2, val3) = receiver.recv().map_err(map_recv_channel_error_error_code)?; - - try_err!(err); - - Ok((val, val2, val3)) - } - - pub fn three_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T1, T2, T3)>, timeout: Duration) -> Result<(T1, T2, T3), ErrorCode> { - try_err!(err); - - let (err, val, val2, val3) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; - - try_err!(err); - - Ok((val, val2, val3)) - } } diff --git a/libsovtoken/src/utils/test/callbacks.rs b/libsovtoken/src/utils/test/callbacks.rs index 698f0738e..d7eae2e07 100644 --- a/libsovtoken/src/utils/test/callbacks.rs +++ b/libsovtoken/src/utils/test/callbacks.rs @@ -53,20 +53,5 @@ pub fn cb_ec_string() -> ( let (command_handle, callback) = closure_cb!(closure, char_value: *const c_char); - (receiver, command_handle, Some(callback)) -} - -pub fn cb_ec_i32() -> ( - Receiver<(ErrorCode, i32)>, - i32, - Option i32>) { - let (sender, receiver) = channel(); - - let closure = Box::new(move|error_code, c_i32| { - sender.send((ErrorCode::from(error_code), c_i32)).unwrap(); - }); - - let (command_handle, callback) = closure_cb!(closure, i32_value: i32); - (receiver, command_handle, Some(callback)) } \ No newline at end of file From a242db20fd89fee51e92e748a623bda70fc1ecaf Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 13:27:33 +0300 Subject: [PATCH 72/91] IS-1175: Updated logging initialization to match libindy logging pattern. Signed-off-by: artem.ivanov --- libsovtoken/src/api/mod.rs | 22 +-- .../src/logic/config/get_utxo_config.rs | 3 - libsovtoken/src/logic/indy_sdk_api/logger.rs | 25 +++ libsovtoken/src/logic/indy_sdk_api/mod.rs | 1 + libsovtoken/src/utils/logger.rs | 146 ++++++++++-------- libsovtoken/src/utils/mod.rs | 2 +- libsovtoken/tests/utils/setup.rs | 7 +- 7 files changed, 123 insertions(+), 83 deletions(-) create mode 100644 libsovtoken/src/logic/indy_sdk_api/logger.rs diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index 4726a3ee2..ec7c0255b 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -19,7 +19,7 @@ use logic::api_internals::{ use logic::build_payment; use logic::config::{ get_fees_config::GetFeesRequest, - get_utxo_config::*, + get_utxo_config:: *, }; use logic::did::Did; use logic::indy_sdk_api::crypto_api::CryptoSdk; @@ -214,7 +214,7 @@ pub extern "C" fn add_request_fees_handler( request_json_map, Box::new(add_request_fees::closure_cb_response(command_handle, cb)) ); - + match result { Err(e) => { error!("api::add_request_fees_handler Received error adding fees to request_json"); @@ -466,7 +466,7 @@ pub extern "C" fn build_get_utxo_request_handler(command_handle: i32, wallet_handle: i32, _submitter_did: *const c_char, payment_address: *const c_char, - cb: JsonCallback)-> i32 { + cb: JsonCallback) -> i32 { trace!("api::build_get_utxo_request_handler called"); let handle_result = api_result_handler!(< *const c_char >, command_handle, cb); @@ -510,7 +510,7 @@ pub extern "C" fn parse_get_utxo_response_handler( command_handle: i32, resp_json: *const c_char, cb: JsonCallback -)-> i32 { +) -> i32 { trace!("api::parse_get_utxo_response_handler called"); check_useful_c_callback!(cb, ErrorCode::CommonInvalidStructure as i32); @@ -547,7 +547,7 @@ pub extern "C" fn parse_get_utxo_response_handler( } }; - let reply_str: String = match reply.to_json().map_err(map_err_err!()) { + let reply_str: String = match reply.to_json().map_err(map_err_err!()) { Ok(j) => j, Err(_) => return ErrorCode::CommonInvalidState as i32, }; @@ -694,7 +694,7 @@ pub extern "C" fn parse_get_txn_fees_response_handler( command_handle: i32, resp_json: *const c_char, cb: JsonCallback -)-> i32{ +) -> i32 { check_useful_c_callback!(cb, ErrorCode::CommonInvalidStructure as i32); trace!("api::parse_get_txn_fees_response_handler called"); @@ -714,7 +714,7 @@ pub extern "C" fn parse_get_txn_fees_response_handler( debug!("Deserialized parse_get_txn_fees_response_handler arguments"); let fees_json_obj = - match parse_fees_from_get_txn_fees_response(resp_json_string){ + match parse_fees_from_get_txn_fees_response(resp_json_string) { Ok(s) => { s }, @@ -724,7 +724,7 @@ pub extern "C" fn parse_get_txn_fees_response_handler( } }; info!("Parsed get_txn_fees_response, result: {:?}", fees_json_obj); - let fees_json_ptr : *const c_char = c_pointer_from_string(fees_json_obj); + let fees_json_ptr: *const c_char = c_pointer_from_string(fees_json_obj); cb(command_handle, ErrorCode::Success as i32, fees_json_ptr); let res = ErrorCode::Success as i32; @@ -756,7 +756,7 @@ pub extern "C" fn parse_get_txn_fees_response_handler( */ #[no_mangle] pub extern "C" fn build_mint_txn_handler( - command_handle:i32, + command_handle: i32, wallet_handle: i32, submitter_did: *const c_char, outputs_json: *const c_char, @@ -947,7 +947,9 @@ pub extern fn free_parsed_state_proof(sp: *const c_char) -> i32 { #[no_mangle] pub extern fn sovtoken_init() -> i32 { - super::utils::logger::init_log(); + if let Err(err) = ::utils::logger::SovtokenLogger::init() { + return err as i32; + } debug!("sovtoken_init() started"); debug!("Going to call Payment::register"); diff --git a/libsovtoken/src/logic/config/get_utxo_config.rs b/libsovtoken/src/logic/config/get_utxo_config.rs index a89b6d8eb..4fea5c1bb 100644 --- a/libsovtoken/src/logic/config/get_utxo_config.rs +++ b/libsovtoken/src/logic/config/get_utxo_config.rs @@ -39,15 +39,12 @@ impl GetUtxoOperationRequest { mod get_utxo_config_tests { use logic::address::{qualified_address_from_verkey, verkey_from_unqualified_address}; - use utils::logger::init_log; use super::*; // This test ensures TOK-239 is fixed #[test] fn address_correct_removes_sovrin_id() { - init_log(); - let ver_key: String = "EFfodscoymgdJDuM885uEWmgCcA25P6VR6TjVqsYZLW3".to_string(); let payment_address: String = qualified_address_from_verkey(&ver_key).unwrap(); diff --git a/libsovtoken/src/logic/indy_sdk_api/logger.rs b/libsovtoken/src/logic/indy_sdk_api/logger.rs new file mode 100644 index 000000000..126f5b40a --- /dev/null +++ b/libsovtoken/src/logic/indy_sdk_api/logger.rs @@ -0,0 +1,25 @@ +use utils::ErrorCode; + +use libc::c_void; +use indy_sys::logger::{EnabledCB, LogCB, FlushCB}; + +pub fn get_logger() -> Result<(*const c_void, Option, Option, Option), ErrorCode> { + let mut context_p: *const c_void = ::std::ptr::null(); + let mut enabled_cb_p: Option = None; + let mut log_cb_p: Option = None; + let mut flush_cb_p: Option = None; + + let res = unsafe { + indy_get_logger(&mut context_p, &mut enabled_cb_p, &mut log_cb_p, &mut flush_cb_p) + }; + + match res { + ErrorCode::Success => Ok((context_p, enabled_cb_p, log_cb_p, flush_cb_p)), + err @ _ => Err(err) + } +} + +extern { + #[no_mangle] + pub fn indy_get_logger(context: *mut *const c_void, enabled_cb_p: *mut Option, log_cb_p: *mut Option, flush_cb_p: *mut Option) -> ErrorCode; +} \ No newline at end of file diff --git a/libsovtoken/src/logic/indy_sdk_api/mod.rs b/libsovtoken/src/logic/indy_sdk_api/mod.rs index e38a919c7..e0805736e 100644 --- a/libsovtoken/src/logic/indy_sdk_api/mod.rs +++ b/libsovtoken/src/logic/indy_sdk_api/mod.rs @@ -3,3 +3,4 @@ pub mod crypto_api; pub mod crypto; pub mod ledger; +pub mod logger; diff --git a/libsovtoken/src/utils/logger.rs b/libsovtoken/src/utils/logger.rs index f4bd0a953..09f0c0f39 100644 --- a/libsovtoken/src/utils/logger.rs +++ b/libsovtoken/src/utils/logger.rs @@ -1,89 +1,101 @@ //! Logger module contains helper functions for using error!, debug!, trace! etc logging //! functions and macros in libsovtoken +use std::ffi::CString; +use std::ptr::null; +use libc::c_void; + +use indy_sys::logger::{EnabledCB, LogCB, FlushCB}; +use log; +use log::{Record, Metadata, LevelFilter}; + +use logic::indy_sdk_api; +use utils::ErrorCode; + +pub struct SovtokenLogger { + context: *const c_void, + enabled: Option, + log: LogCB, + flush: Option, +} + +impl SovtokenLogger { + fn new(context: *const c_void, enabled: Option, log: LogCB, flush: Option) -> Self { + SovtokenLogger { context, enabled, log, flush } + } + + pub fn init() -> Result<(), ErrorCode> { + // logging, as implemented, crashes with VCX for android and ios, so + // for this hotfix (IS-1164) simply return OK + if cfg!(target_os = "android") || cfg!(target_os = "ios") { + return Ok(()); + } -use std::env; -use std::io::Write; + let (context, enabled, log, flush) = indy_sdk_api::logger::get_logger()?; -use env_logger::{Builder, fmt}; -use log::{Record, Level, Metadata, Log, LevelFilter}; -#[cfg(target_os = "android")] -use android_logger; -#[cfg(target_os = "android")] -use android_logger::Filter; + let log = match log { + Some(log) => log, + None => return Err(ErrorCode::CommonInvalidState) + }; + let logger = SovtokenLogger::new(context, enabled, log, flush); -/** - Routes logging to console all of the time regardless of RUST_LOG setting. helpful for unit tests -*/ -pub struct ConsoleLogger; + log::set_boxed_logger(Box::new(logger)).ok(); + log::set_max_level(LevelFilter::Trace); + Ok(()) + } +} -impl Log for ConsoleLogger { +impl log::Log for SovtokenLogger { fn enabled(&self, metadata: &Metadata) -> bool { - metadata.level() <= Level::Trace + if let Some(enabled_cb) = self.enabled { + let level = metadata.level() as u32; + let target = c_str!(metadata.target()); + + enabled_cb(self.context, + level, + target.as_ptr(), + ) + } else { true } } fn log(&self, record: &Record) { - if self.enabled(record.metadata()) { - println!("\r\n{:>5}|{:<30}|{:>35}:{:<4}| {}", - record.level(), - record.target(), - record.file().unwrap(), - record.line().unwrap(), - record.args() - ); - } + let log_cb = self.log; + + let level = record.level() as u32; + + let target = record.target(); + let message = record.args().to_string(); + let module_path = record.module_path(); + let file = record.file(); + + let target = c_str!(target); + let message = c_str!(message); + let module_path_str = opt_c_str!(module_path); + let file_str = opt_c_str!(file); + + let line = record.line().unwrap_or(0); + + log_cb(self.context, + level, + target.as_ptr(), + message.as_ptr(), + opt_c_ptr!(module_path, module_path_str), + opt_c_ptr!(file, file_str), + line, + ) } fn flush(&self) { - + if let Some(flush_cb) = self.flush { + flush_cb(self.context) + } } } -/** - Required call to get logging in libsovtoken to appear, depending on call (debug! vs error! etc) - and RUST_LOG env setting. -*/ -pub fn init_log() { - if cfg!(target_os = "android") { - #[cfg(target_os = "android")] - let log_filter = match env::var("RUST_LOG") { - Ok(val) => match val.to_lowercase().as_ref(){ - "error" => Filter::default().with_min_level(Level::Error), - "warn" => Filter::default().with_min_level(Level::Warn), - "info" => Filter::default().with_min_level(Level::Info), - "debug" => Filter::default().with_min_level(Level::Debug), - "trace" => Filter::default().with_min_level(Level::Trace), - _ => Filter::default().with_min_level(Level::Error), - }, - Err(..) => Filter::default().with_min_level(Level::Error) - }; +unsafe impl Sync for SovtokenLogger {} - //Set logging to off when deploying production android app. - #[cfg(target_os = "android")] - android_logger::init_once(log_filter); - - info!("Logging for Android"); - } else{ - Builder::new() - .format(|buf: &mut fmt::Formatter, record: &Record| { - writeln!( - buf, - "{:>5}|{:<30}|{:>35}:{:<4}| {}", - record.level(), - record.target(), - record.file().unwrap(), - record.line().unwrap(), - record.args() - ) - }) - .filter(None, LevelFilter::Off) - .parse(env::var("RUST_LOG").as_ref().map(String::as_str).unwrap_or("")) - .try_init() - .ok(); - } - -} +unsafe impl Send for SovtokenLogger {} macro_rules! _map_err { ($lvl:expr, $expr:expr) => ( diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index c55729d84..143c9263f 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -12,9 +12,9 @@ #[macro_use] pub mod ffi_support; #[macro_use] pub mod json_conversion; -#[macro_use] pub mod logger; #[macro_use] pub mod conversions; #[macro_use] pub mod macros; +#[macro_use] pub mod logger; pub mod base58; pub mod callbacks; diff --git a/libsovtoken/tests/utils/setup.rs b/libsovtoken/tests/utils/setup.rs index 7e6b13f73..70c57f671 100644 --- a/libsovtoken/tests/utils/setup.rs +++ b/libsovtoken/tests/utils/setup.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use std::iter::FromIterator; use indy; +use indy::future::Future; use sovtoken; use sovtoken::logic::parsers::common::ResponseOperations; use sovtoken::utils::constants::general::PAYMENT_METHOD_NAME; @@ -15,8 +16,6 @@ use serde_json; const PROTOCOL_VERSION: usize = 2; -use indy::future::Future; - /** Config to be passed to [`Setup::new`]. @@ -316,3 +315,7 @@ impl FromIterator for Entities Entities(v) } } + +fn set_default_logger(){ + ::indy::logger::set_default_logger(None).ok(); +} \ No newline at end of file From 25f21ca9aa5e098f5296eb520c425462533a9aad Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 15:56:59 +0300 Subject: [PATCH 73/91] IS-1175: Removed bunch of unused functions Signed-off-by: artem.ivanov --- libsovtoken/src/logic/indy_sdk_api/crypto.rs | 39 ------------------ libsovtoken/src/logic/indy_sdk_api/ledger.rs | 42 -------------------- libsovtoken/src/logic/request.rs | 2 +- libsovtoken/src/utils/results.rs | 23 ----------- 4 files changed, 1 insertion(+), 105 deletions(-) diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto.rs b/libsovtoken/src/logic/indy_sdk_api/crypto.rs index 99a80b82e..3fba7f5b9 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto.rs @@ -35,29 +35,6 @@ impl Key { ResultHandler::one(err, receiver) } - /// Creates key pair in wallet - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `my_key_json` - key information as json - /// * `timeout` - the maximum time this function waits for a response - /// - /// # Example - /// my_key_json - /// { - /// "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created). - /// Can be UTF-8, base64 or hex string. - /// "crypto_type": string, // Optional (if not set then ed25519 curve is used); Currently only 'ed25519' value is supported for this field. - /// } - /// # Returns - /// verkey of generated key pair, also used as key identifier - pub fn create_timeout(wallet_handle: IndyHandle, my_key_json: Option<&str>, timeout: Duration) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - - let err = Key::_create(command_handle, wallet_handle, my_key_json, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - /// Creates key pair in wallet /// # Arguments /// * `wallet_handle` - wallet handle (created by Wallet::open) @@ -104,22 +81,6 @@ impl Crypto { ResultHandler::one(err, receiver) } - /// Signs a message with a key - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open) - /// * `signer_vk` - key id or verkey of my key. The key must be created by calling Key::create or Did::new - /// * `message` - the data to be signed - /// * `timeout` - the maximum time this function waits for a response - /// # Returns - /// the signature - pub fn sign_timeout(wallet_handle: IndyHandle, signer_vk: &str, message: &[u8], timeout: Duration) -> Result, ErrorCode> { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_slice(); - - let err = Crypto::_sign(command_handle, wallet_handle, signer_vk, message, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - /// Signs a message with a key /// # Arguments /// * `wallet_handle` - wallet handle (created by Wallet::open) diff --git a/libsovtoken/src/logic/indy_sdk_api/ledger.rs b/libsovtoken/src/logic/indy_sdk_api/ledger.rs index d07c6a249..c053ca74a 100644 --- a/libsovtoken/src/logic/indy_sdk_api/ledger.rs +++ b/libsovtoken/src/logic/indy_sdk_api/ledger.rs @@ -33,27 +33,6 @@ impl Ledger { ResultHandler::one(err, receiver) } - /// Builds a GET_TXN request. Request to get any transaction by its seq_no. - /// - /// # Arguments - /// * `submitter_did` - DID of the request submitter. - /// * `ledger_type` - (Optional) type of the ledger the requested transaction belongs to: - /// DOMAIN - used default, - /// POOL, - /// CONFIG - /// * `seq_no` - seq_no of transaction in ledger. - /// * `timeout` - the maximum time this function waits for a response - /// - /// # Returns - /// Request result as json. - pub fn build_get_txn_request_timeout(submitter_did: Option<&str>, ledger_type: Option<&str>, seq_no: i32, timeout: Duration) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - - let err = Ledger::_build_get_txn_request(command_handle, submitter_did, ledger_type, seq_no, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - /// Builds a GET_TXN request. Request to get any transaction by its seq_no. /// /// # Arguments @@ -100,27 +79,6 @@ impl Ledger { ResultHandler::one(err, receiver) } - /// Multi signs request message. - /// - /// Adds submitter information to passed request json, signs it with submitter - /// sign key (see Crypto::sign). - /// - /// # Arguments - /// * `wallet_handle` - wallet handle (created by Wallet::open). - /// * `submitter_did` - Id of Identity stored in secured Wallet. - /// * `request_json` - Request data json. - /// * `timeout` - the maximum time this function waits for a response - /// - /// # Returns - /// Signed request json. - pub fn multi_sign_request_timeout(wallet_handle: IndyHandle, submitter_did: &str, request_json: &str, timeout: Duration) -> Result { - let (receiver, command_handle, cb) = ClosureHandler::cb_ec_string(); - - let err = Ledger::_multi_sign_request(command_handle, wallet_handle, submitter_did, request_json, cb); - - ResultHandler::one_timeout(err, receiver, timeout) - } - /// Multi signs request message. /// /// Adds submitter information to passed request json, signs it with submitter diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index 272a38d45..381d624c4 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -58,7 +58,7 @@ impl Request let mut signed_req: String = req.to_string(); for did in dids { - signed_req = ledger::Ledger::multi_sign_request(wallet_handle, did, &signed_req)?; // TODO: checkme. sync call + signed_req = ledger::Ledger::multi_sign_request(wallet_handle, did, &signed_req)?; } Ok(signed_req) } diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index 3ed898456..200125068 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -14,19 +14,6 @@ macro_rules! try_err { } } -fn map_recv_timeout_channel_error_error_code(err: ::std::sync::mpsc::RecvTimeoutError) -> ErrorCode { - match err { - ::std::sync::mpsc::RecvTimeoutError::Timeout => { - warn!("Timed out waiting for libindy to call back"); - ErrorCode::CommonIOError - } - ::std::sync::mpsc::RecvTimeoutError::Disconnected => { - warn!("Channel to libindy was disconnected unexpectedly"); - ErrorCode::CommonIOError - } - } -} - fn map_recv_channel_error_error_code(err: ::std::sync::mpsc::RecvError) -> ErrorCode { warn!("Channel returned an error - {:?}", err); ErrorCode::CommonIOError @@ -42,14 +29,4 @@ impl ResultHandler { Ok(val) } - - pub fn one_timeout(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>, timeout: Duration) -> Result { - try_err!(err); - - let (err, val) = receiver.recv_timeout(timeout).map_err(map_recv_timeout_channel_error_error_code)?; - - try_err!(err); - - Ok(val) - } } From 7392f1c47123bf1ea94f7d0b4e688b829a95bb2d Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 18:44:44 +0300 Subject: [PATCH 74/91] IS-1167: Corrected sovtoken_init function Signed-off-by: artem.ivanov --- libsovtoken/src/api/mod.rs | 109 +++++++++++-------- libsovtoken/src/logic/indy_sdk_api/crypto.rs | 1 - libsovtoken/src/logic/indy_sdk_api/ledger.rs | 1 - libsovtoken/src/utils/results.rs | 13 ++- 4 files changed, 73 insertions(+), 51 deletions(-) diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index ec7c0255b..ef72eb8be 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -35,7 +35,7 @@ use logic::parsers::{ parse_response_with_fees_handler::{ParseResponseWithFees, ParseResponseWithFeesReply}, parse_get_txn_fees::{parse_fees_from_get_txn_fees_response, get_fees_state_proof_extractor} }; -use logic::payments::{CreatePaymentHandler}; +use logic::payments::CreatePaymentHandler; use logic::set_fees; use logic::xfer_payload::XferPayload; @@ -46,6 +46,7 @@ use utils::ffi_support::{str_from_char_ptr, string_from_char_ptr, c_pointer_from use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::general::ResultExtension; use utils::callbacks::ClosureHandler; +use utils::results::ResultHandler; /// This method generates private part of payment address /// and stores it in a secure place. It should be a @@ -954,64 +955,76 @@ pub extern fn sovtoken_init() -> i32 { debug!("sovtoken_init() started"); debug!("Going to call Payment::register"); - // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. - let (_receiver, cmd_handle, cb) = ClosureHandler::cb_ec(); + let (receiver, cmd_handle, cb) = ClosureHandler::cb_ec(); let payment_method_name = CString::new(PAYMENT_METHOD_NAME).unwrap(); - unsafe { - indy_sys::payments::indy_register_payment_method( - cmd_handle, - payment_method_name.as_ptr(), - Some(create_payment_address_handler), - Some(add_request_fees_handler), - Some(parse_response_with_fees_handler), - Some(build_get_utxo_request_handler), - Some(parse_get_utxo_response_handler), - Some(build_payment_req_handler), - Some(parse_payment_response_handler), - Some(build_mint_txn_handler), - Some(build_set_txn_fees_handler), - Some(build_get_txn_fees_handler), - Some(parse_get_txn_fees_response_handler), - Some(build_verify_req_handler), - Some(parse_verify_response_handler), - cb, - ); - } - - + let err = unsafe { + ErrorCode::from( + indy_sys::payments::indy_register_payment_method( + cmd_handle, + payment_method_name.as_ptr(), + Some(create_payment_address_handler), + Some(add_request_fees_handler), + Some(parse_response_with_fees_handler), + Some(build_get_utxo_request_handler), + Some(parse_get_utxo_response_handler), + Some(build_payment_req_handler), + Some(parse_payment_response_handler), + Some(build_mint_txn_handler), + Some(build_set_txn_fees_handler), + Some(build_get_txn_fees_handler), + Some(parse_get_txn_fees_response_handler), + Some(build_verify_req_handler), + Some(parse_verify_response_handler), + cb, + ) + ) + }; debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_UTXO"); - // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. - let (_receiver_utxo, cmd_handle_utxo, cb_utxo) = ClosureHandler::cb_ec(); - - - unsafe { - indy_sys::ledger::indy_register_transaction_parser_for_sp( - cmd_handle_utxo, - c_pointer_from_string(GET_UTXO.to_string()), - Some(get_utxo_state_proof_parser), - Some(free_parsed_state_proof), - cb_utxo - ); - } + let (receiver_utxo, cmd_handle_utxo, cb_utxo) = ClosureHandler::cb_ec(); + + let err_utxo = unsafe { + ErrorCode::from( + indy_sys::ledger::indy_register_transaction_parser_for_sp( + cmd_handle_utxo, + c_pointer_from_string(GET_UTXO.to_string()), + Some(get_utxo_state_proof_parser), + Some(free_parsed_state_proof), + cb_utxo + ) + ) + }; debug!("Going to call Ledger::register_transaction_parser_for_sp for GET_FEES"); - // TODO: allocating a receiver we don't use. change how command handle and cb are allocated. - let (_receiver_fees, cmd_handle_fees, cb_fees) = ClosureHandler::cb_ec(); + let (receiver_fees, cmd_handle_fees, cb_fees) = ClosureHandler::cb_ec(); + + let err_fees = unsafe { + ErrorCode::from( + indy_sys::ledger::indy_register_transaction_parser_for_sp( + cmd_handle_fees, + c_pointer_from_string(GET_FEES.to_string()), + Some(get_fees_state_proof_parser), + Some(free_parsed_state_proof), + cb_fees + ) + ) + }; + // TODO: DISCUSS I think we should rather wait and check for a result of all functions above than call return. + if let Err(err) = ResultHandler::empty(err, receiver) { + return err as i32; + } - unsafe { - indy_sys::ledger::indy_register_transaction_parser_for_sp( - cmd_handle_fees, - c_pointer_from_string(GET_FEES.to_string()), - Some(get_fees_state_proof_parser), - Some(free_parsed_state_proof), - cb_fees - ); + if let Err(err) = ResultHandler::empty(err_utxo, receiver_utxo) { + return err as i32; + } + + if let Err(err) = ResultHandler::empty(err_fees, receiver_fees) { + return err as i32; } debug!("sovtoken_init() returning ErrorCode::Success"); diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto.rs b/libsovtoken/src/logic/indy_sdk_api/crypto.rs index 3fba7f5b9..39797f05d 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto.rs @@ -1,7 +1,6 @@ use utils::{ErrorCode, IndyHandle}; use std::ffi::CString; -use std::time::Duration; use indy_sys::crypto; use indy_sys::{ResponseStringCB, diff --git a/libsovtoken/src/logic/indy_sdk_api/ledger.rs b/libsovtoken/src/logic/indy_sdk_api/ledger.rs index c053ca74a..6137f700d 100644 --- a/libsovtoken/src/logic/indy_sdk_api/ledger.rs +++ b/libsovtoken/src/logic/indy_sdk_api/ledger.rs @@ -1,7 +1,6 @@ use utils::{ErrorCode, IndyHandle}; use std::ffi::CString; -use std::time::Duration; use std::ptr::null; use indy_sys::ledger; diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index 200125068..1debc4782 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -1,6 +1,5 @@ //! use std::sync::mpsc::Receiver; -use std::time::Duration; use utils::ErrorCode; @@ -20,6 +19,18 @@ fn map_recv_channel_error_error_code(err: ::std::sync::mpsc::RecvError) -> Error } impl ResultHandler { + pub fn empty(err: ErrorCode, receiver: Receiver) -> Result<(), ErrorCode> { + try_err!(err); + + match receiver.recv().map_err(map_recv_channel_error_error_code) { + Ok(err) => { + try_err!(err); + Ok(()) + } + Err(e) => Err(e) + } + } + pub fn one(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>) -> Result { try_err!(err); From eeb9cd6e75287eef6651140e1f1a67502269b1c7 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Thu, 21 Mar 2019 18:45:47 +0300 Subject: [PATCH 75/91] IS-1167: Fixed environment.rs deprecation warning Signed-off-by: artem.ivanov --- libsovtoken/Cargo.toml | 3 +++ libsovtoken/tests/utils/environment.rs | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 90fd7d74e..7bdc1a2b8 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -39,6 +39,9 @@ sha2 = "0.6.0" sha3 = "0.6.0" sodiumoxide = {version = "0.0.14"} +[dev-dependencies] +dirs = "1.0.4" + [profile.release] opt-level = 3 debug = false diff --git a/libsovtoken/tests/utils/environment.rs b/libsovtoken/tests/utils/environment.rs index e10373877..1587e618a 100644 --- a/libsovtoken/tests/utils/environment.rs +++ b/libsovtoken/tests/utils/environment.rs @@ -1,5 +1,4 @@ -// TODO: this should be removed and the warning fixed. this is temporary -#![allow(deprecated)] +extern crate dirs; use std::env; use std::path::PathBuf; @@ -9,7 +8,7 @@ pub struct EnvironmentUtils {} impl EnvironmentUtils { pub fn indy_home_path() -> PathBuf { // TODO: FIXME: Provide better handling for the unknown home path case!!! - let mut path = env::home_dir().unwrap_or(PathBuf::from("/home/indy")); + let mut path = dirs::home_dir().unwrap_or(PathBuf::from("/home/indy")); path.push(if cfg!(target_os = "ios") { "Documents/.indy_client" } else { ".indy_client" }); path } From f7f1df46dbfa9cbafb6363e745a840468be9be1e Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Fri, 22 Mar 2019 10:30:17 +0300 Subject: [PATCH 76/91] IS-1167: Moved ErrorCode to proper place Signed-off-by: artem.ivanov --- libsovtoken/src/api/mod.rs | 3 ++- libsovtoken/src/lib.rs | 4 +++- libsovtoken/src/logic/address.rs | 2 +- .../logic/api_internals/add_request_fees.rs | 4 ++-- .../src/logic/api_internals/create_address.rs | 2 +- libsovtoken/src/logic/build_payment.rs | 6 +++--- libsovtoken/src/logic/hash.rs | 2 +- libsovtoken/src/logic/indy_sdk_api/crypto.rs | 2 +- .../src/logic/indy_sdk_api/crypto_api.rs | 2 +- libsovtoken/src/logic/indy_sdk_api/ledger.rs | 2 +- libsovtoken/src/logic/indy_sdk_api/logger.rs | 2 +- libsovtoken/src/logic/minting.rs | 2 +- libsovtoken/src/logic/parsers/common.rs | 2 +- .../src/logic/parsers/error_code_parser.rs | 2 +- .../src/logic/parsers/parse_get_txn_fees.rs | 2 +- .../logic/parsers/parse_get_utxo_response.rs | 2 +- .../logic/parsers/parse_payment_response.rs | 2 +- .../parse_response_with_fees_handler.rs | 2 +- libsovtoken/src/logic/parsers/parse_verify.rs | 2 +- libsovtoken/src/logic/payments.rs | 2 +- libsovtoken/src/logic/request.rs | 2 +- libsovtoken/src/logic/set_fees.rs | 2 +- libsovtoken/src/logic/verify.rs | 2 +- libsovtoken/src/logic/xfer_payload.rs | 4 ++-- libsovtoken/src/utils/base58.rs | 2 +- libsovtoken/src/utils/callbacks.rs | 2 +- libsovtoken/src/utils/ffi_support.rs | 4 ++-- libsovtoken/src/utils/json_conversion.rs | 5 +++-- libsovtoken/src/utils/logger.rs | 2 +- libsovtoken/src/utils/mod.rs | 7 +------ libsovtoken/src/utils/results.rs | 18 ++++++++---------- libsovtoken/src/utils/test/callbacks.rs | 4 ++-- libsovtoken/tests/add_fees_for_attrib_test.rs | 12 +++++++----- .../tests/add_fees_for_cred_def_test.rs | 16 ++++++++-------- libsovtoken/tests/add_fees_for_nym.rs | 14 ++++++++------ .../tests/add_fees_for_revoke_reg_def.rs | 13 ++++++------- libsovtoken/tests/add_fees_for_schema_test.rs | 16 +++++++++------- libsovtoken/tests/api_tests.rs | 2 +- .../tests/build_add_fees_txn_handler_test.rs | 10 +++++----- .../tests/build_fees_txn_handler_test.rs | 3 ++- .../build_get_utxo_request_handler_test.rs | 3 ++- .../tests/build_mint_txn_handler_test.rs | 6 +++--- .../tests/build_payment_req_handler_test.rs | 18 ++++++++++-------- libsovtoken/tests/build_verify_req_test.rs | 8 +++++--- libsovtoken/tests/create_payment_tests.rs | 8 ++++---- .../tests/parse_payment_response_test.rs | 4 +++- libsovtoken/tests/payment_chaos_tests.rs | 14 ++++++++------ libsovtoken/tests/utils/did.rs | 4 ++-- libsovtoken/tests/utils/mint.rs | 4 ++-- 49 files changed, 135 insertions(+), 123 deletions(-) diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index ef72eb8be..939ae1a1a 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -10,6 +10,7 @@ use std::ffi::CString; use std::os::raw::c_char; + use indy_sys; use logic::api_internals::{ @@ -40,7 +41,7 @@ use logic::set_fees; use logic::xfer_payload::XferPayload; use utils::constants::general::{JsonCallback, PAYMENT_METHOD_NAME, LEDGER_ID}; -use utils::ErrorCode; +use ErrorCode; use utils::constants::txn_types::{GET_FEES, GET_UTXO}; use utils::ffi_support::{str_from_char_ptr, string_from_char_ptr, c_pointer_from_string}; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; diff --git a/libsovtoken/src/lib.rs b/libsovtoken/src/lib.rs index 5f1302447..de703d918 100644 --- a/libsovtoken/src/lib.rs +++ b/libsovtoken/src/lib.rs @@ -52,4 +52,6 @@ extern crate indyrs as indy; // lib-sdk rust wrapper to get pub mod utils; pub mod api; pub mod logic; -pub mod libraries; \ No newline at end of file +pub mod libraries; + +pub use indy::{ErrorCode, IndyHandle}; \ No newline at end of file diff --git a/libsovtoken/src/logic/address.rs b/libsovtoken/src/logic/address.rs index 816516cc8..5842bab38 100644 --- a/libsovtoken/src/logic/address.rs +++ b/libsovtoken/src/logic/address.rs @@ -19,7 +19,7 @@ use serde_json; use std::{io, str}; -use utils::ErrorCode; +use ErrorCode; use logic::parsers::common::TXO; use utils::json_conversion::{JsonDeserialize, JsonSerialize}; use utils::constants::general::{PAYMENT_ADDRESS_QUALIFIER, TXO_QUALIFIER}; diff --git a/libsovtoken/src/logic/api_internals/add_request_fees.rs b/libsovtoken/src/logic/api_internals/add_request_fees.rs index 399bbfe5b..42e42b36e 100644 --- a/libsovtoken/src/logic/api_internals/add_request_fees.rs +++ b/libsovtoken/src/logic/api_internals/add_request_fees.rs @@ -1,6 +1,6 @@ //! TODO ??? -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use logic::xfer_payload::{XferPayload, serialize_signature}; use logic::input::Inputs; @@ -164,7 +164,7 @@ fn signed_fees(wallet_handle: i32, inputs: Inputs, outputs: Outputs, extra: Opti #[cfg(test)] mod test_deserialize_inputs { use libc::c_char; - use utils::ErrorCode; + use ErrorCode; use serde_json; use std::ptr; use utils::constants::txn_types::XFER_PUBLIC; diff --git a/libsovtoken/src/logic/api_internals/create_address.rs b/libsovtoken/src/logic/api_internals/create_address.rs index c7b11ea7a..e7a4ea8cd 100644 --- a/libsovtoken/src/logic/api_internals/create_address.rs +++ b/libsovtoken/src/logic/api_internals/create_address.rs @@ -6,7 +6,7 @@ Logic for the [`create_payment_address_handler`]. use std::os::raw::c_char; -use utils::ErrorCode; +use ErrorCode; use logic::config::payment_address_config::PaymentAddressConfig; use utils::constants::general::{JsonCallback, JsonCallbackUnwrapped}; use utils::ffi_support::{string_from_char_ptr, cstring_from_str, c_pointer_from_str}; diff --git a/libsovtoken/src/logic/build_payment.rs b/libsovtoken/src/logic/build_payment.rs index d433983e2..8186a1f69 100644 --- a/libsovtoken/src/logic/build_payment.rs +++ b/libsovtoken/src/logic/build_payment.rs @@ -8,7 +8,7 @@ use logic::input::Inputs; use logic::output::Outputs; use logic::xfer_payload::XferPayload; use utils::base58::{IntoBase58, FromBase58}; -use utils::ErrorCode; +use ErrorCode; use utils::ffi_support::{string_from_char_ptr, c_pointer_from_str}; @@ -92,7 +92,7 @@ mod test_deserialize_inputs { use libc::c_char; use std::ptr; - use utils::ErrorCode; + use ErrorCode; use utils::test::default; use super::{ @@ -171,7 +171,7 @@ mod test_deserialize_inputs { mod test_handle_signing { use super::*; use logic::request::Request; - use utils::ErrorCode; + use ErrorCode; use utils::results::ResultHandler; use utils::test::{default, callbacks}; diff --git a/libsovtoken/src/logic/hash.rs b/libsovtoken/src/logic/hash.rs index 8a091eaf3..adf2d7886 100644 --- a/libsovtoken/src/logic/hash.rs +++ b/libsovtoken/src/logic/hash.rs @@ -1,7 +1,7 @@ //! what does this module do? use openssl::hash::{hash, MessageDigest, Hasher, DigestBytes}; -use utils::ErrorCode; +use ErrorCode; pub const HASH_OUTPUT_LEN: usize = 32; diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto.rs b/libsovtoken/src/logic/indy_sdk_api/crypto.rs index 39797f05d..170489a0e 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto.rs @@ -1,4 +1,4 @@ -use utils::{ErrorCode, IndyHandle}; +use {ErrorCode, IndyHandle}; use std::ffi::CString; diff --git a/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs b/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs index 92b507d7f..619fa2bfc 100644 --- a/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs +++ b/libsovtoken/src/logic/indy_sdk_api/crypto_api.rs @@ -3,7 +3,7 @@ use logic::indy_sdk_api::crypto::{Key, Crypto}; use logic::config::payment_address_config::PaymentAddressConfig; use utils::base58::serialize_bytes; use utils::json_conversion::JsonSerialize; -use utils::{ErrorCode, IndyHandle}; +use {ErrorCode, IndyHandle}; /** This defines the interfaces for INDY SDK crypto apis, which can be replaced with different implementations diff --git a/libsovtoken/src/logic/indy_sdk_api/ledger.rs b/libsovtoken/src/logic/indy_sdk_api/ledger.rs index 6137f700d..271878015 100644 --- a/libsovtoken/src/logic/indy_sdk_api/ledger.rs +++ b/libsovtoken/src/logic/indy_sdk_api/ledger.rs @@ -1,4 +1,4 @@ -use utils::{ErrorCode, IndyHandle}; +use {ErrorCode, IndyHandle}; use std::ffi::CString; use std::ptr::null; diff --git a/libsovtoken/src/logic/indy_sdk_api/logger.rs b/libsovtoken/src/logic/indy_sdk_api/logger.rs index 126f5b40a..3eab8bf9f 100644 --- a/libsovtoken/src/logic/indy_sdk_api/logger.rs +++ b/libsovtoken/src/logic/indy_sdk_api/logger.rs @@ -1,4 +1,4 @@ -use utils::ErrorCode; +use ErrorCode; use libc::c_void; use indy_sys::logger::{EnabledCB, LogCB, FlushCB}; diff --git a/libsovtoken/src/logic/minting.rs b/libsovtoken/src/logic/minting.rs index 1a99084e9..f805a5e45 100644 --- a/libsovtoken/src/logic/minting.rs +++ b/libsovtoken/src/logic/minting.rs @@ -1,4 +1,4 @@ -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use logic::address; use logic::config::output_mint_config::MintRequest; diff --git a/libsovtoken/src/logic/parsers/common.rs b/libsovtoken/src/logic/parsers/common.rs index f9adb8afb..1cc9c1ff8 100644 --- a/libsovtoken/src/logic/parsers/common.rs +++ b/libsovtoken/src/logic/parsers/common.rs @@ -1,6 +1,6 @@ //! -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use utils::ffi_support::string_from_char_ptr; use utils::constants::txn_fields::{RESULT, STATE_PROOF}; diff --git a/libsovtoken/src/logic/parsers/error_code_parser.rs b/libsovtoken/src/logic/parsers/error_code_parser.rs index 165912c12..1cd01fca2 100644 --- a/libsovtoken/src/logic/parsers/error_code_parser.rs +++ b/libsovtoken/src/logic/parsers/error_code_parser.rs @@ -1,4 +1,4 @@ -use utils::ErrorCode; +use ErrorCode; const INSUFFICIENT_FUNDS_ERROR: &str = "InsufficientFundsError"; const EXTRA_FUNDS_ERROR: &str = "ExtraFundsError"; diff --git a/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs b/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs index dbd0b9227..41c7fdcfa 100644 --- a/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs +++ b/libsovtoken/src/logic/parsers/parse_get_txn_fees.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use base64; use serde_json; use serde_json::Error; -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use logic::parsers::common::{ResponseOperations, StateProof, diff --git a/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs b/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs index f4c87156b..7cff8afae 100644 --- a/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs +++ b/libsovtoken/src/logic/parsers/parse_get_utxo_response.rs @@ -1,7 +1,7 @@ //! types used for parse_get_utxo_response_handler use base64; -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use logic::parsers::common::{ResponseOperations, TXO, StateProof, ParsedSP, KeyValuesInSP, KeyValueSimpleData, extract_result_and_state_proof_from_node_reply}; diff --git a/libsovtoken/src/logic/parsers/parse_payment_response.rs b/libsovtoken/src/logic/parsers/parse_payment_response.rs index 030d2df70..061a10ecf 100644 --- a/libsovtoken/src/logic/parsers/parse_payment_response.rs +++ b/libsovtoken/src/logic/parsers/parse_payment_response.rs @@ -1,6 +1,6 @@ //! types used for parse_payment_response_handler -use utils::ErrorCode; +use ErrorCode; use logic::address::add_qualifer_to_address; use logic::input::Inputs; use logic::output::Outputs; diff --git a/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs b/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs index 17a5ed3a5..1f77cf514 100644 --- a/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs +++ b/libsovtoken/src/logic/parsers/parse_response_with_fees_handler.rs @@ -9,7 +9,7 @@ use logic::parsers::common::{ResponseOperations, TransactionMetaData, RequireSignature}; use logic::parsers::error_code_parser; -use utils::ErrorCode; +use ErrorCode; use logic::type_aliases::{ProtocolVersion, TokenAmount, TxnSeqNo, TxnVersion}; /** diff --git a/libsovtoken/src/logic/parsers/parse_verify.rs b/libsovtoken/src/logic/parsers/parse_verify.rs index 63b0d3b72..064c45b34 100644 --- a/libsovtoken/src/logic/parsers/parse_verify.rs +++ b/libsovtoken/src/logic/parsers/parse_verify.rs @@ -4,7 +4,7 @@ use logic::type_aliases::ProtocolVersion; use logic::parsers::common::ResponseOperations; use logic::output::Outputs; use logic::input::Inputs; -use utils::ErrorCode; +use ErrorCode; use logic::parsers::common::UTXO; use logic::parsers::common::TXO; use logic::type_aliases::TxnSeqNo; diff --git a/libsovtoken/src/logic/payments.rs b/libsovtoken/src/logic/payments.rs index e58a82477..90c37512a 100644 --- a/libsovtoken/src/logic/payments.rs +++ b/libsovtoken/src/logic/payments.rs @@ -1,6 +1,6 @@ //! Payments module contains functions for working with payments. :D -use utils::ErrorCode; +use ErrorCode; use logic::config::payment_address_config::PaymentAddressConfig; use logic::indy_sdk_api::crypto_api::{CryptoAPI}; use logic::address; diff --git a/libsovtoken/src/logic/request.rs b/libsovtoken/src/logic/request.rs index 381d624c4..e761fd713 100644 --- a/libsovtoken/src/logic/request.rs +++ b/libsovtoken/src/logic/request.rs @@ -6,7 +6,7 @@ use serde_json; use std::ffi::CString; use logic::type_aliases::{ProtocolVersion, ReqId}; -use utils::{IndyHandle, ErrorCode}; +use {IndyHandle, ErrorCode}; use utils::constants::general::PROTOCOL_VERSION; use utils::ffi_support::{cstring_from_str, c_pointer_from_string}; use utils::json_conversion::JsonSerialize; diff --git a/libsovtoken/src/logic/set_fees.rs b/libsovtoken/src/logic/set_fees.rs index 5203e295c..c9036e6cc 100644 --- a/libsovtoken/src/logic/set_fees.rs +++ b/libsovtoken/src/logic/set_fees.rs @@ -1,6 +1,6 @@ //! This module is for ??? -use utils::ErrorCode; +use ErrorCode; use libc::c_char; use logic::config::set_fees_config::{SetFees, SetFeesMap}; use logic::did::Did; diff --git a/libsovtoken/src/logic/verify.rs b/libsovtoken/src/logic/verify.rs index 4c0397796..b207d8489 100644 --- a/libsovtoken/src/logic/verify.rs +++ b/libsovtoken/src/logic/verify.rs @@ -1,6 +1,6 @@ use libc::c_char; -use utils::ErrorCode; +use ErrorCode; use logic::did::Did; use utils::constants::general::{JsonCallback, JsonCallbackUnwrapped}; use utils::ffi_support::string_from_char_ptr; diff --git a/libsovtoken/src/logic/xfer_payload.rs b/libsovtoken/src/logic/xfer_payload.rs index d09ec24ae..ada0d19d9 100644 --- a/libsovtoken/src/logic/xfer_payload.rs +++ b/libsovtoken/src/logic/xfer_payload.rs @@ -14,8 +14,8 @@ use std::sync::Arc; use std::sync::Mutex; use std::collections::HashMap; -use utils::IndyHandle; -use utils::ErrorCode; +use IndyHandle; +use ErrorCode; use logic::address; use logic::indy_sdk_api::crypto_api::CryptoAPI; diff --git a/libsovtoken/src/utils/base58.rs b/libsovtoken/src/utils/base58.rs index b6421cf7a..47c361493 100644 --- a/libsovtoken/src/utils/base58.rs +++ b/libsovtoken/src/utils/base58.rs @@ -1,7 +1,7 @@ //! Base58 helper functions -use utils::ErrorCode; +use ErrorCode; use bs58; use bs58::decode::DecodeError; /** diff --git a/libsovtoken/src/utils/callbacks.rs b/libsovtoken/src/utils/callbacks.rs index 96b9cd3af..dbcf0b947 100644 --- a/libsovtoken/src/utils/callbacks.rs +++ b/libsovtoken/src/utils/callbacks.rs @@ -12,7 +12,7 @@ use indy_sys::{ResponseEmptyCB, ResponseStringCB, ResponseSliceCB}; -use utils::{ErrorCode, IndyHandle}; +use {ErrorCode, IndyHandle}; use utils::sequence::SequenceUtils; fn log_error(e: T) { diff --git a/libsovtoken/src/utils/ffi_support.rs b/libsovtoken/src/utils/ffi_support.rs index bdacb4068..56c4294e9 100644 --- a/libsovtoken/src/utils/ffi_support.rs +++ b/libsovtoken/src/utils/ffi_support.rs @@ -4,7 +4,7 @@ use libc::c_char; use std::ffi::{CString, CStr}; -use utils::ErrorCode; +use ErrorCode; use utils::json_conversion::JsonDeserialize; /** @@ -112,7 +112,7 @@ mod ffi_support_tests { use serde_json::Value; use utils::general::ResultExtension; use utils::ffi_support::{str_from_char_ptr, cstring_from_str, deserialize_from_char_ptr, c_pointer_from_string, string_from_char_ptr}; - use utils::ErrorCode; + use ErrorCode; static VALID_DUMMY_JSON: &'static str = r#"{"field1":"data"}"#; diff --git a/libsovtoken/src/utils/json_conversion.rs b/libsovtoken/src/utils/json_conversion.rs index 8fb83d458..c402f70aa 100644 --- a/libsovtoken/src/utils/json_conversion.rs +++ b/libsovtoken/src/utils/json_conversion.rs @@ -2,10 +2,11 @@ //! Implementations for Serde Json serialization/deserialization //! -use utils::ErrorCode; use serde::{Serialize, Deserialize}; use serde_json::{Error, from_str, to_string}; +use ErrorCode; + // // given a json formatted string, return object of given type // any type with the Deserialize attribute will be supported @@ -80,7 +81,7 @@ macro_rules! json_c_pointer { mod json_conversion_tests { use utils::json_conversion::{JsonDeserialize, JsonSerialize}; - use utils::ErrorCode; + use ErrorCode; // helper structures and data #[derive(Debug, Serialize, Deserialize)] diff --git a/libsovtoken/src/utils/logger.rs b/libsovtoken/src/utils/logger.rs index 09f0c0f39..a72e36627 100644 --- a/libsovtoken/src/utils/logger.rs +++ b/libsovtoken/src/utils/logger.rs @@ -10,7 +10,7 @@ use log; use log::{Record, Metadata, LevelFilter}; use logic::indy_sdk_api; -use utils::ErrorCode; +use ErrorCode; pub struct SovtokenLogger { context: *const c_void, diff --git a/libsovtoken/src/utils/mod.rs b/libsovtoken/src/utils/mod.rs index 143c9263f..8a23847ef 100644 --- a/libsovtoken/src/utils/mod.rs +++ b/libsovtoken/src/utils/mod.rs @@ -24,9 +24,4 @@ pub mod random; pub mod sequence; pub mod results; #[cfg(any(test, feature = "integration"))] -pub mod test; - -pub type IndyHandle = i32; - -pub use indy::ErrorCode; - +pub mod test; \ No newline at end of file diff --git a/libsovtoken/src/utils/results.rs b/libsovtoken/src/utils/results.rs index 1debc4782..49751c76e 100644 --- a/libsovtoken/src/utils/results.rs +++ b/libsovtoken/src/utils/results.rs @@ -1,9 +1,7 @@ //! use std::sync::mpsc::Receiver; -use utils::ErrorCode; - -pub struct ResultHandler {} +use ErrorCode; macro_rules! try_err { ($x:ident) => { @@ -13,6 +11,8 @@ macro_rules! try_err { } } +pub struct ResultHandler {} + fn map_recv_channel_error_error_code(err: ::std::sync::mpsc::RecvError) -> ErrorCode { warn!("Channel returned an error - {:?}", err); ErrorCode::CommonIOError @@ -22,13 +22,11 @@ impl ResultHandler { pub fn empty(err: ErrorCode, receiver: Receiver) -> Result<(), ErrorCode> { try_err!(err); - match receiver.recv().map_err(map_recv_channel_error_error_code) { - Ok(err) => { - try_err!(err); - Ok(()) - } - Err(e) => Err(e) - } + let err = receiver.recv().map_err(map_recv_channel_error_error_code)?; + + try_err!(err); + + Ok(()) } pub fn one(err: ErrorCode, receiver: Receiver<(ErrorCode, T)>) -> Result { diff --git a/libsovtoken/src/utils/test/callbacks.rs b/libsovtoken/src/utils/test/callbacks.rs index d7eae2e07..ec9ed4174 100644 --- a/libsovtoken/src/utils/test/callbacks.rs +++ b/libsovtoken/src/utils/test/callbacks.rs @@ -4,7 +4,7 @@ **These should only be used for testing** */ -use utils::ErrorCode; +use ErrorCode; use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; use std::sync::Mutex; use std::sync::mpsc::{channel, Receiver}; @@ -12,7 +12,7 @@ use std::collections::HashMap; use std::os::raw::c_char; use std::ffi::CStr; -// use utils::ErrorCode; +// use ErrorCode; type Callbacks = Mutex>>; diff --git a/libsovtoken/tests/add_fees_for_attrib_test.rs b/libsovtoken/tests/add_fees_for_attrib_test.rs index 5d613b0c4..3efece2a8 100644 --- a/libsovtoken/tests/add_fees_for_attrib_test.rs +++ b/libsovtoken/tests/add_fees_for_attrib_test.rs @@ -3,14 +3,16 @@ extern crate indyrs as indy; extern crate sovtoken; +use indy::future::Future; + mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; +use sovtoken::ErrorCode; use sovtoken::logic::parsers::common::UTXO; use sovtoken::utils::constants::txn_types::ATTRIB; -use indy::future::Future; pub const ATTRIB_RAW_DATA_2: &'static str = r#"{"endpoint":{"ha":"127.0.0.1:5555"}}"#; pub const ATTRIB_RAW_DATA: &'static str = r#"{"endpoint":{"ha":"127.0.0.1:5555"}}"#; @@ -107,7 +109,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_1).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -115,7 +117,7 @@ pub fn build_and_submit_attrib_with_fees_incorrect_funds() { }]).to_string(); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs_2).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentExtraFundsError); } #[test] @@ -145,7 +147,7 @@ pub fn build_and_submit_attrib_with_fees_from_invalid_did_and_check_utxo_remain_ }]).to_string(); let parsed_err = _send_attrib_with_fees(&did_new, Some(ATTRIB_RAW_DATA), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err.error_code, ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -188,7 +190,7 @@ pub fn build_and_submit_attrib_with_fees_double_spend() { assert_eq!(ATTRIB_RAW_DATA, data); let parsed_err = _send_attrib_with_fees(dids[0], Some(ATTRIB_RAW_DATA_2), wallet.handle, pool_handle, &inputs, &outputs).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } fn _send_attrib_with_fees(did: &str, data: Option<&str>, wallet_handle: i32, pool_handle: i32, inputs: &str, outputs: &str) -> Result { diff --git a/libsovtoken/tests/add_fees_for_cred_def_test.rs b/libsovtoken/tests/add_fees_for_cred_def_test.rs index 1fced95bc..0ecaf7e67 100644 --- a/libsovtoken/tests/add_fees_for_cred_def_test.rs +++ b/libsovtoken/tests/add_fees_for_cred_def_test.rs @@ -7,15 +7,15 @@ extern crate sovtoken; use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::random::rand_string; -mod utils; +use indy::future::Future; +use sovtoken::ErrorCode; +use sovtoken::utils::random::rand_string; +mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use indy::future::Future; - fn send_cred_def_with_fees(did: &str, name: &str, version: &str, @@ -138,7 +138,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -146,7 +146,7 @@ pub fn build_and_submit_cred_def_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentExtraFundsError); } #[test] @@ -177,7 +177,7 @@ pub fn build_and_submit_cred_def_with_fees_double_spend() { send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap(); let parsed_err = send_cred_def_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -207,7 +207,7 @@ pub fn build_and_submit_cred_def_with_fees_twice_and_check_utxo_remain_unspent() let schema = Some(create_schema_json(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle)); let parsed_err = send_cred_def_with_fees(&did_new, rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None, schema).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(parsed_err.error_code, ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); diff --git a/libsovtoken/tests/add_fees_for_nym.rs b/libsovtoken/tests/add_fees_for_nym.rs index a4c1fdb67..bb9723dab 100644 --- a/libsovtoken/tests/add_fees_for_nym.rs +++ b/libsovtoken/tests/add_fees_for_nym.rs @@ -5,14 +5,16 @@ extern crate sovtoken; use std::collections::HashMap; +use indy::future::Future; + +use sovtoken::ErrorCode; + mod utils; use utils::payment::get_utxo; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use indy::future::Future; - #[test] pub fn build_and_submit_nym_with_fees() { let wallet = Wallet::new(); @@ -89,7 +91,7 @@ pub fn build_and_submit_nym_with_fees_insufficient_funds() { let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); let err = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(err.error_code, ErrorCode::PaymentInsufficientFundsError); } #[test] @@ -154,7 +156,7 @@ pub fn build_and_submit_nym_with_fees_utxo_already_spent() { let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req_signed, &inputs, &outputs, None).wait().unwrap(); let nym_resp = indy::ledger::submit_request(pool_handle, &nym_req_with_fees).wait().unwrap(); let err = indy::payments::parse_response_with_fees(&pm, &nym_resp).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -234,7 +236,7 @@ pub fn build_and_submit_nym_with_fees_from_invalid_did_and_check_utxo_remain_uns let (nym_req_with_fees, pm) = indy::payments::add_request_fees(wallet.handle, Some(dids[0]), &nym_req, &inputs, &outputs, None).wait().unwrap(); let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees).wait().unwrap(); let err = indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2); @@ -287,7 +289,7 @@ pub fn build_and_submit_nym_with_fees_from_other_nym_txn() { let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[1], &nym_req_with_fees_2).wait().unwrap(); let err = indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure); let resp = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &nym_req_with_fees_1).wait().unwrap(); indy::payments::parse_response_with_fees(&pm, &resp).wait().unwrap(); diff --git a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs index 73b9bc6b1..691836cce 100644 --- a/libsovtoken/tests/add_fees_for_revoke_reg_def.rs +++ b/libsovtoken/tests/add_fees_for_revoke_reg_def.rs @@ -8,14 +8,13 @@ extern crate indyrs as indy; use std::{thread, time}; use std::collections::HashMap; -use sovtoken::utils::random::rand_string; - -mod utils; +use indy::future::Future; +use sovtoken::ErrorCode; +use sovtoken::utils::random::rand_string; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; - -use indy::future::Future; +mod utils; pub const SCHEMA_VERSION: &'static str = "1.0"; pub const GVT_SCHEMA_ATTRIBUTES: &'static str = r#"["name", "age", "sex", "height"]"#; @@ -197,7 +196,7 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_spent_utxo() { pool_handle, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -236,5 +235,5 @@ pub fn build_and_submit_revoc_reg_def_works_with_fees_and_insufficient_funds() { pool_handle, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentInsufficientFundsError); } diff --git a/libsovtoken/tests/add_fees_for_schema_test.rs b/libsovtoken/tests/add_fees_for_schema_test.rs index b009b3e1c..3aabdd016 100644 --- a/libsovtoken/tests/add_fees_for_schema_test.rs +++ b/libsovtoken/tests/add_fees_for_schema_test.rs @@ -3,14 +3,16 @@ extern crate indyrs as indy; extern crate sovtoken; -mod utils; use std::{thread, time}; use std::collections::HashMap; + +use indy::future::Future; + +use sovtoken::ErrorCode; use sovtoken::utils::random::rand_string; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; - -use indy::future::Future; +mod utils; fn send_schema_with_fees(did: &str, name: &str, @@ -98,7 +100,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_1, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([{ "recipient": addresses[0], @@ -106,7 +108,7 @@ pub fn build_and_submit_schema_with_fees_insufficient_funds() { }]).to_string(); let parsed_err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs_2, None).unwrap_err(); - assert_eq!(parsed_err.error_code, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(parsed_err.error_code, ErrorCode::PaymentExtraFundsError); } #[test] @@ -137,7 +139,7 @@ pub fn build_and_submit_schema_with_fees_double_spend() { send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap(); let err = send_schema_with_fees(dids[0], rand_string(3).as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } @@ -178,7 +180,7 @@ pub fn build_and_submit_schema_with_fees_twice_and_check_utxo_remain_unspent() { let err = send_schema_with_fees(dids[0], name.as_str(), SCHEMA_VERSION, GVT_SCHEMA_ATTRIBUTES, wallet.handle, pool_handle, &inputs, &outputs, None).unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure); let utxo_2 = utils::payment::get_utxo::get_first_utxo_txo_for_payment_address(&wallet, pool_handle, dids[0], &addresses[0]); assert_eq!(utxo, utxo_2) diff --git a/libsovtoken/tests/api_tests.rs b/libsovtoken/tests/api_tests.rs index bc9b0ba19..aa285ee53 100644 --- a/libsovtoken/tests/api_tests.rs +++ b/libsovtoken/tests/api_tests.rs @@ -4,7 +4,7 @@ extern crate sovtoken; use sovtoken::api::sovtoken_init; -use sovtoken::utils::ErrorCode; +use sovtoken::ErrorCode; #[test] diff --git a/libsovtoken/tests/build_add_fees_txn_handler_test.rs b/libsovtoken/tests/build_add_fees_txn_handler_test.rs index 66ca1092c..2cc7fe451 100644 --- a/libsovtoken/tests/build_add_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_add_fees_txn_handler_test.rs @@ -5,6 +5,8 @@ extern crate serde_derive; extern crate sovtoken; extern crate indyrs as indy; +use indy::future::Future; + pub mod utils; use sovtoken::utils::results::ResultHandler; @@ -12,11 +14,9 @@ use sovtoken::utils::test::callbacks; use sovtoken::logic::parsers::common::TXO; use sovtoken::utils::ffi_support::c_pointer_from_string; use sovtoken::utils::ffi_support::c_pointer_from_str; +use sovtoken::{ErrorCode, IndyHandle}; use utils::wallet::Wallet; -use indy::{ErrorCode, IndyHandle}; -use indy::future::Future; - fn call_add_fees(wallet_handle: IndyHandle, inputs: String, outputs: String, extra: Option, request: String) -> Result { let (receiver, command_handle, cb) = callbacks::cb_ec_string(); @@ -184,7 +184,7 @@ fn test_add_fees_to_request_valid_from_libindy_for_not_owned_payment_address() { }]); let err = indy::payments::add_request_fees(wallet_2.handle, Some(dids[0]), &fake_request.to_string(), &inputs.to_string(), &outputs.to_string(), None).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::WalletItemNotFound); + assert_eq!(err.error_code, ErrorCode::WalletItemNotFound); } #[test] @@ -208,5 +208,5 @@ fn build_add_fees_to_request_works_for_invalid_utxo() { let err = indy::payments::add_request_fees(wallet.handle, Some(&did), &fake_request, &inputs, &outputs, None).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure) + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/build_fees_txn_handler_test.rs b/libsovtoken/tests/build_fees_txn_handler_test.rs index 76becc710..e074c8a92 100644 --- a/libsovtoken/tests/build_fees_txn_handler_test.rs +++ b/libsovtoken/tests/build_fees_txn_handler_test.rs @@ -11,7 +11,8 @@ use std::ffi::CString; use std::ptr; use std::sync::mpsc::{Receiver}; use std::time::Duration; -use sovtoken::utils::ErrorCode; + +use sovtoken::ErrorCode; use sovtoken::utils::ffi_support; use sovtoken::utils::test::callbacks; diff --git a/libsovtoken/tests/build_get_utxo_request_handler_test.rs b/libsovtoken/tests/build_get_utxo_request_handler_test.rs index 5eb5ec65c..d0870330f 100644 --- a/libsovtoken/tests/build_get_utxo_request_handler_test.rs +++ b/libsovtoken/tests/build_get_utxo_request_handler_test.rs @@ -3,13 +3,14 @@ extern crate sovtoken; extern crate indyrs as indy; +use indy::future::Future; + mod utils; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; use sovtoken::logic::address::strip_qualifier_from_address; use sovtoken::logic::address::verkey_from_unqualified_address; -use indy::future::Future; #[test] pub fn build_and_submit_get_utxo_request() { diff --git a/libsovtoken/tests/build_mint_txn_handler_test.rs b/libsovtoken/tests/build_mint_txn_handler_test.rs index 4ffcdc10b..326b2a93b 100644 --- a/libsovtoken/tests/build_mint_txn_handler_test.rs +++ b/libsovtoken/tests/build_mint_txn_handler_test.rs @@ -13,7 +13,9 @@ use libc::c_char; use std::ptr; use std::ffi::CString; -use sovtoken::utils::ErrorCode; +use indy::future::Future; + +use sovtoken::ErrorCode; use sovtoken::utils::ffi_support::{str_from_char_ptr, c_pointer_from_str}; use sovtoken::utils::constants::txn_types::MINT_PUBLIC; use sovtoken::utils::constants::txn_fields::OUTPUTS; @@ -28,8 +30,6 @@ use utils::wallet::Wallet; use utils::parse_mint_response::ParseMintResponse; use utils::setup::{Setup, SetupConfig}; -use indy::future::Future; - // ***** HELPER METHODS ***** // ***** HELPER TEST DATA ***** diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index ef423ff14..921b0b520 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -11,9 +11,12 @@ extern crate bs58; use std::ptr; use std::ffi::CString; use std::os::raw::c_char; + +use indy::future::Future; + use sovtoken::logic::address; use sovtoken::logic::parsers::common::TXO; -use sovtoken::utils::ErrorCode; +use sovtoken::ErrorCode; use sovtoken::utils::constants::txn_types::XFER_PUBLIC; use sovtoken::utils::results::ResultHandler; use sovtoken::utils::ffi_support::c_pointer_from_string; @@ -23,7 +26,6 @@ mod utils; use utils::wallet::Wallet; use utils::setup::{SetupConfig, Setup}; -use indy::future::Future; // ***** HELPER METHODS ***** extern "C" fn empty_create_payment_callback(_command_handle_: i32, _err: i32, _payment_req: *const c_char) -> i32 { @@ -195,7 +197,7 @@ fn success_signed_request() { assert_eq!(ErrorCode::from(error_code), ErrorCode::Success); - let request_string = ResultHandler::one(indy::ErrorCode::Success, receiver).unwrap(); + let request_string = ResultHandler::one(ErrorCode::Success, receiver).unwrap(); let request: serde_json::value::Value = serde_json::from_str(&request_string).unwrap(); debug!("Received request {:?}", request); @@ -360,7 +362,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_1).unwrap_err(); - assert_eq!(res.error_code, indy::ErrorCode::PaymentInsufficientFundsError); + assert_eq!(res.error_code, ErrorCode::PaymentInsufficientFundsError); let outputs_2 = json!([ { @@ -374,7 +376,7 @@ pub fn build_and_submit_payment_req_incorrect_funds() { ]).to_string(); let res = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs_2).unwrap_err(); - assert_eq!(res.error_code, indy::ErrorCode::PaymentExtraFundsError); + assert_eq!(res.error_code, ErrorCode::PaymentExtraFundsError); } #[test] @@ -410,7 +412,7 @@ pub fn build_and_submit_payment_req_with_spent_utxo() { "amount": 20 }]).to_string(); let err = get_resp_for_payment_req(pool_handle, wallet.handle, dids[0], &inputs, &outputs).unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, ErrorCode::PaymentSourceDoesNotExistError); //utxo should stay unspent! let utxos = utils::payment::get_utxo::send_get_utxo_request(&wallet, pool_handle, dids[0], &addresses[0]); @@ -435,7 +437,7 @@ pub fn build_payment_with_invalid_utxo() { ]).to_string(); let err = indy::payments::build_payment_req(wallet.handle, Some(&did), &inputs, &outputs, None).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure); } pub fn build_payment_req_for_not_owned_payment_address() { @@ -464,5 +466,5 @@ pub fn build_payment_req_for_not_owned_payment_address() { ]).to_string(); let err = indy::payments::build_payment_req(wallet_2.handle, Some(dids[0]), &inputs, &outputs, None).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::WalletItemNotFound); + assert_eq!(err.error_code, ErrorCode::WalletItemNotFound); } \ No newline at end of file diff --git a/libsovtoken/tests/build_verify_req_test.rs b/libsovtoken/tests/build_verify_req_test.rs index 43bf0d621..1dc321413 100644 --- a/libsovtoken/tests/build_verify_req_test.rs +++ b/libsovtoken/tests/build_verify_req_test.rs @@ -5,13 +5,15 @@ extern crate indyrs as indy; use std::{thread, time}; +use indy::future::Future; + +use sovtoken::ErrorCode; use sovtoken::logic::parsers::common::TXO; mod utils; use utils::wallet::Wallet; use utils::setup::{Setup, SetupConfig}; -use indy::future::Future; fn sleep(msec: u64) { let ms = time::Duration::from_millis(msec); @@ -186,7 +188,7 @@ pub fn build_and_submit_verify_req_for_unexistant_utxo() { let res = indy::ledger::sign_and_submit_request(pool_handle, wallet.handle, dids[0], &get_utxo_req).wait().unwrap(); let err = indy::payments::parse_verify_payment_response(&payment_method, &res).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::PaymentSourceDoesNotExistError); + assert_eq!(err.error_code, ErrorCode::PaymentSourceDoesNotExistError); } #[test] @@ -199,5 +201,5 @@ fn build_verify_req_works_for_invalid_utxo() { let err = indy::payments::build_verify_payment_req(wallet.handle, Some(&did), receipt).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::CommonInvalidStructure) + assert_eq!(err.error_code, ErrorCode::CommonInvalidStructure) } \ No newline at end of file diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index 28b9aaa7b..58fe82452 100644 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -20,14 +20,14 @@ use std::ptr; use std::ffi::CString; use std::time::Duration; +use indy::future::Future; + use sovtoken::logic::config::payment_address_config::PaymentAddressConfig; use sovtoken::logic::address::unqualified_address_from_address; use sovtoken::utils::test::callbacks; -use sovtoken::utils::ErrorCode; +use sovtoken::ErrorCode; mod utils; -use indy::future::Future; - // ***** HELPER TEST DATA ***** const WALLET_ID: i32 = 99; const COMMAND_HANDLE: i32 = 1; @@ -158,5 +158,5 @@ pub fn create_address_two_times_with_the_same_seed() { let _pa1 = indy::payments::create_payment_address(wallet.handle, "sov", &seed).wait().unwrap(); let err = indy::payments::create_payment_address(wallet.handle, "sov", &seed).wait().unwrap_err(); - assert_eq!(err.error_code, indy::ErrorCode::WalletItemAlreadyExists); + assert_eq!(err.error_code, ErrorCode::WalletItemAlreadyExists); } \ No newline at end of file diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index b5209bdc8..023e06996 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -6,6 +6,8 @@ extern crate sovtoken; use indy::future::Future; +use sovtoken::ErrorCode; + static PARSE_PAYMENT_RESPONSE_JSON: &'static str = r#"{ "op": "REPLY", "protocolVersion": 2, @@ -90,5 +92,5 @@ pub fn parse_payment_response_works() { pub fn parse_payment_response_works_for_invalid() { sovtoken::api::sovtoken_init(); let resp = indy::payments::parse_payment_response("sov", "123").wait().unwrap_err(); - assert_eq!(resp.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(resp.error_code, ErrorCode::CommonInvalidStructure); } \ No newline at end of file diff --git a/libsovtoken/tests/payment_chaos_tests.rs b/libsovtoken/tests/payment_chaos_tests.rs index 4f29474f5..b3ebf8c4a 100644 --- a/libsovtoken/tests/payment_chaos_tests.rs +++ b/libsovtoken/tests/payment_chaos_tests.rs @@ -5,12 +5,14 @@ extern crate indyrs as indy; // lib-sdk project #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_json; +use indy::future::Future; + +use sovtoken::ErrorCode; + pub mod utils; use utils::setup::{Setup, SetupConfig}; use utils::wallet::Wallet; -use indy::future::Future; - // ------------------------------------------------------------------------------------------------ #[test] pub fn pay_without_outputs_fails() { @@ -39,7 +41,7 @@ pub fn pay_without_outputs_fails() { ]).to_string(); let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); - assert_eq!(ec.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(ec.error_code, ErrorCode::CommonInvalidStructure); } @@ -72,7 +74,7 @@ pub fn pay_without_inputs_fails() { ]).to_string(); let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); - assert_eq!(ec.error_code, indy::ErrorCode::CommonInvalidStructure); + assert_eq!(ec.error_code, ErrorCode::CommonInvalidStructure); } // ------------------------------------------------------------------------------------------------ @@ -105,7 +107,7 @@ pub fn pay_from_non_existent_payment_source_fails() { ]).to_string(); let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); - assert_eq!(ec.error_code, indy::ErrorCode::WalletItemNotFound); + assert_eq!(ec.error_code, ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ @@ -140,7 +142,7 @@ pub fn pay_from_existent_and_non_existent_payment_source_fails() { ]).to_string(); let ec = indy::payments::build_payment_req(wallet.handle, Some(dids[0]), &pay_input_json, &pay_output_json, None).wait().unwrap_err(); - assert_eq!(ec.error_code, indy::ErrorCode::WalletItemNotFound); + assert_eq!(ec.error_code, ErrorCode::WalletItemNotFound); } // ------------------------------------------------------------------------------------------------ diff --git a/libsovtoken/tests/utils/did.rs b/libsovtoken/tests/utils/did.rs index 3fe0abc50..3e4912d8c 100644 --- a/libsovtoken/tests/utils/did.rs +++ b/libsovtoken/tests/utils/did.rs @@ -6,8 +6,8 @@ use indy::future::Future; type DidAndVerKey = (String, String); -//impl From for ErrorCode { -// fn from(item: indy::ErrorCode) -> Self { +//impl From for ErrorCode { +// fn from(item: ErrorCode) -> Self { // item as ErrorCode // } //} diff --git a/libsovtoken/tests/utils/mint.rs b/libsovtoken/tests/utils/mint.rs index 7f6d8bf31..2cf69171a 100644 --- a/libsovtoken/tests/utils/mint.rs +++ b/libsovtoken/tests/utils/mint.rs @@ -5,7 +5,7 @@ use std::collections::HashMap; use std::str::FromStr; -use sovtoken::utils::ErrorCode; +use sovtoken::ErrorCode; use sovtoken::utils::json_conversion::JsonDeserialize; use sovtoken::logic::request::Request; use sovtoken::logic::config::output_mint_config::MintRequest; @@ -13,7 +13,7 @@ use utils; use indy::future::Future; -pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { +pub fn mint_tokens(cfg: HashMap, pool_handle: i32, wallet_handle: i32, trustee_dids: &Vec<&str>) -> Result { let vec_outputs:Vec> = cfg.iter().map(|(pa, am)| { let mut map = HashMap::new(); map.insert("recipient", serde_json::Value::String(pa.clone())); From 00fc223945fd12e86c867a4ccb434d7bb925b3a0 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Fri, 22 Mar 2019 10:41:42 +0300 Subject: [PATCH 77/91] IS-1175: Removed redundant logger dependencies Signed-off-by: artem.ivanov --- libsovtoken/Cargo.toml | 5 ----- libsovtoken/src/lib.rs | 8 -------- 2 files changed, 13 deletions(-) diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index 7bdc1a2b8..c8329deb0 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -22,12 +22,10 @@ crate-type = ["staticlib", "rlib", "cdylib"] [dependencies] bs58 = {version="0.2.2", features = ["check"]} base64 = "0.6.0" -env_logger = "0.5.10" hex = "0.2.0" lazy_static = "0.2" libc = "0.2.41" log = "0.4.1" -log-panics = "2.0.0" openssl = "0.10" rand = "0.4.2" indy-sys = "1.8.1" @@ -53,9 +51,6 @@ panic = 'unwind' incremental = false overflow-checks = false -[target.'cfg(target_os = "android")'.dependencies] -android_logger = "0.5" - [features] default = ["integration"] integration = [] diff --git a/libsovtoken/src/lib.rs b/libsovtoken/src/lib.rs index de703d918..91f2e9c67 100644 --- a/libsovtoken/src/lib.rs +++ b/libsovtoken/src/lib.rs @@ -9,10 +9,8 @@ // ------------------------------------------ extern crate base64; extern crate bs58; -extern crate env_logger; extern crate hex; extern crate libc; -extern crate log_panics; extern crate openssl; extern crate rand; extern crate serde; @@ -30,12 +28,6 @@ extern crate sha2; #[macro_use] extern crate lazy_static; -// ------------------------------------------ -// android crates -// ------------------------------------------ -#[cfg(target_os = "android")] -extern crate android_logger; - // ------------------------------------------ // evernym/sovrin crates // ------------------------------------------ From f128e58861ca685c9bdd3260286bba2997ff240a Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Fri, 22 Mar 2019 14:16:47 +0300 Subject: [PATCH 78/91] Fix CD Signed-off-by: Nikita Khateev --- devops/aws-codebuild/Jenkinsfile.cd | 208 ++++++++++++++++------------ 1 file changed, 122 insertions(+), 86 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index 8484a7282..f4260694a 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -1,7 +1,7 @@ #!groovy def sovLibrary = library(identifier: 'sovrin-aws-codebuild@master', retriever: modernSCM( - github(credentialsId: 'sovbot-github', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') + github(credentialsId: 'sovbot-github', repoOwner: 'sovrin-foundation', repository: 'aws-codebuild-pipeline-plugin') )).com.sovrin.pipeline logger = sovLibrary.Logger.new(this) @@ -10,10 +10,21 @@ logger.setGlobalLevel('TRACE') notifier = sovLibrary.Notifier.new(this) utils = sovLibrary.Utils.new(this) +String srcVersion + +gitHubUserCredId = env.GITHUB_BOT_USER ?: 'sovbot-github' +sovrinPackagingRepo = env.SOVRIN_PACKAGING_REPO ?: 'https://github.com/sovrin-foundation/sovrin-packaging' +sovrinPackagingBranch = env.SOVRIN_PACKAGING_BRANCH ?: 'master' + +def downloadPackagingUtils() { + git branch: sovrinPackagingBranch, credentialsId: gitHubUserCredId, url: sovrinPackagingRepo + sh "pip3 install -U plumbum deb-pkg-tools" +} + // TODO set proper labels def nodeLabels = [ - codeBuild: env.LIBSOVTOKEN_CODEBUILD_NODE_LABEL ?: 'codebuild', - macos: env.LIBSOVTOKEN_MACOS_NODE_LABEL ?: 'macos', + codeBuild: env.LIBSOVTOKEN_CODEBUILD_NODE_LABEL ?: 'codebuild', + macos: env.LIBSOVTOKEN_MACOS_NODE_LABEL ?: 'macos', ] def codeBuildPipelines = { @@ -24,14 +35,12 @@ def codeBuildPipelines = { env.SOVRIN_REPO_HOST = '192.168.101.193' List _envBuildSrc = [ - 'devops', - 'libsovtoken/Cargo.toml', - 'libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt', - 'libsovtoken/build_scripts/android/android_settings.txt' + 'devops', + 'libsovtoken/Cargo.toml', + 'libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt', + 'libsovtoken/build_scripts/android/android_settings.txt' ] - def srcVersion - stage('Checkout sources from SCM') { checkout scm } @@ -41,9 +50,11 @@ def codeBuildPipelines = { def buildCtx = sovLibrary.AwsCodeBuildHelper.BuildCtx.new('libsovtoken') def awsCBHelper = sovLibrary.AwsCodeBuildHelper.new(this, buildCtx) - stage('Resolve current source version') { - srcVersion = utils.srcVersion(projectType: 'rust') - logger.info("Current source version: $srcVersion") + if (!srcVersion) { + stage('Resolve current source version') { + srcVersion = utils.srcVersion(projectType: 'rust') + logger.info("Current source version: $srcVersion") + } } stage('Upload source to S3') { @@ -69,25 +80,25 @@ def codeBuildPipelines = { // build spec for env image envBuildSrc = _envBuildSrc // TODO make more accurate envBuildCmds = [ - 'export PROJECT_DIR=$PWD', - 'make -C devops image_lst_android_build' + 'export PROJECT_DIR=$PWD', + 'make -C devops image_lst_android_build' ] envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ - [name: 'OSNAME', value: osname], - [name: 'LST_ANDROID_BUILD_DOCKER_TAG', value: buildImageTag], + [name: 'OSNAME', value: osname], + [name: 'LST_ANDROID_BUILD_DOCKER_TAG', value: buildImageTag], ] // env and build spec imageTag = buildImageTag buildspec = 'devops/aws-codebuild/buildspec.cd.yml' envv = [ - [name: 'OSNAME', value: osname], - [name: 'ANDROID_ARCHS', value: "${targetArchs.join(' ')}"], - [name: 'MAKE_GOALS', value: "${goals.join(' ')}"], - [name: 'PACKAGE_NAME', value: packageName], - [name: 'GIT_SHA1_SHORT', value: git.sha1(shortN: true)], - [name: 'ARTIFACTS', value: "devops/_build/android/${packageName}*all.zip"], + [name: 'OSNAME', value: osname], + [name: 'ANDROID_ARCHS', value: "${targetArchs.join(' ')}"], + [name: 'MAKE_GOALS', value: "${goals.join(' ')}"], + [name: 'PACKAGE_NAME', value: packageName], + [name: 'GIT_SHA1_SHORT', value: git.sha1(shortN: true)], + [name: 'ARTIFACTS', value: "devops/_build/android/${packageName}*all.zip"], ] onArtifacts = { @@ -104,22 +115,21 @@ def codeBuildPipelines = { stage('Upload android archives to Sovrin repo') { String archName + def scriptDir = pwd() + dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { archName = utils.shStdout("ls $packageName*$srcVersion*all.zip") logger.info("Uploading package '$archName' to sovrin repo") - sovrinRepo.uploadFile { - component = 'rc' - packagePath = archName - packageName = 'libsovtoken' - systemType = 'android' + withCredentials([file(credentialsId: 'SovrinRepoSSHKey', variable: 'sovrin_key')]) { + sh "$scriptDir/devops/android_upload.sh $srcVersion $sovrin_key $env.BRANCH_NAME $BUILD_NUMBER libsovtoken $archName" } } notifier.email { subject = '$PROJECT_NAME - Build # $BUILD_NUMBER: ' + "new android package '$archName' was published" body = ("New android package '$archName' was built and published" + - '\n\nCheck console output at $BUILD_URL to view the details.') + '\n\nCheck console output at $BUILD_URL to view the details.') } } } @@ -133,26 +143,28 @@ def codeBuildPipelines = { def debPVersion def cratePVersion - stage('Resolve last debian revision') { - lastRevision = sovrinRepo.getLastRevision { - delegate.packageName = packageName - packageSrcVersion = srcVersion - repoDistr = 'xenial-rc' - } - - if (lastRevision) { - logger.info("Found last revision number: $lastRevision") - } else { - logger.info("No previous revision was found") - } - } +// stage('Resolve last debian revision') { +// lastRevision = sovrinRepo.getLastRevision { +// delegate.packageName = packageName +// packageSrcVersion = srcVersion +// repoDistr = 'xenial-rc' +// } +// +// if (lastRevision) { +// logger.info("Found last revision number: $lastRevision") +// } else { +// logger.info("No previous revision was found") +// } +// } stage('Set release parameters') { logger.info("Finding Release version") - def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" +// def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "${lastRevision ? lastRevision[0] + 1: 1}.$BUILD_NUMBER" + def releaseVersion = env.BRANCH_NAME == 'stable' ? '' : "$BUILD_NUMBER" logger.info("Release version for sovrin repo: $releaseVersion") - debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') +// debPVersion = utils.packageVersion('deb', srcVersion, releaseVersion, env.BRANCH_NAME == 'master') + debPVersion = env.BRANCH_NAME == 'stable' ? "$srcVersion": "$srcVersion~$releaseVersion" logger.info("Package version for sovrin repo: $debPVersion") // TODO crate and rpm @@ -172,25 +184,25 @@ def codeBuildPipelines = { // build spec for env image envBuildSrc = _envBuildSrc // TODO make more accurate envBuildCmds = [ - 'export PROJECT_DIR=$PWD', - 'make -C devops image_lst_base' + 'export PROJECT_DIR=$PWD', + 'make -C devops image_lst_base' ] envBuildLocalName = "sovrin/libsovtoken:$buildImageTag" envBuildEnvv = [ - [name: 'OSNAME', value: osname], - [name: 'LST_BASE_DOCKER_TAG', value: buildImageTag], + [name: 'OSNAME', value: osname], + [name: 'LST_BASE_DOCKER_TAG', value: buildImageTag], ] // env and build spec imageTag = buildImageTag buildspec = 'devops/aws-codebuild/buildspec.cd.yml' envv = [ - [name: 'OSNAME', value: osname], - [name: 'MAKE_GOALS', value: "${goals.join(' ')}"], - [name: 'ARTIFACTS', value: "libsovtoken/target/release/${packageName}*.*"], - [name: 'PACKAGE_NAME', value: packageName], - [name: 'FPM_P_VERSION', value: debPVersion], - // [name: 'CRATE_P_VERSION', value: cratePVersion], + [name: 'OSNAME', value: osname], + [name: 'MAKE_GOALS', value: "${goals.join(' ')}"], + [name: 'ARTIFACTS', value: "libsovtoken/target/release/${packageName}*.*"], + [name: 'PACKAGE_NAME', value: packageName], + [name: 'FPM_P_VERSION', value: debPVersion], + // [name: 'CRATE_P_VERSION', value: cratePVersion], ] onArtifacts = { @@ -208,21 +220,23 @@ def codeBuildPipelines = { String debName dir("${awsCBHelper.buildCtx.projects[prTag].artifactsDir}") { + dir("sovrin-packaging") { + downloadPackagingUtils() + } + sh "touch $packageName-$debPVersion*.deb" debName = utils.shStdout("ls $packageName*$debPVersion*.deb") logger.info("Uploading debian package '$debName' to sovrin repo") - sovrinRepo.upload { - repoDistr = 'xenial' - component = 'rc' - packagePath = debName + sh "mkdir debs && mv $debName ./debs/" + withCredentials([file(credentialsId: 'SovrinRepoSSHKey', variable: 'sovrin_key')]) { + sh "./sovrin-packaging/upload_debs.py ./debs $env.SOVRIN_SDK_REPO_NAME $env.BRANCH_NAME --host $env.SOVRIN_REPO_HOST --ssh-key $sovrin_key" } - } notifier.email { subject = '$PROJECT_NAME - Build # $BUILD_NUMBER: ' + "new deb '$debName' was published" body = ("New debian package '$debName' was built and published" + - '\n\nCheck console output at $BUILD_URL to view the details.') + '\n\nCheck console output at $BUILD_URL to view the details.') } } @@ -292,12 +306,18 @@ def macOSPipeline = { def sovrinRepo = sovLibrary.SovrinRepo.new(this) def utils = sovLibrary.Utils.new(this) + if (!srcVersion) { + stage('Resolve current source version') { + srcVersion = utils.srcVersion(projectType: 'rust') + logger.info("Current source version: $srcVersion") + } + } withEnv([ - "PATH+RUST=${RUST_PATH}", - "PATH+BREW=/usr/local/bin", - "PATH+CURL=/usr/local/opt/curl/bin" - ]) { + "PATH+RUST=${RUST_PATH}", + "PATH+BREW=/usr/local/bin", + "PATH+CURL=/usr/local/opt/curl/bin" + ]) { dir('libsovtoken/build_scripts/ios/mac/') { @@ -311,44 +331,60 @@ def macOSPipeline = { } dir('libsovtoken') { - stage('Upload libsovtoken universal package to Sovrin repo') { - String pkgName - def repoUrl - pkgName = utils.shStdout("ls ${packageName}*.zip") - logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") - - - sovrinRepo.uploadBlob { - component = 'rc' - packagePath = pkgName - packageName = 'libsovtoken' - systemType = 'ios' - } - } + pkgName = utils.shStdout("ls ${packageName}*.zip") + stash includes: pkgName, name: "iosArtifact" } } } } +def macosUpload = { + String packageName = "libsovtoken" + stage('Upload libsovtoken universal package to Sovrin repo') { + unstash name: "iosArtifact" + String pkgName = utils.shStdout("ls ${packageName}*.zip") + logger.info("Uploading libsovtoken package '$pkgName' to sovrin repo") + + withCredentials([file(credentialsId: 'SovrinRepoSSHKey', variable: 'sovrin_key')]) { + version = "$srcVersion~$env.BUILD_NUMBER" + target = "/var/repository/repos/ios/$packageName/$env.BRANCH_NAME/$packageName-core" + + sh "ssh -v -oStrictHostKeyChecking=no -i '$sovrin_key' repo@$SOVRIN_REPO_HOST mkdir -p $target/$version" + sh "scp -r -oStrictHostKeyChecking=no -i $sovrin_key $pkgName repo@$SOVRIN_REPO_HOST:$target/$version/" + } + } +} + pipelineWrapper({ //put code build containers inside a vpc under our dev account env.USE_VPC_CONFIG = true Map builds = [ - codeBuild: [ - build: codeBuildPipelines, - nodeLabel: "$nodeLabels.codeBuild" - ], - macos: [ - build: macOSPipeline, - nodeLabel: "$nodeLabels.macos" - ] + codeBuild: [ + build: codeBuildPipelines, + nodeLabel: "$nodeLabels.codeBuild" + ], + macos: [ + build: macOSPipeline, + nodeLabel: "$nodeLabels.macos" + ] ] builds.failFast = false stage("Build") { utils.parallel builds } + + Map publish = [ + macosPublish: [ + build: macosUpload, + nodeLabel: "$nodeLabels.codeBuild" + ] + ] + + stage ('Publish') { + utils.parallel publish + } }, { err -> stage("Pipeline finalizing") { if (err) { @@ -359,4 +395,4 @@ pipelineWrapper({ notifier.email() } } -}) +}) \ No newline at end of file From 7a888cf676ec4bb8ac66ed18af148fe62dc43b85 Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Fri, 22 Mar 2019 14:31:54 +0300 Subject: [PATCH 79/91] Remove debug lines Signed-off-by: Nikita Khateev --- devops/aws-codebuild/Jenkinsfile.cd | 1 - 1 file changed, 1 deletion(-) diff --git a/devops/aws-codebuild/Jenkinsfile.cd b/devops/aws-codebuild/Jenkinsfile.cd index f4260694a..f00bcff61 100644 --- a/devops/aws-codebuild/Jenkinsfile.cd +++ b/devops/aws-codebuild/Jenkinsfile.cd @@ -223,7 +223,6 @@ def codeBuildPipelines = { dir("sovrin-packaging") { downloadPackagingUtils() } - sh "touch $packageName-$debPVersion*.deb" debName = utils.shStdout("ls $packageName*$debPVersion*.deb") logger.info("Uploading debian package '$debName' to sovrin repo") From 3e738200b4531f2a3042992b0bd7792c9bcc416c Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Fri, 22 Mar 2019 17:12:30 +0300 Subject: [PATCH 80/91] IS-1175: Fixed compilation errors Signed-off-by: artem.ivanov --- libsovtoken/tests/build_payment_req_handler_test.rs | 1 - libsovtoken/tests/create_payment_tests.rs | 1 - libsovtoken/tests/parse_payment_response_test.rs | 1 - libsovtoken/tests/utils/wallet.rs | 1 - 4 files changed, 4 deletions(-) diff --git a/libsovtoken/tests/build_payment_req_handler_test.rs b/libsovtoken/tests/build_payment_req_handler_test.rs index 921b0b520..434cbd6f9 100644 --- a/libsovtoken/tests/build_payment_req_handler_test.rs +++ b/libsovtoken/tests/build_payment_req_handler_test.rs @@ -1,4 +1,3 @@ -extern crate env_logger; extern crate libc; extern crate sovtoken; extern crate indyrs as indy; // lib-sdk project diff --git a/libsovtoken/tests/create_payment_tests.rs b/libsovtoken/tests/create_payment_tests.rs index 58fe82452..8eae8acb2 100644 --- a/libsovtoken/tests/create_payment_tests.rs +++ b/libsovtoken/tests/create_payment_tests.rs @@ -3,7 +3,6 @@ extern crate bs58; -extern crate env_logger; extern crate libc; extern crate rand; diff --git a/libsovtoken/tests/parse_payment_response_test.rs b/libsovtoken/tests/parse_payment_response_test.rs index 023e06996..de1bc9569 100644 --- a/libsovtoken/tests/parse_payment_response_test.rs +++ b/libsovtoken/tests/parse_payment_response_test.rs @@ -1,4 +1,3 @@ -extern crate env_logger; extern crate indyrs as indy; extern crate libc; extern crate serde_json; diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs index 1cc3779cd..075001b79 100644 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -2,7 +2,6 @@ * A set of test helpers dealing with the wallet. */ -extern crate env_logger; extern crate indyrs as indy; extern crate sovtoken; From c2fe4556fbf441fd1d130a98326fb2f865839123 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Fri, 22 Mar 2019 17:33:45 +0300 Subject: [PATCH 81/91] IS-1167: Updated libindy version on 1.8.1 Signed-off-by: artem.ivanov --- devops/Makefile | 2 +- devops/docker/base/xenial/Dockerfile | 4 ++-- devops/docker/ci/xenial/Dockerfile | 4 ++-- .../android/libsovtoken/libsovtoken.dependencies.txt | 2 +- libsovtoken/build_scripts/ios/mac/shared.functions.sh | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/devops/Makefile b/devops/Makefile index 6882a4994..62eb787a1 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -45,7 +45,7 @@ FPM_P_VENDOR := Sovrin FPM_P_DESCRIPTION := libsovtoken writen in Rust FPM_P_NAME = $(PACKAGE_NAME) FPM_P_VERSION ?= $(SRC_VERSION) -FPM_P_DEPENDS = libindy(>=1.6.7) +FPM_P_DEPENDS = libindy(>=1.8.1) FPM_P_OUTPUT_DIR = $(LIB_TARGET_DIR) FPM_ARGS = $(LIB_DYNAMIC)=/usr/lib/ diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 56a3e5287..4210986d8 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -21,7 +21,7 @@ RUN cd /tmp \ # need for libsodium to be reachable via pkg-config (sodiumoxide uses it) ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig:$PKG_CONFIG_PATH # TODO ??? is it really needed -ENV LIBINDY_VERSION=1.6.7 +ENV LIBINDY_VERSION=1.8.1 RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88 \ && echo "deb https://repo.sovrin.org/sdk/deb xenial stable" >> /etc/apt/sources.list \ && apt-get update && apt-get install -y --no-install-recommends \ @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.17.0 +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.18.0 diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index 79f42ef6e..ffe740472 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM sovrin/libsovtoken:base-xenial-0.17.0 +FROM sovrin/libsovtoken:base-xenial-0.18.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.53.0 +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.54.0 diff --git a/libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt b/libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt index e35802600..7d41c3de1 100644 --- a/libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt +++ b/libsovtoken/build_scripts/android/libsovtoken/libsovtoken.dependencies.txt @@ -1 +1 @@ -libindy=1.6.7=stable +libindy=1.8.1=stable diff --git a/libsovtoken/build_scripts/ios/mac/shared.functions.sh b/libsovtoken/build_scripts/ios/mac/shared.functions.sh index ccf266590..7f9e07df9 100644 --- a/libsovtoken/build_scripts/ios/mac/shared.functions.sh +++ b/libsovtoken/build_scripts/ios/mac/shared.functions.sh @@ -1,6 +1,6 @@ #!/bin/sh -export LIBINDY_IOS_BUILD_URL="https://repo.sovrin.org/ios/libindy/stable/libindy-core/1.6.7/libindy.tar.gz" +export LIBINDY_IOS_BUILD_URL="https://repo.sovrin.org/ios/libindy/stable/libindy-core/1.8.1/libindy.tar.gz" export LIBINDY_FILE=$(basename ${LIBINDY_IOS_BUILD_URL}) export LIBINDY_VERSION=$(basename $(dirname ${LIBINDY_IOS_BUILD_URL})) export BUILD_CACHE=~/.build_libvxc/ioscache From 1399ad51e99344a9abb858b80551c37349a33bd0 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Mon, 25 Mar 2019 11:20:55 +0300 Subject: [PATCH 82/91] ST-496: LibSovtoken 0.9.7 release preparation Signed-off-by: artem.ivanov --- CHANGELOG.md | 5 +++++ devops/Makefile | 2 +- devops/docker/base/xenial/Dockerfile | 4 ++-- devops/docker/ci/xenial/Dockerfile | 4 ++-- libsovtoken/Cargo.toml | 6 +++--- .../android/libsovtoken/libsovtoken.dependencies.txt | 2 +- libsovtoken/build_scripts/ios/mac/shared.functions.sh | 2 +- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c92e7656..c36fe7a6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ # Changelog + +## 0.9.7 +* Updated logging initialization to use libindy pattern. +* bugfixes + ## 0.9.3 * Changed CI/CD to new stable branch. * CD added to the new stable branch with new stable release process diff --git a/devops/Makefile b/devops/Makefile index 62eb787a1..83b1e79a7 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -45,7 +45,7 @@ FPM_P_VENDOR := Sovrin FPM_P_DESCRIPTION := libsovtoken writen in Rust FPM_P_NAME = $(PACKAGE_NAME) FPM_P_VERSION ?= $(SRC_VERSION) -FPM_P_DEPENDS = libindy(>=1.8.1) +FPM_P_DEPENDS = libindy(>=1.8.2) FPM_P_OUTPUT_DIR = $(LIB_TARGET_DIR) FPM_ARGS = $(LIB_DYNAMIC)=/usr/lib/ diff --git a/devops/docker/base/xenial/Dockerfile b/devops/docker/base/xenial/Dockerfile index 4210986d8..a7d72a88f 100644 --- a/devops/docker/base/xenial/Dockerfile +++ b/devops/docker/base/xenial/Dockerfile @@ -21,7 +21,7 @@ RUN cd /tmp \ # need for libsodium to be reachable via pkg-config (sodiumoxide uses it) ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig:$PKG_CONFIG_PATH # TODO ??? is it really needed -ENV LIBINDY_VERSION=1.8.1 +ENV LIBINDY_VERSION=1.8.2 RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88 \ && echo "deb https://repo.sovrin.org/sdk/deb xenial stable" >> /etc/apt/sources.list \ && apt-get update && apt-get install -y --no-install-recommends \ @@ -47,4 +47,4 @@ RUN cd /tmp/libsovtoken \ # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.18.0 +ENV LIBSOVTOKEN_BASE_ENV_VERSION=0.19.0 diff --git a/devops/docker/ci/xenial/Dockerfile b/devops/docker/ci/xenial/Dockerfile index ffe740472..0bebb4f64 100644 --- a/devops/docker/ci/xenial/Dockerfile +++ b/devops/docker/ci/xenial/Dockerfile @@ -1,4 +1,4 @@ -FROM sovrin/libsovtoken:base-xenial-0.18.0 +FROM sovrin/libsovtoken:base-xenial-0.19.0 # TODO LABEL maintainer="Name " ARG LIBINDY_CRYPTO_VERSION @@ -69,4 +69,4 @@ COPY libsovtoken-ci-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/libsovtoken-ci-entrypoint.sh ENTRYPOINT ["libsovtoken-ci-entrypoint.sh"] -ENV LIBSOVTOKEN_CI_ENV_VERSION=0.54.0 +ENV LIBSOVTOKEN_CI_ENV_VERSION=0.55.0 diff --git a/libsovtoken/Cargo.toml b/libsovtoken/Cargo.toml index c8329deb0..0b0b1b104 100644 --- a/libsovtoken/Cargo.toml +++ b/libsovtoken/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "libsovtoken" -version = "0.9.6" +version = "0.9.7" authors = [ "Matt Raffel Date: Mon, 25 Mar 2019 12:49:18 +0300 Subject: [PATCH 83/91] ST-515: Test Libsovtoken against master plugins and node Signed-off-by: artem.ivanov --- devops/indy-pool/Dockerfile | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/devops/indy-pool/Dockerfile b/devops/indy-pool/Dockerfile index 8ab4194e8..f7a3d20ac 100644 --- a/devops/indy-pool/Dockerfile +++ b/devops/indy-pool/Dockerfile @@ -19,16 +19,17 @@ FROM camparra/ubuntu16.04-rocksdb ARG uid=1000 -ARG indy_stream=stable +ARG indy_stream=master +ARG token_stream=sovrin_conversion -ARG indy_plenum_ver=1.6.53 -ARG indy_node_ver=1.6.78 -ARG indy_anoncreds_ver=1.0.11 +ARG indy_plenum_ver=1.6.735 +ARG indy_node_ver=1.6.874 +ARG indy_anoncreds_ver=1.0.32 ARG python3_indy_crypto_ver=0.4.5 ARG indy_crypto_ver=0.4.5 -ARG token_ver=0.9.5 -ARG fees_ver=0.9.5 +ARG token_ver=0.9.6~19 +ARG fees_ver=0.9.6~19 # Install environment RUN apt-get update -y && apt-get install -y \ @@ -53,7 +54,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ indy-node=${indy_node_ver} \ indy-anoncreds=${indy_anoncreds_ver} \ python3-indy-crypto=${python3_indy_crypto_ver} \ - libindy-crypto=${indy_crypto_ver} \ + libindy-crypto=${indy_crypto_ver} + +# Add Sovrin artifact repository for tokens +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88 +RUN echo "deb https://repo.sovrin.org/deb xenial $token_stream" >> /etc/apt/sources.list + +RUN apt-get update && apt-get install -y --no-install-recommends \ sovtoken=${token_ver} \ sovtokenfees=${fees_ver} From 812f57643b47de93be902470920937690b96b318 Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Mon, 25 Mar 2019 15:02:52 +0300 Subject: [PATCH 84/91] fix nodes for tests Signed-off-by: Nikita Khateev --- devops/aws-codebuild/Jenkinsfile.ci | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/devops/aws-codebuild/Jenkinsfile.ci b/devops/aws-codebuild/Jenkinsfile.ci index 88db5d59b..e7818dae0 100644 --- a/devops/aws-codebuild/Jenkinsfile.ci +++ b/devops/aws-codebuild/Jenkinsfile.ci @@ -8,8 +8,13 @@ logger = sovLibrary.Logger.new(this) notifier = sovLibrary.Notifier.new(this) logger.setGlobalLevel('TRACE') +def nodeLabels = [ + codeBuild: env.LIBSOVTOKEN_CODEBUILD_NODE_LABEL ?: 'codebuild', + macos: env.LIBSOVTOKEN_MACOS_NODE_LABEL ?: 'macos', +] + pipelineWrapper({ - nodeWrapper { + nodeWrapper(nodeLabels.codeBuild) { List _envBuildSrc = [ 'devops', 'libsovtoken/Cargo.toml', @@ -40,7 +45,9 @@ pipelineWrapper({ } Map builds = osnames.collectEntries { osname -> - [(osname): { + [(osname): [ + "nodeLabel": nodeLabels.codeBuild, + "build": { def buildImageTag def prTag = "ci-$osname" @@ -115,7 +122,7 @@ pipelineWrapper({ } } } - }] + }]] } stage("Build and test") { From f226f887e4e87ff8bf7351a87c3031e1fa1d17f1 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Tue, 26 Mar 2019 08:25:24 +0300 Subject: [PATCH 85/91] ST-503: Corrected misspelled and updated repo links Signed-off-by: artem.ivanov --- devops/Makefile | 2 +- libsovtoken/build_scripts/ios/mac/README.md | 2 +- libsovtoken/src/api/mod.rs | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/devops/Makefile b/devops/Makefile index 6882a4994..0cac712f9 100644 --- a/devops/Makefile +++ b/devops/Makefile @@ -42,7 +42,7 @@ FPM_P_MAINTAINER := Sovrin FPM_P_URL := https://github.com/sovrin-foundation/libsovtoken FPM_P_LICENSE := Apache License 2.0 FPM_P_VENDOR := Sovrin -FPM_P_DESCRIPTION := libsovtoken writen in Rust +FPM_P_DESCRIPTION := libsovtoken written in Rust FPM_P_NAME = $(PACKAGE_NAME) FPM_P_VERSION ?= $(SRC_VERSION) FPM_P_DEPENDS = libindy(>=1.6.7) diff --git a/libsovtoken/build_scripts/ios/mac/README.md b/libsovtoken/build_scripts/ios/mac/README.md index 248cb8bf4..42a95ef3e 100644 --- a/libsovtoken/build_scripts/ios/mac/README.md +++ b/libsovtoken/build_scripts/ios/mac/README.md @@ -26,7 +26,7 @@ sudo xcodebuild -license ## Building --------------------------------------------------------------------------- -1. Checkout the libsovtoken project using https://github.com/evernym/libsovtoken.git or git@github.com:evernym/libsovtoken.git +1. Checkout the libsovtoken project using https://github.com/sovrin-foundation/libsovtoken.git or git@github.com:sovrin-foundation/libsovtoken.git 1. Startup a terminal and cd into libsovtoken/libsovtoken/build_scripts/ios/mac 1. Run the script `./mac.01.env.setup.sh` (make sure the brew install commands are successful) * If it succeeded, run the command `rustc --print target-list|grep -i ios`. It should output: diff --git a/libsovtoken/src/api/mod.rs b/libsovtoken/src/api/mod.rs index 27ab65452..5587e2045 100644 --- a/libsovtoken/src/api/mod.rs +++ b/libsovtoken/src/api/mod.rs @@ -227,10 +227,10 @@ pub extern "C" fn add_request_fees_handler( /// from tokens-interface.md/ParseResponseWithFeesCB /// # Params /// command_handle: standard command handle -/// req_json: json. \For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// req_json: json. \For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Returns -/// utxo_json: json. For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// utxo_json: json. For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Errors /// CommonInvalidStructure when any of the inputs are invalid @@ -378,10 +378,10 @@ pub extern "C" fn build_payment_req_handler( /// from tokens-interface.md/ParsePaymentResponseCB /// # Params /// command_handle: standard command handle -/// resp_json: json. \For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// resp_json: json. \For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Returns -/// utxo_json: json. For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// utxo_json: json. For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Errors /// CommonInvalidStructure when any of the inputs are invalid @@ -489,10 +489,10 @@ pub extern "C" fn build_get_utxo_request_handler(command_handle: i32, /// from tokens-interface.md/ParseGetUTXOResponseCB /// # Params /// command_handle: standard command handle -/// resp_json: json. \For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// resp_json: json. \For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Returns -/// utxo_json: json. For format see https://github.com/evernym/libsovtoken/blob/master/doc/data_structures.md +/// utxo_json: json. For format see https://github.com/sovrin-foundation/libsovtoken/blob/master/doc/data_structures.md /// /// # Errors /// CommonInvalidStructure when any of the inputs are invalid From 392c04652ce15a26352e2dc4bf8f03ca6429571c Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Tue, 26 Mar 2019 11:58:00 +0300 Subject: [PATCH 86/91] IS-1175: Fixed return types Signed-off-by: artem.ivanov --- libsovtoken/tests/utils/wallet.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libsovtoken/tests/utils/wallet.rs b/libsovtoken/tests/utils/wallet.rs index 075001b79..c45dbe3d6 100644 --- a/libsovtoken/tests/utils/wallet.rs +++ b/libsovtoken/tests/utils/wallet.rs @@ -10,7 +10,7 @@ use self::sovtoken::utils::random::rand_string; use indy::future::Future; -static USEFUL_CREDENTIALS : &'static str = r#" +static USEFUL_CREDENTIALS: &'static str = r#" { "key": "12345678901234567890123456789012" } @@ -43,8 +43,8 @@ pub struct Wallet { impl Wallet { /* constructors */ pub fn new() -> Wallet { - let wallet_name : String = rand_string(20); - let mut wallet = Wallet { name : wallet_name , handle: -1 }; + let wallet_name: String = rand_string(20); + let mut wallet = Wallet { name: wallet_name, handle: -1 }; wallet.create(); wallet.open(); @@ -66,26 +66,26 @@ impl Wallet { } /* private instance methods for open/create/etc...*/ - + fn open(&mut self) -> i32 { - let config : String = Wallet::create_wallet_config(&self.name); + let config: String = Wallet::create_wallet_config(&self.name); let handle = wallet::open_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap(); self.handle = handle; return handle; } - fn create(&self) -> () { + fn create(&self) { let config = Wallet::create_wallet_config(&self.name); wallet::create_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap() } - fn close(&self) -> (){ + fn close(&self) { wallet::close_wallet(self.handle).wait().unwrap() } - fn delete(&self) -> () { - let config : String = Wallet::create_wallet_config(&self.name); - return wallet::delete_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap() + fn delete(&self) { + let config: String = Wallet::create_wallet_config(&self.name); + return wallet::delete_wallet(&config, USEFUL_CREDENTIALS).wait().unwrap(); } } From e1a150d6202b316bda0afb675b7d89748c354df7 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Wed, 27 Mar 2019 15:11:02 +0300 Subject: [PATCH 87/91] IS-1175: Updated ledger plugin versions Signed-off-by: artem.ivanov --- devops/indy-pool/Dockerfile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/devops/indy-pool/Dockerfile b/devops/indy-pool/Dockerfile index f7a3d20ac..e840cedbe 100644 --- a/devops/indy-pool/Dockerfile +++ b/devops/indy-pool/Dockerfile @@ -20,7 +20,6 @@ FROM camparra/ubuntu16.04-rocksdb ARG uid=1000 ARG indy_stream=master -ARG token_stream=sovrin_conversion ARG indy_plenum_ver=1.6.735 @@ -28,8 +27,8 @@ ARG indy_node_ver=1.6.874 ARG indy_anoncreds_ver=1.0.32 ARG python3_indy_crypto_ver=0.4.5 ARG indy_crypto_ver=0.4.5 -ARG token_ver=0.9.6~19 -ARG fees_ver=0.9.6~19 +ARG token_ver=0.9.6~2 +ARG fees_ver=0.9.6~2 # Install environment RUN apt-get update -y && apt-get install -y \ @@ -54,13 +53,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ indy-node=${indy_node_ver} \ indy-anoncreds=${indy_anoncreds_ver} \ python3-indy-crypto=${python3_indy_crypto_ver} \ - libindy-crypto=${indy_crypto_ver} - -# Add Sovrin artifact repository for tokens -RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88 -RUN echo "deb https://repo.sovrin.org/deb xenial $token_stream" >> /etc/apt/sources.list - -RUN apt-get update && apt-get install -y --no-install-recommends \ + libindy-crypto=${indy_crypto_ver} \ sovtoken=${token_ver} \ sovtokenfees=${fees_ver} @@ -117,7 +110,7 @@ USER indy RUN awk '{if (index($1, "NETWORK_NAME") != 0) {print("NETWORK_NAME = \"sandbox\"")} else print($0)}' /etc/indy/indy_config.py> /tmp/indy_config.py RUN mv /tmp/indy_config.py /etc/indy/indy_config.py -ARG pool_ip=127.0.0.1 +ARG pool_ip=10.0.0.2 RUN generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4 --ips="$pool_ip,$pool_ip,$pool_ip,$pool_ip" From 187a1d23a8e8b9f5627cee2b35a43f2c0757e9c3 Mon Sep 17 00:00:00 2001 From: "artem.ivanov" Date: Wed, 27 Mar 2019 15:13:53 +0300 Subject: [PATCH 88/91] IS-1175: Fixed default IP adress Signed-off-by: artem.ivanov --- devops/indy-pool/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/indy-pool/Dockerfile b/devops/indy-pool/Dockerfile index e840cedbe..426d883e6 100644 --- a/devops/indy-pool/Dockerfile +++ b/devops/indy-pool/Dockerfile @@ -110,7 +110,7 @@ USER indy RUN awk '{if (index($1, "NETWORK_NAME") != 0) {print("NETWORK_NAME = \"sandbox\"")} else print($0)}' /etc/indy/indy_config.py> /tmp/indy_config.py RUN mv /tmp/indy_config.py /etc/indy/indy_config.py -ARG pool_ip=10.0.0.2 +ARG pool_ip=127.0.0.1 RUN generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4 --ips="$pool_ip,$pool_ip,$pool_ip,$pool_ip" From cf3edde0a7985c5a5085c866a872c1f5139ed5f2 Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Thu, 28 Mar 2019 13:36:09 +0300 Subject: [PATCH 89/91] Fix android build dockerfiles Signed-off-by: Nikita Khateev --- devops/docker/android_build/xenial/Dockerfile | 4 ++-- devops/docker/android_ndk/xenial/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/devops/docker/android_build/xenial/Dockerfile b/devops/docker/android_build/xenial/Dockerfile index a5af3306a..40c1e3f8d 100644 --- a/devops/docker/android_build/xenial/Dockerfile +++ b/devops/docker/android_build/xenial/Dockerfile @@ -12,7 +12,7 @@ RUN chmod -R 777 ${ANDROID_PREBUILT_DIR} ############################################ -FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -50,4 +50,4 @@ ENV RUST_TARGETS=${RUST_TARGETS:-"arm-linux-androideabi armv7-linux-androideabi # TODO some entrypoint -ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.3.0 +ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.4.0 diff --git a/devops/docker/android_ndk/xenial/Dockerfile b/devops/docker/android_ndk/xenial/Dockerfile index 9cf357589..6a9ea5e20 100644 --- a/devops/docker/android_ndk/xenial/Dockerfile +++ b/devops/docker/android_ndk/xenial/Dockerfile @@ -40,4 +40,4 @@ RUN chmod +x /usr/local/bin/android-ndk-install # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_ANDROID_NDK_ENV_VERSION=0.4.0 +ENV LIBSOVTOKEN_ANDROID_NDK_ENV_VERSION=0.5.0 From e4308962892d4771e0f1e3faaa641857c107fd8f Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Thu, 28 Mar 2019 16:55:19 +0300 Subject: [PATCH 90/91] Fix android docker image Signed-off-by: Nikita Khateev --- devops/docker/android_build/xenial/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/docker/android_build/xenial/Dockerfile b/devops/docker/android_build/xenial/Dockerfile index 40c1e3f8d..8940f947c 100644 --- a/devops/docker/android_build/xenial/Dockerfile +++ b/devops/docker/android_build/xenial/Dockerfile @@ -1,6 +1,6 @@ ARG ANDROID_PREBUILT_DIR=/tmp/android/libsovtoken_prebuilt -FROM sovrin/libsovtoken:android_ndk-xenial-0.4.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.5.0 # TODO LABEL maintainer="Name " ARG ANDROID_PREBUILT_DIR @@ -50,4 +50,4 @@ ENV RUST_TARGETS=${RUST_TARGETS:-"arm-linux-androideabi armv7-linux-androideabi # TODO some entrypoint -ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.4.0 +ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.5.0 From dfc189488f35b7dddc2ec56edeba97d0ae167cc8 Mon Sep 17 00:00:00 2001 From: Nikita Khateev Date: Fri, 29 Mar 2019 11:07:37 +0300 Subject: [PATCH 91/91] Fix dockerfile versions one last time Signed-off-by: Nikita Khateev --- devops/docker/android_build/xenial/Dockerfile | 6 +++--- devops/docker/android_ndk/xenial/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/devops/docker/android_build/xenial/Dockerfile b/devops/docker/android_build/xenial/Dockerfile index 8940f947c..cc8feb534 100644 --- a/devops/docker/android_build/xenial/Dockerfile +++ b/devops/docker/android_build/xenial/Dockerfile @@ -1,6 +1,6 @@ ARG ANDROID_PREBUILT_DIR=/tmp/android/libsovtoken_prebuilt -FROM sovrin/libsovtoken:android_ndk-xenial-0.5.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG ANDROID_PREBUILT_DIR @@ -12,7 +12,7 @@ RUN chmod -R 777 ${ANDROID_PREBUILT_DIR} ############################################ -FROM sovrin/libsovtoken:android_ndk-xenial-0.5.0 +FROM sovrin/libsovtoken:android_ndk-xenial-0.6.0 # TODO LABEL maintainer="Name " ARG u_id=1000 @@ -50,4 +50,4 @@ ENV RUST_TARGETS=${RUST_TARGETS:-"arm-linux-androideabi armv7-linux-androideabi # TODO some entrypoint -ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.5.0 +ENV LIBSOVTOKEN_ANDROID_BUILD_ENV_VERSION=0.6.0 diff --git a/devops/docker/android_ndk/xenial/Dockerfile b/devops/docker/android_ndk/xenial/Dockerfile index 6a9ea5e20..c6ad13678 100644 --- a/devops/docker/android_ndk/xenial/Dockerfile +++ b/devops/docker/android_ndk/xenial/Dockerfile @@ -1,7 +1,7 @@ ARG ANDROID_NDK_DIR=/tmp/android/android_ndk ARG ANDROID_NDK_VERSION=r16b -FROM sovrin/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG ANDROID_NDK_VERSION @@ -14,7 +14,7 @@ RUN chmod -R 777 ${ANDROID_NDK_DIR} ############################################ -FROM sovrin/dockerbase:rust-xenial-0.8.0 +FROM sovrin/dockerbase:rust-xenial-0.12.0 # TODO LABEL maintainer="Name " ARG PYTHON3_VERSION @@ -40,4 +40,4 @@ RUN chmod +x /usr/local/bin/android-ndk-install # TODO CMD ENTRYPOINT ... -ENV LIBSOVTOKEN_ANDROID_NDK_ENV_VERSION=0.5.0 +ENV LIBSOVTOKEN_ANDROID_NDK_ENV_VERSION=0.6.0