Skip to content

Commit bc2ba78

Browse files
authored
Merge branch 'master' into master
2 parents 6490f04 + f7a483b commit bc2ba78

File tree

254 files changed

+13401
-1579
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

254 files changed

+13401
-1579
lines changed

CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# 1.4.0
2+
3+
* Indy CLI tool added.
4+
* Switching from DID-based crypto to keys-based crypto:
5+
* All DID-based crypto functions (`signus` module) are removed.
6+
* Added key-based `crypto` module.
7+
* Added functions to resolve keys for DIDs.
8+
* Agent API moved into `crypto` module.
9+
* Support the latest version of CL crypto (through `indy-crypto` library):
10+
* Added nonce for all protocol steps.
11+
* Added consistency proofs for protocol steps.
12+
* Representation of Proofs changed (sub-proofs now are ordered).
13+
* Support of complete Credentials Revocation workflow in Anoncreds API:
14+
* Support large Tails handling through BlobStorage API.
15+
* Support new Revocation transactions.
16+
* Add calls for remote Witness calculation.
17+
* State-less approach in Credential issuance process.
18+
* Unified reference approach for Anoncreds entities.
19+
* Extend DID API: added some methods for iteration over entities in the wallet.
20+
* Bugfixes.
21+
22+
Notes:
23+
* There is [migration guide](doc/migration-guide.md) about API changes.
24+
* The changes for Credential Revocation invalidates any Anoncreds made with SDK 1.3. They must be reissued.
25+
* This release is intended for development purposes only. The 1.5.0 release of the SDK will contain changes to the wallet format. If you plan to put durable artifacts in the wallet, let us know so we can discuss migration to the future format.
26+
27+
# 1.3.0
28+
29+
* Encryption option for default wallet is added.
30+
31+
# 1.2.0
32+
33+
* indy_key_for_local_did added.
34+
35+
# 1.1.0
36+
37+
* Replaced Agent2Agent API.
38+
* New Crypto API.
39+
* Updated Signus API.
40+
41+
# 1.0.0
42+
43+
* Initial release.

Jenkinsfile.cd

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,11 @@ def publishingRCtoStable() {
550550
echo 'Moving RC artifacts to Stable: Checkout csm'
551551
checkout scm
552552

553+
echo 'Moving RC artifacts to Stable: Download packaging utils'
554+
dir('sovrin-packaging') {
555+
downloadPackagingUtils()
556+
}
557+
553558
version = getSrcVersion()
554559

555560
echo 'Moving Windows RC artifacts to Stable: libindy'
@@ -629,10 +634,9 @@ def publishLibindyCliDebRCtoStable(testEnv, version) {
629634

630635
def uploadDebianFilesToStable() {
631636
withCredentials([file(credentialsId: 'SovrinRepoSSHKey', variable: 'sovrin_key')]) {
632-
downloadPackagingUtils()
633637
path = sh(returnStdout: true, script: 'pwd').trim()
634638

635-
sh "./upload_debs.py $path $SOVRIN_SDK_REPO_NAME stable --host $SOVRIN_REPO_HOST --ssh-key $sovrin_key"
639+
sh "./sovrin-packaging/upload_debs.py $path $SOVRIN_SDK_REPO_NAME stable --host $SOVRIN_REPO_HOST --ssh-key $sovrin_key"
636640
}
637641
}
638642

README.md

Lines changed: 49 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,67 @@
1-
2-
## Before you Continue
3-
4-
If you haven't done so already, please visit the main resource for all things "Indy" to get acquainted with the code base, helpful resources, and up-to-date information: [Hyperledger Wiki-Indy](https://wiki.hyperledger.org/projects/indy).
5-
61
# Indy SDK
7-
2+
![logo](https://raw.githubusercontent.com/hyperledger/indy-node/master/collateral/logos/indy-logo.png)
83
This is the official SDK for [Hyperledger Indy](https://www.hyperledger.org/projects),
9-
which provides a distributed-ledger-based foundation for [self-sovereign identity](https://sovrin.org).
4+
which provides a distributed-ledger-based foundation for [self-sovereign identity](https://sovrin.org). Indy provides a software ecosystem for private, secure, and powerful identity, and the Indy SDK enables clients for it.
105
The major artifact of the SDK is a c-callable
116
library; there are also convenience wrappers for various programming languages and Indy CLI tool.
127

13-
All bugs, stories, and backlog for this project are managed through [Hyperledger's Jira](https://jira.hyperledger.org)
14-
in project IS (note that regular Indy tickets are in the INDY project instead...). Also, join
15-
us on [Hyperledger's Rocket.Chat](https://chat.hyperledger.org/) at #indy-sdk to discuss.
8+
All bugs, stories, and backlog for this project are managed through [Hyperledger's Jira](https://jira.hyperledger.org/secure/RapidBoard.jspa)
9+
in project IS (note that regular Indy tickets are in the INDY project instead...). Also, make sure to join
10+
us on [Hyperledger's Rocket.Chat](https://chat.hyperledger.org/) at #indy-sdk to discuss. You will need a Linux Foundation login to get access to these channels
11+
12+
## Understanding Hyperledger Indy
13+
14+
If you have just started learning about self-sovereign identity, here are some resources to increase your understanding:
15+
16+
* This extended tutorial introduces Indy, explains how the whole ecosystem works, and how the
17+
functions in the SDK can be used to construct rich clients: [Indy-SDK Getting-Started Guide](doc/getting-started/getting-started.md)
18+
19+
* A recent webinar explaining self-sovereign identity using Hyperledger Indy and Sovrin: [SSI Meetup Webinar](https://youtu.be/RllH91rcFdE?t=4m30s)
20+
21+
* Visit the main resource for all things "Indy" to get acquainted with the code base, helpful resources, and up-to-date information: [Hyperledger Wiki-Indy](https://wiki.hyperledger.org/projects/indy).
22+
23+
* You may also want to look at the [older guide](https://github.com/hyperledger/indy-node/blob/stable/getting-started.md)
24+
that explored the ecosystem via command line. That material is being
25+
rewritten but still contains some useful ideas.
26+
27+
## How-To Tutorials
28+
29+
Short, simple tutorials that demonstrate how to accomplish common tasks
30+
are also available. See the [doc/how-tos](doc/how-tos) folder.
1631

32+
1. [Write a DID and Query Its Verkey](doc/how-tos/write-did-and-query-verkey/README.md)
33+
2. [Rotate a Key](doc/how-tos/rotate-key/README.md)
34+
3. [Save a Schema and Cred Def](doc/how-tos/save-schema-and-cred-def/README.md)
35+
4. [Issue a Credential](doc/how-tos/issue-credential/README.md)
36+
5. [Negotiate a Proof](doc/how-tos/negotiate-proof/README.md)
37+
6. [Send a Secure Message](doc/how-tos/send-secure-msg/README.md)
1738

18-
## Installation
39+
## Installing the SDK
1940
### Release channels
20-
Indy SDK release process defines the following release channels:
41+
The Indy SDK release process defines the following release channels:
2142

2243
* `master` - development builds for each push to master branch.
2344
* `rc` - release candidates.
2445
* `stable` - stable releases.
2546

26-
Please refer to [release workflow](doc/release-workflow.md) for more details.
47+
Please refer to our [release workflow](doc/release-workflow.md) for more details.
2748

2849
### Ubuntu based distributions (Ubuntu 16.04)
29-
It is recommended to install packages with APT:
50+
It is recommended to install the SDK packages with APT:
3051

31-
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
52+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
3253
sudo add-apt-repository "deb https://repo.sovrin.org/sdk/deb xenial {release channel}"
3354
sudo apt-get update
3455
sudo apt-get install -y libindy
3556

3657
{release channel} must be replaced with master, rc or stable to define corresponded release channel.
37-
See section "Release channels" for more details.
58+
Please See the section "Release channels" above for more details.
3859

3960
### Windows
4061

41-
1. follow to https://repo.sovrin.org/windows/libindy/{release-channel}.
42-
2. download last version of libindy.
43-
3. unzip archives to directory, where you want to save working library.
62+
1. Go to https://repo.sovrin.org/windows/libindy/{release-channel}.
63+
2. Download last version of libindy.
64+
3. Unzip archives to the directory where you want to save working library.
4465
4. After unzip you will get next structure of files:
4566

4667
* `Your working directory`
@@ -71,7 +92,7 @@ See [wrapper iOS install documentation](wrappers/ios/README.md "How to install")
7192
Pre-built libraries are not provided for MacOS. Please look [here](doc/mac-build.md)
7293
for details on building from source for MacOS.
7394

74-
After building `libindy`, add the path containing the library the `LD_LIBRARY_PATH` and
95+
**Note:** After building `libindy`, add the path containing the library the `LD_LIBRARY_PATH` and
7596
`DYLD_LIBRARY_PATH` environment variables. This is necessary for dynamically linking
7697
your application with `libindy`. The dynamic linker will first check for the library in
7798
`LD_LIBRARY_PATH` if the library in your application doesn't include directory names.
@@ -87,23 +108,24 @@ After successfully compiling `libindy`, you will need to add the path containing
87108
`LD_LIBRARY_PATH` environment variable. This is required for your application to link to
88109
`libindy`.
89110

90-
## How to build
111+
## How to build Indy SDK from source
91112

92113
* [Ubuntu based distributions (Ubuntu 16.04)](doc/ubuntu-build.md)
93114
* [RHEL based distributions (Amazon Linux 2017.03)](doc/rhel-build.md)
94115
* [Windows](doc/windows-build.md)
95116
* [MacOS](doc/mac-build.md)
96117

97118
## How to start local nodes pool with docker
119+
To test the SDK codebase with a virtual Indy node network, you can start a pool of local nodes using docker:
98120

99-
Start local nodes pool on `127.0.0.1:9701-9708` with Docker:
121+
Start the pool of local nodes on `127.0.0.1:9701-9708` with Docker by running:
100122

101123
```
102124
docker build -f ci/indy-pool.dockerfile -t indy_pool .
103125
docker run -itd -p 9701-9708:9701-9708 indy_pool
104126
```
105127

106-
Dockerfile `ci/indy-pool.dockerfile` supports optional pool_ip param that allows
128+
Dockerfile `ci/indy-pool.dockerfile` supports an optional pool_ip param that allows
107129
changing ip of pool nodes in generated pool configuration. The following commands
108130
allow to start local nodes pool in custom docker network and access this pool
109131
by custom ip in docker network:
@@ -115,7 +137,7 @@ docker run -itd -p 9701-9708:9701-9708 indy_pool
115137
```
116138
Note that for Windows and MacOS this approach has some issues. Docker for these OS run in
117139
their virtual environment. First command creates network for container and host can't
118-
get access to that network because container placed on virtual machine. You must appropriate set up
140+
get access to that network because container placed on virtual machine. You must appropriate set up
119141
networking on your virtual environment. See the instructions for MacOS below.
120142

121143
### Docker port mapping on MacOS
@@ -159,23 +181,9 @@ details.
159181
* [iOS](wrappers/ios/README.md)
160182

161183
## Indy CLI documentation
162-
* [Indy CLI](cli/README.md)
163-
164-
## Getting started
165-
166-
This extended tutorial shows how the whole ecosystem works, and how
167-
functions in the SDK can be used to construct rich clients. (You may also
168-
want to look at the [older guide](https://github.com/hyperledger/indy-node/blob/stable/getting-started.md)
169-
that explored the ecosystem via command line. That material is being
170-
rewritten but still contains some useful ideas.)
171-
172-
* [Libindy Getting-Started Guide](doc/getting-started/getting-started.md)
173-
174-
## How Tos
175-
176-
Short, simple tutorials that demonstrate how to accomplish common tasks
177-
are also available. See [the doc/how-tos folder](doc/how-tos).
184+
* An explanation of how to install the official command line interface for that provides commands to manage wallets and interactions with the ledger: [Indy CLI](cli/README.md)
178185

179186
## How to migrate
180-
The documents that provide necessary information for Libindy migration.
187+
The documents that provide necessary information for Libindy migration. This document is written for developers using Libindy 1.3.0 to provide necessary information and
188+
to simplify their transition to API of Libindy 1.4.0.
181189
* [v1.3.0 → v1.4.0](doc/migration-guide.md)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "libindy-objc",
3+
"version": "1.4.0",
4+
"summary": "Summary TODO.",
5+
"homepage": "TODO",
6+
"license": {
7+
"type": "Apache License 2.0",
8+
"file": "LICENSE"
9+
},
10+
"authors": {
11+
"Daniel Hardman": "[email protected]"
12+
},
13+
"source": {
14+
"http": "https://repo.sovrin.org/ios/libindy/stable/indy-objc/1.4.0/libindy-objc.zip"
15+
},
16+
"platforms": {
17+
"ios": "10.0"
18+
},
19+
"ios": {
20+
"vendored_frameworks": "libindy-objc/Indy.framework"
21+
},
22+
"module_name": "Indy"
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "libindy",
3+
"version": "1.4.0",
4+
"summary": "Summary TODO.",
5+
"description": "Description TODO.",
6+
"homepage": "TODO",
7+
"license": {
8+
"type": "Apache License 2.0",
9+
"file": "LICENSE"
10+
},
11+
"authors": {
12+
"Daniel Hardman": "[email protected]"
13+
},
14+
"platforms": {
15+
"ios": "10.0"
16+
},
17+
"source": {
18+
"http": "https://repo.sovrin.org/ios/libindy/stable/libindy-core/1.4.0/libindy.tar.gz"
19+
},
20+
"source_files": "*.h",
21+
"vendored_libraries": "*.a",
22+
"requires_arc": false
23+
}

ci/acceptance/ubuntu_acceptance.dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ RUN apt-get update && \
1414
RUN add-apt-repository ppa:jonathonf/python-3.6
1515
RUN apt-get update && \
1616
apt-get install -y \
17-
python3.6 \
18-
python3-pip
17+
python3.5 \
18+
python3-pip \
19+
vim
20+
21+
RUN pip3 install -U pip
1922

2023
ARG indy_sdk_deb
2124
RUN echo ${indy_sdk_deb}
@@ -24,5 +27,5 @@ ADD ${indy_sdk_deb} indy-sdk.deb
2427
RUN dpkg -i indy-sdk.deb || apt-get install -y -f
2528

2629
RUN useradd -ms /bin/bash indy
27-
WORKDIR /home/indy
2830
USER indy
31+
WORKDIR /home/indy

cli/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Pre-Built binaries can be downloaded from https://repo.sovrin.org/:
1414

1515
On Ubuntu it is recommended to install packages with APT (change stable to `master` or `rc` if needed):
1616
```
17-
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
17+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
1818
sudo add-apt-repository "deb https://repo.sovrin.org/sdk/deb xenial stable"
1919
sudo apt-get update
2020
sudo apt-get install -y indy-cli

cli/src/commands/ledger.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -627,9 +627,9 @@ pub mod pool_config_command {
627627
pub mod pool_restart_command {
628628
use super::*;
629629

630-
command!(CommandMetadata::build("pool-restart", "Send instructions to nodes to update themselves.")
630+
command!(CommandMetadata::build("pool-restart", "Send instructions to nodes to restart themselves.")
631631
.add_required_param("action", "Restart type. Either start or cancel.")
632-
.add_optional_param("datetime", "Node restart datetime. Datetime is mandatory for action=start.")
632+
.add_optional_param("datetime", "Node restart datetime (only for action=start).")
633633
.add_example(r#"ledger pool-restart action=start datetime=2020-01-25T12:49:05.258870+00:00"#)
634634
.add_example(r#"ledger pool-restart action=cancel"#)
635635
.finalize()
@@ -643,7 +643,7 @@ pub mod pool_restart_command {
643643
let (wallet_handle, wallet_name) = ensure_opened_wallet(&ctx)?;
644644

645645
let action = get_str_param("action", params).map_err(error_err!())?;
646-
let datetime = get_str_param("datetime", params).map_err(error_err!())?;
646+
let datetime = get_opt_str_param("datetime", params).map_err(error_err!())?;
647647

648648
let response = Ledger::indy_build_pool_restart_request(&submitter_did, action, datetime)
649649
.and_then(|request| Ledger::sign_and_submit_request(pool_handle, wallet_handle, &submitter_did, &request));

cli/src/libindy/ledger.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,12 @@ impl Ledger {
223223
super::results::result_to_string(err, receiver)
224224
}
225225

226-
pub fn indy_build_pool_restart_request(submitter_did: &str, action: &str, datetime: &str) -> Result<String, ErrorCode> {
226+
pub fn indy_build_pool_restart_request(submitter_did: &str, action: &str, datetime: Option<&str>) -> Result<String, ErrorCode> {
227227
let (receiver, command_handle, cb) = super::callbacks::_closure_to_cb_ec_string();
228228

229229
let submitter_did = CString::new(submitter_did).unwrap();
230230
let action = CString::new(action).unwrap();
231-
let datetime = CString::new(datetime).unwrap();
231+
let datetime = datetime.map(|s| CString::new(s).unwrap()).unwrap_or(CString::new("").unwrap());
232232

233233
let err = unsafe {
234234
indy_build_pool_restart_request(command_handle,

doc/before-and-after.png

414 Bytes
Loading

0 commit comments

Comments
 (0)