{"action":"created","comment":{"url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/comments/152520866","pull_request_review_id":78391553,"id":152520866,"diff_hunk":"@@ -0,0 +1,234 @@\n+/*\n+ * Copyright (c) 2017, Linaro Limited\n+ * All rights reserved.\n+ *\n+ * SPDX-License-Identifier: BSD-2-Clause\n+ */\n+#include <hotp_ta.h>\n+#include <string.h>\n+#include <tee_internal_api_extensions.h>\n+#include <tee_internal_api.h>\n+\n+/*\n+ * This macro checks whether the return value is not equal to TEE_SUCCESS, if it\n+ * is not equal, then it will set the return value to 'res' and then goto\n+ * 'label'.\n+ */\n+#define CHECK_EXIT(label, res, ret_val) \\\n+\tif (ret_val != TEE_SUCCESS) { \\\n+\t\tEMSG(\"0x%08x\", ret_val); \\\n+\t\tres = ret_val; \\\n+\t\tgoto label; }\n+\n+/*\n+ * This macro checks the expected parameters, if they are not the same, then it\n+ * will set 'res' to TEE_ERROR_BAD_PARAMETERS and will goto label 'label'.\n+ */\n+#define CHECK_EXP_PARAM_EXIT(label, res, pt, ept) \\\n+\tif (pt != ept) { \\\n+\t\tEMSG(\"Expected: 0x%x, got: 0x%x\", ept, pt); \\\n+\t\tres = TEE_ERROR_BAD_PARAMETERS; \\\n+\t\tgoto label; }\n+\n+/* The size of a SHA1 hash in bytes. */\n+#define SHA1_HASH_SIZE 20\n+\n+/* GP says that for HMAC SHA-1, max is 512 bits and min 80 bits. */\n+#define MAX_KEY_SIZE 64 /* In bytes */\n+#define MIN_KEY_SIZE 10 /* In bytes */\n+\n+/* Dynamic Binary Code 2 Modulo, which is 10^6 according to the spec. */\n+#define DBC2_MODULO 1000000\n+\n+/*\n+ * Currently this only supports a single key, in the future this could be\n+ * updated to support multiple users, all with different unique keys (stored\n+ * using secure storage).\n+ */\n+static uint8_t K[MAX_KEY_SIZE];\n+static uint32_t K_len;\n+\n+/* The counter as defined by RFC4226. */\n+static uint8_t counter[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };\n+\n+/*\n+ *  HMAC a block of memory to produce the authentication tag\n+ *  @param key       The secret key\n+ *  @param keylen    The length of the secret key (bytes)\n+ *  @param in        The data to HMAC\n+ *  @param inlen     The length of the data to HMAC (bytes)\n+ *  @param out       [out] Destination of the authentication tag\n+ *  @param outlen    [in/out] Max size and resulting size of authentication tag\n+ */\n+static TEE_Result hmac_sha1(const uint8_t *key, const size_t keylen,\n+\t\t\t    const uint8_t *in, const size_t inlen,\n+\t\t\t    uint8_t *out, size_t *outlen)\n+{\n+\tTEE_Attribute attr = { 0 };\n+\tTEE_ObjectHandle key_handle = TEE_HANDLE_NULL;\n+\tTEE_OperationHandle op_handle = TEE_HANDLE_NULL;\n+\tTEE_Result res = TEE_SUCCESS;\n+\n+\tif (keylen < MIN_KEY_SIZE || keylen > MAX_KEY_SIZE)\n+\t\treturn TEE_ERROR_BAD_PARAMETERS;\n+\n+\tif (!in || !out || !outlen)\n+\t\treturn TEE_ERROR_BAD_PARAMETERS;\n+\n+\t/*\n+\t * 1. Allocate cryptographic (operation) handle for the HMAC operation.\n+\t *    Note that the expected size here is in bits (and therefore times\n+\t *    8)!\n+\t */\n+\tCHECK_EXIT(exit, res,\n+\t\t   TEE_AllocateOperation(&op_handle, TEE_ALG_HMAC_SHA1,\n+\t\t\t\t\t TEE_MODE_MAC, keylen * 8));\n+\n+\t/*\n+\t * 2. Allocate a container (key handle) for the HMAC attributes. Note\n+\t *    that the expected size here is in bits (and therefore times 8)!\n+\t */\n+\tCHECK_EXIT(exit, res,\n+\t\t   TEE_AllocateTransientObject(TEE_TYPE_HMAC_SHA1, keylen * 8,\n+\t\t\t\t\t       &key_handle));\n+\n+\t/*\n+\t * 3. Initialize the attributes, i.e., point to the actual HMAC key.\n+\t *    Here, the expected size is in bytes and not bits as above!\n+\t */\n+\tTEE_InitRefAttribute(&attr, TEE_ATTR_SECRET_VALUE, key, keylen);\n+\n+\t/* 4. Populate/assign the attributes with the key object */\n+\tCHECK_EXIT(exit, res,\n+\t\t   TEE_PopulateTransientObject(key_handle, &attr, 1));\n+\n+\t/* 5. Associate the key (object) with the operation */\n+\tCHECK_EXIT(exit, res, TEE_SetOperationKey(op_handle, key_handle));\n+\n+\t/* 6. Do the HMAC operations */\n+\tTEE_MACInit(op_handle, NULL, 0);\n+\tTEE_MACUpdate(op_handle, in, inlen);\n+\tCHECK_EXIT(exit, res,\n+\t\t   TEE_MACComputeFinal(op_handle, NULL, 0, out, outlen));\n+exit:\n+\tif (op_handle != TEE_HANDLE_NULL)\n+\t\tTEE_FreeOperation(op_handle);\n+\n+\t/* It is OK to call this when key_handle is TEE_HANDLE_NULL */\n+\tTEE_FreeTransientObject(key_handle);\n+\n+\treturn res;\n+}\n+\n+/*\n+ * Truncate function working as described in RFC4226.\n+ */\n+static void truncate(uint8_t *hmac_result, uint32_t *bin_code)\n+{\n+\tint offset = hmac_result[19] & 0xf;\n+\n+\t*bin_code = (hmac_result[offset] & 0x7f) << 24 |\n+\t\t(hmac_result[offset+1] & 0xff) << 16 |\n+\t\t(hmac_result[offset+2] & 0xff) <<  8 |\n+\t\t(hmac_result[offset+3] & 0xff);\n+\n+\t*bin_code %= DBC2_MODULO;\n+}\n+\n+static TEE_Result register_shared_key(uint32_t param_types, TEE_Param params[4])\n+{\n+\tTEE_Result res = TEE_SUCCESS;\n+\n+\tuint32_t exp_param_types = TEE_PARAM_TYPES(TEE_PARAM_TYPE_MEMREF_INPUT,\n+\t\t\t\t\t\t   TEE_PARAM_TYPE_NONE,\n+\t\t\t\t\t\t   TEE_PARAM_TYPE_NONE,\n+\t\t\t\t\t\t   TEE_PARAM_TYPE_NONE);\n+\n+\tCHECK_EXP_PARAM_EXIT(exit, res, param_types, exp_param_types);\n+\n+\tmemset(K, 0, sizeof(K));\n+\tmemcpy(K, params[0].memref.buffer, params[0].memref.size);\n+\n+\tK_len = params[0].memref.size;\n+\tDMSG(\"Got shared key %s (%u bytes).\", K, params[0].memref.size);\n+exit:\n+\treturn res;\n+}\n+\n+static TEE_Result get_hotp(uint32_t param_types, TEE_Param params[4])\n+{\n+\tTEE_Result res = TEE_SUCCESS;\n+\tuint32_t hotp_val = 0;","path":"hotp/ta/hotp_ta.c","position":161,"original_position":161,"commit_id":"d18552d87186a0562a3417d549aec163f2572fa7","original_commit_id":"d18552d87186a0562a3417d549aec163f2572fa7","user":{"login":"jenswi-linaro","id":6150306,"avatar_url":"https://avatars0.githubusercontent.com/u/6150306?v=4","gravatar_id":"","url":"https://api.github.com/users/jenswi-linaro","html_url":"https://github.com/jenswi-linaro","followers_url":"https://api.github.com/users/jenswi-linaro/followers","following_url":"https://api.github.com/users/jenswi-linaro/following{/other_user}","gists_url":"https://api.github.com/users/jenswi-linaro/gists{/gist_id}","starred_url":"https://api.github.com/users/jenswi-linaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenswi-linaro/subscriptions","organizations_url":"https://api.github.com/users/jenswi-linaro/orgs","repos_url":"https://api.github.com/users/jenswi-linaro/repos","events_url":"https://api.github.com/users/jenswi-linaro/events{/privacy}","received_events_url":"https://api.github.com/users/jenswi-linaro/received_events","type":"User","site_admin":false},"body":"Initialization not needed.","created_at":"2017-11-22T10:19:02Z","updated_at":"2017-11-22T10:19:20Z","html_url":"https://github.com/linaro-swg/optee_examples/pull/11#discussion_r152520866","pull_request_url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/comments/152520866"},"html":{"href":"https://github.com/linaro-swg/optee_examples/pull/11#discussion_r152520866"},"pull_request":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11"}}},"pull_request":{"url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11","id":153922520,"html_url":"https://github.com/linaro-swg/optee_examples/pull/11","diff_url":"https://github.com/linaro-swg/optee_examples/pull/11.diff","patch_url":"https://github.com/linaro-swg/optee_examples/pull/11.patch","issue_url":"https://api.github.com/repos/linaro-swg/optee_examples/issues/11","number":11,"state":"open","locked":false,"title":"Add HMAC One Time Password TA and host application","user":{"login":"jbech-linaro","id":6168937,"avatar_url":"https://avatars0.githubusercontent.com/u/6168937?v=4","gravatar_id":"","url":"https://api.github.com/users/jbech-linaro","html_url":"https://github.com/jbech-linaro","followers_url":"https://api.github.com/users/jbech-linaro/followers","following_url":"https://api.github.com/users/jbech-linaro/following{/other_user}","gists_url":"https://api.github.com/users/jbech-linaro/gists{/gist_id}","starred_url":"https://api.github.com/users/jbech-linaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbech-linaro/subscriptions","organizations_url":"https://api.github.com/users/jbech-linaro/orgs","repos_url":"https://api.github.com/users/jbech-linaro/repos","events_url":"https://api.github.com/users/jbech-linaro/events{/privacy}","received_events_url":"https://api.github.com/users/jbech-linaro/received_events","type":"User","site_admin":false},"body":"This implements a HOTP according to RFC4226. The added README.md in the hotp folder will tell you about the details.\r\n\r\nThis also serves as a good example of how to actually do a plain HMAC using the GP Internal Core API.","created_at":"2017-11-21T15:32:29Z","updated_at":"2017-11-22T10:19:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3d247f94e925e1dc30b4775922c464c821dfac31","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11/commits","review_comments_url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11/comments","review_comment_url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/comments{/number}","comments_url":"https://api.github.com/repos/linaro-swg/optee_examples/issues/11/comments","statuses_url":"https://api.github.com/repos/linaro-swg/optee_examples/statuses/d18552d87186a0562a3417d549aec163f2572fa7","head":{"label":"jbech-linaro:hotp","ref":"hotp","sha":"d18552d87186a0562a3417d549aec163f2572fa7","user":{"login":"jbech-linaro","id":6168937,"avatar_url":"https://avatars0.githubusercontent.com/u/6168937?v=4","gravatar_id":"","url":"https://api.github.com/users/jbech-linaro","html_url":"https://github.com/jbech-linaro","followers_url":"https://api.github.com/users/jbech-linaro/followers","following_url":"https://api.github.com/users/jbech-linaro/following{/other_user}","gists_url":"https://api.github.com/users/jbech-linaro/gists{/gist_id}","starred_url":"https://api.github.com/users/jbech-linaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbech-linaro/subscriptions","organizations_url":"https://api.github.com/users/jbech-linaro/orgs","repos_url":"https://api.github.com/users/jbech-linaro/repos","events_url":"https://api.github.com/users/jbech-linaro/events{/privacy}","received_events_url":"https://api.github.com/users/jbech-linaro/received_events","type":"User","site_admin":false},"repo":{"id":110520517,"name":"optee_examples","full_name":"jbech-linaro/optee_examples","owner":{"login":"jbech-linaro","id":6168937,"avatar_url":"https://avatars0.githubusercontent.com/u/6168937?v=4","gravatar_id":"","url":"https://api.github.com/users/jbech-linaro","html_url":"https://github.com/jbech-linaro","followers_url":"https://api.github.com/users/jbech-linaro/followers","following_url":"https://api.github.com/users/jbech-linaro/following{/other_user}","gists_url":"https://api.github.com/users/jbech-linaro/gists{/gist_id}","starred_url":"https://api.github.com/users/jbech-linaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbech-linaro/subscriptions","organizations_url":"https://api.github.com/users/jbech-linaro/orgs","repos_url":"https://api.github.com/users/jbech-linaro/repos","events_url":"https://api.github.com/users/jbech-linaro/events{/privacy}","received_events_url":"https://api.github.com/users/jbech-linaro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jbech-linaro/optee_examples","description":"OP-TEE Sample Applications","fork":true,"url":"https://api.github.com/repos/jbech-linaro/optee_examples","forks_url":"https://api.github.com/repos/jbech-linaro/optee_examples/forks","keys_url":"https://api.github.com/repos/jbech-linaro/optee_examples/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jbech-linaro/optee_examples/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jbech-linaro/optee_examples/teams","hooks_url":"https://api.github.com/repos/jbech-linaro/optee_examples/hooks","issue_events_url":"https://api.github.com/repos/jbech-linaro/optee_examples/issues/events{/number}","events_url":"https://api.github.com/repos/jbech-linaro/optee_examples/events","assignees_url":"https://api.github.com/repos/jbech-linaro/optee_examples/assignees{/user}","branches_url":"https://api.github.com/repos/jbech-linaro/optee_examples/branches{/branch}","tags_url":"https://api.github.com/repos/jbech-linaro/optee_examples/tags","blobs_url":"https://api.github.com/repos/jbech-linaro/optee_examples/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jbech-linaro/optee_examples/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jbech-linaro/optee_examples/git/refs{/sha}","trees_url":"https://api.github.com/repos/jbech-linaro/optee_examples/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jbech-linaro/optee_examples/statuses/{sha}","languages_url":"https://api.github.com/repos/jbech-linaro/optee_examples/languages","stargazers_url":"https://api.github.com/repos/jbech-linaro/optee_examples/stargazers","contributors_url":"https://api.github.com/repos/jbech-linaro/optee_examples/contributors","subscribers_url":"https://api.github.com/repos/jbech-linaro/optee_examples/subscribers","subscription_url":"https://api.github.com/repos/jbech-linaro/optee_examples/subscription","commits_url":"https://api.github.com/repos/jbech-linaro/optee_examples/commits{/sha}","git_commits_url":"https://api.github.com/repos/jbech-linaro/optee_examples/git/commits{/sha}","comments_url":"https://api.github.com/repos/jbech-linaro/optee_examples/comments{/number}","issue_comment_url":"https://api.github.com/repos/jbech-linaro/optee_examples/issues/comments{/number}","contents_url":"https://api.github.com/repos/jbech-linaro/optee_examples/contents/{+path}","compare_url":"https://api.github.com/repos/jbech-linaro/optee_examples/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jbech-linaro/optee_examples/merges","archive_url":"https://api.github.com/repos/jbech-linaro/optee_examples/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jbech-linaro/optee_examples/downloads","issues_url":"https://api.github.com/repos/jbech-linaro/optee_examples/issues{/number}","pulls_url":"https://api.github.com/repos/jbech-linaro/optee_examples/pulls{/number}","milestones_url":"https://api.github.com/repos/jbech-linaro/optee_examples/milestones{/number}","notifications_url":"https://api.github.com/repos/jbech-linaro/optee_examples/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jbech-linaro/optee_examples/labels{/name}","releases_url":"https://api.github.com/repos/jbech-linaro/optee_examples/releases{/id}","deployments_url":"https://api.github.com/repos/jbech-linaro/optee_examples/deployments","created_at":"2017-11-13T08:25:45Z","updated_at":"2017-11-13T08:25:46Z","pushed_at":"2017-11-22T09:41:43Z","git_url":"git://github.com/jbech-linaro/optee_examples.git","ssh_url":"git@github.com:jbech-linaro/optee_examples.git","clone_url":"https://github.com/jbech-linaro/optee_examples.git","svn_url":"https://github.com/jbech-linaro/optee_examples","homepage":null,"size":123,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"linaro-swg:master","ref":"master","sha":"4201a69074da549187c92f0d2519e5ae7ee3b41e","user":{"login":"linaro-swg","id":12713002,"avatar_url":"https://avatars3.githubusercontent.com/u/12713002?v=4","gravatar_id":"","url":"https://api.github.com/users/linaro-swg","html_url":"https://github.com/linaro-swg","followers_url":"https://api.github.com/users/linaro-swg/followers","following_url":"https://api.github.com/users/linaro-swg/following{/other_user}","gists_url":"https://api.github.com/users/linaro-swg/gists{/gist_id}","starred_url":"https://api.github.com/users/linaro-swg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linaro-swg/subscriptions","organizations_url":"https://api.github.com/users/linaro-swg/orgs","repos_url":"https://api.github.com/users/linaro-swg/repos","events_url":"https://api.github.com/users/linaro-swg/events{/privacy}","received_events_url":"https://api.github.com/users/linaro-swg/received_events","type":"Organization","site_admin":false},"repo":{"id":99511958,"name":"optee_examples","full_name":"linaro-swg/optee_examples","owner":{"login":"linaro-swg","id":12713002,"avatar_url":"https://avatars3.githubusercontent.com/u/12713002?v=4","gravatar_id":"","url":"https://api.github.com/users/linaro-swg","html_url":"https://github.com/linaro-swg","followers_url":"https://api.github.com/users/linaro-swg/followers","following_url":"https://api.github.com/users/linaro-swg/following{/other_user}","gists_url":"https://api.github.com/users/linaro-swg/gists{/gist_id}","starred_url":"https://api.github.com/users/linaro-swg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linaro-swg/subscriptions","organizations_url":"https://api.github.com/users/linaro-swg/orgs","repos_url":"https://api.github.com/users/linaro-swg/repos","events_url":"https://api.github.com/users/linaro-swg/events{/privacy}","received_events_url":"https://api.github.com/users/linaro-swg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/linaro-swg/optee_examples","description":"OP-TEE Sample Applications","fork":false,"url":"https://api.github.com/repos/linaro-swg/optee_examples","forks_url":"https://api.github.com/repos/linaro-swg/optee_examples/forks","keys_url":"https://api.github.com/repos/linaro-swg/optee_examples/keys{/key_id}","collaborators_url":"https://api.github.com/repos/linaro-swg/optee_examples/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/linaro-swg/optee_examples/teams","hooks_url":"https://api.github.com/repos/linaro-swg/optee_examples/hooks","issue_events_url":"https://api.github.com/repos/linaro-swg/optee_examples/issues/events{/number}","events_url":"https://api.github.com/repos/linaro-swg/optee_examples/events","assignees_url":"https://api.github.com/repos/linaro-swg/optee_examples/assignees{/user}","branches_url":"https://api.github.com/repos/linaro-swg/optee_examples/branches{/branch}","tags_url":"https://api.github.com/repos/linaro-swg/optee_examples/tags","blobs_url":"https://api.github.com/repos/linaro-swg/optee_examples/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/linaro-swg/optee_examples/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/linaro-swg/optee_examples/git/refs{/sha}","trees_url":"https://api.github.com/repos/linaro-swg/optee_examples/git/trees{/sha}","statuses_url":"https://api.github.com/repos/linaro-swg/optee_examples/statuses/{sha}","languages_url":"https://api.github.com/repos/linaro-swg/optee_examples/languages","stargazers_url":"https://api.github.com/repos/linaro-swg/optee_examples/stargazers","contributors_url":"https://api.github.com/repos/linaro-swg/optee_examples/contributors","subscribers_url":"https://api.github.com/repos/linaro-swg/optee_examples/subscribers","subscription_url":"https://api.github.com/repos/linaro-swg/optee_examples/subscription","commits_url":"https://api.github.com/repos/linaro-swg/optee_examples/commits{/sha}","git_commits_url":"https://api.github.com/repos/linaro-swg/optee_examples/git/commits{/sha}","comments_url":"https://api.github.com/repos/linaro-swg/optee_examples/comments{/number}","issue_comment_url":"https://api.github.com/repos/linaro-swg/optee_examples/issues/comments{/number}","contents_url":"https://api.github.com/repos/linaro-swg/optee_examples/contents/{+path}","compare_url":"https://api.github.com/repos/linaro-swg/optee_examples/compare/{base}...{head}","merges_url":"https://api.github.com/repos/linaro-swg/optee_examples/merges","archive_url":"https://api.github.com/repos/linaro-swg/optee_examples/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/linaro-swg/optee_examples/downloads","issues_url":"https://api.github.com/repos/linaro-swg/optee_examples/issues{/number}","pulls_url":"https://api.github.com/repos/linaro-swg/optee_examples/pulls{/number}","milestones_url":"https://api.github.com/repos/linaro-swg/optee_examples/milestones{/number}","notifications_url":"https://api.github.com/repos/linaro-swg/optee_examples/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/linaro-swg/optee_examples/labels{/name}","releases_url":"https://api.github.com/repos/linaro-swg/optee_examples/releases{/id}","deployments_url":"https://api.github.com/repos/linaro-swg/optee_examples/deployments","created_at":"2017-08-06T20:35:15Z","updated_at":"2017-09-04T16:34:32Z","pushed_at":"2017-11-22T09:41:44Z","git_url":"git://github.com/linaro-swg/optee_examples.git","ssh_url":"git@github.com:linaro-swg/optee_examples.git","clone_url":"https://github.com/linaro-swg/optee_examples.git","svn_url":"https://github.com/linaro-swg/optee_examples","homepage":null,"size":28,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":3,"forks":2,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11"},"html":{"href":"https://github.com/linaro-swg/optee_examples/pull/11"},"issue":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/issues/11"},"comments":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/issues/11/comments"},"review_comments":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11/comments"},"review_comment":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/pulls/11/commits"},"statuses":{"href":"https://api.github.com/repos/linaro-swg/optee_examples/statuses/d18552d87186a0562a3417d549aec163f2572fa7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jenswi-linaro"}}