Make App ID a part of User ID

In addition to user ID, auth tokens could be bound to specific app ID.
So internal libweave User ID, named UserAppId, from now will consist of
auth type, user ID and optional app ID. If operation was called with
token containing only user ID, libweave will grant access to all
commands for every app for the given user ID.

To distinguish between user authorized with local, pairing or anonymous
tokens libweave uses UserAppId::type field. As macaroons have no caveats
for this kind of information, current implementation will just append
the type to the user ID caveat of the access token.

BUG: 26292014

Change-Id: I528c2717c95c5daed74bb769b3569fac823761f2
Reviewed-on: https://weave-review.googlesource.com/2394
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
8 files changed
tree: e9c0d8200c8462f87767f7059fc72c5594b8b547
  1. examples/
  2. include/
  3. src/
  4. third_party/
  5. .clang-format
  6. .gitignore
  7. AUTHORS
  8. CONTRIBUTORS
  9. file_lists.mk
  10. libweave-test.pc.in
  11. libweave.pc.in
  12. LICENSE
  13. Makefile
  14. README.md
  15. tests.mk
README.md

Overview

libWeave is the library with device side implementation of Weave protocol.

Sources

Sources are located in git repository at https://weave.googlesource.com/weave/libweave/

Install Repo

Make sure you have a bin/ directory in your home directory and that it is included in your path:

mkdir ~/bin
PATH=~/bin:$PATH

Download the Repo tool and ensure that it is executable:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Checkout code

repo init -u https://weave.googlesource.com/weave/manifest
repo sync

Directory structure

PathDescription
include/Includes to be used by device code
src/Implementation sources
examples/Example of device code
third_party/Dependencies
Makefile, *.mk filesBuild files

Quick start on Debian/Ubuntu

Install prerequisites

sudo apt-get update
sudo apt-get install autoconf automake binutils g++ hostapd libavahi-client-dev libcurl4-openssl-dev libexpat1-dev libnl-3-dev libnl-route-3-dev libssl-dev libtool

Prerequisites

Common

  • autoconf
  • automake
  • binutils
  • libtool
  • libexpat1-dev

For tests

  • gtest (included; see third_party/get_gtest.sh)
  • gmock (included; see third_party/get_gtest.sh)

For examples

  • hostapd
  • libavahi-client-dev
  • libcurl4-openssl-dev
  • libevent 2.1.x-alpha (included; see third_party/get_libevent.sh)

Compiling

The make --jobs/-j flag is encouraged, to speed up build time. For example

make all -j

Build library

make

or

make out/Debug/libweave.so

Build examples

make all-examples

See the examples README for details.

Testing

Run tests

make test
make export-test

or

make testall

Making changes

Configure git

Make sure to have correct user in local or global config e.g.:

git config --local user.name "User Name"
git config --local user.email user.name@example.com

Start local branch

repo start <branch name> .

Edit code and commit locally e.g.

git commit -a -v

Upload CL

repo upload .

Request code review

Go to the url from the output of “repo upload” and add reviewers.