{"action":"created","comment":{"url":"https://api.github.com/repos/openssl/openssl/pulls/comments/194817252","pull_request_review_id":128058195,"id":194817252,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NDgxNzI1Mg==","diff_hunk":"@@ -0,0 +1,323 @@\n+/*\n+ * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved.\n+ *\n+ * Licensed under the OpenSSL license (the \"License\").  You may not use\n+ * this file except in compliance with the License.  You can obtain a copy\n+ * in the file LICENSE in the source distribution or at\n+ * https://www.openssl.org/source/license.html\n+ */\n+\n+#include \"internal/cryptlib.h\"\n+#include <openssl/asn1t.h>\n+#include <openssl/ec.h>\n+#include <openssl/evp.h>\n+#include \"internal/evp_int.h\"\n+#include \"internal/sm2.h\"\n+#include \"internal/sm2err.h\"\n+\n+/* EC pkey context structure */\n+\n+typedef struct {\n+    /* Key and paramgen group */\n+    EC_GROUP *gen_group;\n+    /* message digest */\n+    const EVP_MD *md;\n+} SM2_PKEY_CTX;\n+\n+static int pkey_sm2_init(EVP_PKEY_CTX *ctx)\n+{\n+    SM2_PKEY_CTX *dctx;\n+\n+    if ((dctx = OPENSSL_zalloc(sizeof(*dctx))) == NULL) {\n+        SM2err(SM2_F_PKEY_SM2_INIT, ERR_R_MALLOC_FAILURE);\n+        return 0;\n+    }\n+\n+    ctx->data = dctx;\n+    return 1;\n+}\n+\n+static int pkey_sm2_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)\n+{\n+    SM2_PKEY_CTX *dctx, *sctx;\n+\n+    if (!pkey_sm2_init(dst))\n+        return 0;\n+    sctx = src->data;\n+    dctx = dst->data;\n+    if (sctx->gen_group != NULL) {\n+        dctx->gen_group = EC_GROUP_dup(sctx->gen_group);\n+        if (dctx->gen_group != NULL)\n+            return 0;\n+    }\n+    dctx->md = sctx->md;\n+\n+    return 1;\n+}\n+\n+static void pkey_sm2_cleanup(EVP_PKEY_CTX *ctx)\n+{\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+\n+    if (dctx != NULL) {\n+        EC_GROUP_free(dctx->gen_group);\n+        OPENSSL_free(dctx);\n+    }\n+}\n+\n+static int pkey_sm2_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,\n+                        const unsigned char *tbs, size_t tbslen)\n+{\n+    int ret, type;\n+    unsigned int sltmp;\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+    EC_KEY *ec = ctx->pkey->pkey.ec;\n+\n+    if (sig == NULL) {\n+        *siglen = ECDSA_size(ec);\n+        return 1;\n+    } else if (*siglen < (size_t)ECDSA_size(ec)) {\n+        SM2err(SM2_F_PKEY_SM2_SIGN, SM2_R_BUFFER_TOO_SMALL);\n+        return 0;\n+    }\n+\n+    if (dctx->md != NULL)\n+        type = EVP_MD_type(dctx->md);\n+    else\n+        type = NID_sm3;\n+\n+    ret = sm2_sign(type, tbs, tbslen, sig, &sltmp, ec);\n+\n+    if (ret <= 0)\n+        return ret;\n+    *siglen = (size_t)sltmp;\n+    return 1;\n+}\n+\n+static int pkey_sm2_verify(EVP_PKEY_CTX *ctx,\n+                          const unsigned char *sig, size_t siglen,\n+                          const unsigned char *tbs, size_t tbslen)\n+{\n+    int type;\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+    EC_KEY *ec = ctx->pkey->pkey.ec;\n+\n+    if (dctx->md != NULL)\n+        type = EVP_MD_type(dctx->md);\n+    else\n+        type = NID_sm3;\n+\n+    return sm2_verify(type, tbs, tbslen, sig, siglen, ec);\n+}\n+\n+static int pkey_sm2_encrypt(EVP_PKEY_CTX *ctx,\n+                              unsigned char *out, size_t *outlen,\n+                              const unsigned char *in, size_t inlen)\n+{\n+    int ret;\n+    int md_type;\n+    EC_KEY *ec = ctx->pkey->pkey.ec;\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+\n+    if (dctx->md != NULL)\n+        md_type = EVP_MD_type(dctx->md);\n+    else\n+        md_type = NID_sm3;\n+\n+    if (out == NULL) {\n+        if (!sm2_ciphertext_size(ec, EVP_get_digestbynid(md_type), inlen,\n+                                 outlen))\n+            ret = -1;\n+        else\n+            ret = 1;\n+    } else {\n+        ret = sm2_encrypt(ec, EVP_get_digestbynid(md_type),\n+                          in, inlen, out, outlen);\n+    }\n+\n+    return ret;\n+}\n+\n+static int pkey_sm2_decrypt(EVP_PKEY_CTX *ctx,\n+                              unsigned char *out, size_t *outlen,\n+                              const unsigned char *in, size_t inlen)\n+{\n+    int ret = -1;\n+    int md_type;\n+    EC_KEY *ec = ctx->pkey->pkey.ec;\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+\n+    if (dctx->md != NULL)\n+        md_type = EVP_MD_type(dctx->md);\n+    else\n+        md_type = NID_sm3;\n+\n+    if (out == NULL) {\n+        if (!sm2_plaintext_size(ec, EVP_get_digestbynid(md_type), inlen,\n+                                outlen))\n+            ret = -1;\n+        else\n+            ret = 1;\n+    } else {\n+        ret = sm2_decrypt(ec, EVP_get_digestbynid(md_type),\n+                          in, inlen, out, outlen);\n+    }\n+\n+    return ret;\n+}\n+\n+static int pkey_sm2_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)\n+{\n+    SM2_PKEY_CTX *dctx = ctx->data;\n+    EC_GROUP *group;\n+\n+    switch (type) {\n+    case EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID:\n+        group = EC_GROUP_new_by_curve_name(p1);\n+        if (group == NULL) {\n+            SM2err(SM2_F_PKEY_SM2_CTRL, SM2_R_INVALID_CURVE);\n+            return 0;\n+        }\n+        EC_GROUP_free(dctx->gen_group);\n+        dctx->gen_group = group;\n+        return 1;\n+\n+    case EVP_PKEY_CTRL_EC_PARAM_ENC:\n+        if (dctx->gen_group != NULL) {\n+            SM2err(SM2_F_PKEY_SM2_CTRL, SM2_R_NO_PARAMETERS_SET);\n+            return 0;\n+        }\n+        EC_GROUP_set_asn1_flag(dctx->gen_group, p1);\n+        return 1;\n+\n+    case EVP_PKEY_CTRL_MD:\n+        if (EVP_MD_type((const EVP_MD *)p2) != NID_sha256\n+            && EVP_MD_type((const EVP_MD *)p2) != NID_sha384\n+            && EVP_MD_type((const EVP_MD *)p2) != NID_sha512\n+            && EVP_MD_type((const EVP_MD *)p2) != NID_sm3) {\n+            SM2err(SM2_F_PKEY_SM2_CTRL, SM2_R_INVALID_DIGEST_TYPE);\n+            return 0;\n+        }\n+        dctx->md = p2;\n+        return 1;\n+\n+    case EVP_PKEY_CTRL_GET_MD:\n+        *(const EVP_MD **)p2 = dctx->md;\n+        return 1;\n+\n+    default:\n+        return -2;\n+\n+    }\n+}\n+\n+static int pkey_sm2_ctrl_str(EVP_PKEY_CTX *ctx,\n+                            const char *type, const char *value)\n+{\n+    if (strcmp(type, \"ec_paramgen_curve\") == 0) {\n+        int nid;","path":"crypto/sm2/sm2_pmeth.c","position":218,"original_position":218,"commit_id":"d948e7d47eee4f0aff2471d6dbf9b7b3eac77f89","original_commit_id":"d948e7d47eee4f0aff2471d6dbf9b7b3eac77f89","user":{"login":"richsalz","id":7332500,"node_id":"MDQ6VXNlcjczMzI1MDA=","avatar_url":"https://avatars0.githubusercontent.com/u/7332500?v=4","gravatar_id":"","url":"https://api.github.com/users/richsalz","html_url":"https://github.com/richsalz","followers_url":"https://api.github.com/users/richsalz/followers","following_url":"https://api.github.com/users/richsalz/following{/other_user}","gists_url":"https://api.github.com/users/richsalz/gists{/gist_id}","starred_url":"https://api.github.com/users/richsalz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richsalz/subscriptions","organizations_url":"https://api.github.com/users/richsalz/orgs","repos_url":"https://api.github.com/users/richsalz/repos","events_url":"https://api.github.com/users/richsalz/events{/privacy}","received_events_url":"https://api.github.com/users/richsalz/received_events","type":"User","site_admin":false},"body":"can merge the decl and the init code into one line (but don't forget the blank line)\r\n","created_at":"2018-06-12T17:04:39Z","updated_at":"2018-06-12T17:08:05Z","html_url":"https://github.com/openssl/openssl/pull/6443#discussion_r194817252","pull_request_url":"https://api.github.com/repos/openssl/openssl/pulls/6443","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/openssl/openssl/pulls/comments/194817252"},"html":{"href":"https://github.com/openssl/openssl/pull/6443#discussion_r194817252"},"pull_request":{"href":"https://api.github.com/repos/openssl/openssl/pulls/6443"}}},"pull_request":{"url":"https://api.github.com/repos/openssl/openssl/pulls/6443","id":193738791,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzNzM4Nzkx","html_url":"https://github.com/openssl/openssl/pull/6443","diff_url":"https://github.com/openssl/openssl/pull/6443.diff","patch_url":"https://github.com/openssl/openssl/pull/6443.patch","issue_url":"https://api.github.com/repos/openssl/openssl/issues/6443","number":6443,"state":"open","locked":false,"title":"Move SM2 to its own PMETH","user":{"login":"randombit","id":469092,"node_id":"MDQ6VXNlcjQ2OTA5Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/469092?v=4","gravatar_id":"","url":"https://api.github.com/users/randombit","html_url":"https://github.com/randombit","followers_url":"https://api.github.com/users/randombit/followers","following_url":"https://api.github.com/users/randombit/following{/other_user}","gists_url":"https://api.github.com/users/randombit/gists{/gist_id}","starred_url":"https://api.github.com/users/randombit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/randombit/subscriptions","organizations_url":"https://api.github.com/users/randombit/orgs","repos_url":"https://api.github.com/users/randombit/repos","events_url":"https://api.github.com/users/randombit/events{/privacy}","received_events_url":"https://api.github.com/users/randombit/received_events","type":"User","site_admin":false},"body":"This moves SM2 to its own PMETH following the approach suggested by @mattcaswell in\r\nhttps://github.com/openssl/openssl/pull/6402 fixing issue #5924\r\n\r\nThis is a contribution from Ribose Inc.\r\n\r\nCC @ronaldtse ","created_at":"2018-06-08T22:45:22Z","updated_at":"2018-06-12T17:08:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0545c81cac5e5aba2a5fe03a75489d830df5d9c5","assignee":{"login":"mattcaswell","id":7422273,"node_id":"MDQ6VXNlcjc0MjIyNzM=","avatar_url":"https://avatars0.githubusercontent.com/u/7422273?v=4","gravatar_id":"","url":"https://api.github.com/users/mattcaswell","html_url":"https://github.com/mattcaswell","followers_url":"https://api.github.com/users/mattcaswell/followers","following_url":"https://api.github.com/users/mattcaswell/following{/other_user}","gists_url":"https://api.github.com/users/mattcaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/mattcaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattcaswell/subscriptions","organizations_url":"https://api.github.com/users/mattcaswell/orgs","repos_url":"https://api.github.com/users/mattcaswell/repos","events_url":"https://api.github.com/users/mattcaswell/events{/privacy}","received_events_url":"https://api.github.com/users/mattcaswell/received_events","type":"User","site_admin":false},"assignees":[{"login":"mattcaswell","id":7422273,"node_id":"MDQ6VXNlcjc0MjIyNzM=","avatar_url":"https://avatars0.githubusercontent.com/u/7422273?v=4","gravatar_id":"","url":"https://api.github.com/users/mattcaswell","html_url":"https://github.com/mattcaswell","followers_url":"https://api.github.com/users/mattcaswell/followers","following_url":"https://api.github.com/users/mattcaswell/following{/other_user}","gists_url":"https://api.github.com/users/mattcaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/mattcaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattcaswell/subscriptions","organizations_url":"https://api.github.com/users/mattcaswell/orgs","repos_url":"https://api.github.com/users/mattcaswell/repos","events_url":"https://api.github.com/users/mattcaswell/events{/privacy}","received_events_url":"https://api.github.com/users/mattcaswell/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":613575196,"node_id":"MDU6TGFiZWw2MTM1NzUxOTY=","url":"https://api.github.com/repos/openssl/openssl/labels/pending%202nd%20review","name":"pending 2nd review","color":"fbca04","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/openssl/openssl/pulls/6443/commits","review_comments_url":"https://api.github.com/repos/openssl/openssl/pulls/6443/comments","review_comment_url":"https://api.github.com/repos/openssl/openssl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openssl/openssl/issues/6443/comments","statuses_url":"https://api.github.com/repos/openssl/openssl/statuses/d948e7d47eee4f0aff2471d6dbf9b7b3eac77f89","head":{"label":"riboseinc:sm2-pkey-alias","ref":"sm2-pkey-alias","sha":"d948e7d47eee4f0aff2471d6dbf9b7b3eac77f89","user":{"login":"riboseinc","id":24904375,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTA0Mzc1","avatar_url":"https://avatars0.githubusercontent.com/u/24904375?v=4","gravatar_id":"","url":"https://api.github.com/users/riboseinc","html_url":"https://github.com/riboseinc","followers_url":"https://api.github.com/users/riboseinc/followers","following_url":"https://api.github.com/users/riboseinc/following{/other_user}","gists_url":"https://api.github.com/users/riboseinc/gists{/gist_id}","starred_url":"https://api.github.com/users/riboseinc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/riboseinc/subscriptions","organizations_url":"https://api.github.com/users/riboseinc/orgs","repos_url":"https://api.github.com/users/riboseinc/repos","events_url":"https://api.github.com/users/riboseinc/events{/privacy}","received_events_url":"https://api.github.com/users/riboseinc/received_events","type":"Organization","site_admin":false},"repo":{"id":104009680,"node_id":"MDEwOlJlcG9zaXRvcnkxMDQwMDk2ODA=","name":"openssl","full_name":"riboseinc/openssl","owner":{"login":"riboseinc","id":24904375,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0OTA0Mzc1","avatar_url":"https://avatars0.githubusercontent.com/u/24904375?v=4","gravatar_id":"","url":"https://api.github.com/users/riboseinc","html_url":"https://github.com/riboseinc","followers_url":"https://api.github.com/users/riboseinc/followers","following_url":"https://api.github.com/users/riboseinc/following{/other_user}","gists_url":"https://api.github.com/users/riboseinc/gists{/gist_id}","starred_url":"https://api.github.com/users/riboseinc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/riboseinc/subscriptions","organizations_url":"https://api.github.com/users/riboseinc/orgs","repos_url":"https://api.github.com/users/riboseinc/repos","events_url":"https://api.github.com/users/riboseinc/events{/privacy}","received_events_url":"https://api.github.com/users/riboseinc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/riboseinc/openssl","description":"TLS/SSL and crypto library","fork":true,"url":"https://api.github.com/repos/riboseinc/openssl","forks_url":"https://api.github.com/repos/riboseinc/openssl/forks","keys_url":"https://api.github.com/repos/riboseinc/openssl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/riboseinc/openssl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/riboseinc/openssl/teams","hooks_url":"https://api.github.com/repos/riboseinc/openssl/hooks","issue_events_url":"https://api.github.com/repos/riboseinc/openssl/issues/events{/number}","events_url":"https://api.github.com/repos/riboseinc/openssl/events","assignees_url":"https://api.github.com/repos/riboseinc/openssl/assignees{/user}","branches_url":"https://api.github.com/repos/riboseinc/openssl/branches{/branch}","tags_url":"https://api.github.com/repos/riboseinc/openssl/tags","blobs_url":"https://api.github.com/repos/riboseinc/openssl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/riboseinc/openssl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/riboseinc/openssl/git/refs{/sha}","trees_url":"https://api.github.com/repos/riboseinc/openssl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/riboseinc/openssl/statuses/{sha}","languages_url":"https://api.github.com/repos/riboseinc/openssl/languages","stargazers_url":"https://api.github.com/repos/riboseinc/openssl/stargazers","contributors_url":"https://api.github.com/repos/riboseinc/openssl/contributors","subscribers_url":"https://api.github.com/repos/riboseinc/openssl/subscribers","subscription_url":"https://api.github.com/repos/riboseinc/openssl/subscription","commits_url":"https://api.github.com/repos/riboseinc/openssl/commits{/sha}","git_commits_url":"https://api.github.com/repos/riboseinc/openssl/git/commits{/sha}","comments_url":"https://api.github.com/repos/riboseinc/openssl/comments{/number}","issue_comment_url":"https://api.github.com/repos/riboseinc/openssl/issues/comments{/number}","contents_url":"https://api.github.com/repos/riboseinc/openssl/contents/{+path}","compare_url":"https://api.github.com/repos/riboseinc/openssl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/riboseinc/openssl/merges","archive_url":"https://api.github.com/repos/riboseinc/openssl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/riboseinc/openssl/downloads","issues_url":"https://api.github.com/repos/riboseinc/openssl/issues{/number}","pulls_url":"https://api.github.com/repos/riboseinc/openssl/pulls{/number}","milestones_url":"https://api.github.com/repos/riboseinc/openssl/milestones{/number}","notifications_url":"https://api.github.com/repos/riboseinc/openssl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/riboseinc/openssl/labels{/name}","releases_url":"https://api.github.com/repos/riboseinc/openssl/releases{/id}","deployments_url":"https://api.github.com/repos/riboseinc/openssl/deployments","created_at":"2017-09-19T01:18:56Z","updated_at":"2018-05-17T20:11:49Z","pushed_at":"2018-06-12T14:47:28Z","git_url":"git://github.com/riboseinc/openssl.git","ssh_url":"git@github.com:riboseinc/openssl.git","clone_url":"https://github.com/riboseinc/openssl.git","svn_url":"https://github.com/riboseinc/openssl","homepage":"https://www.openssl.org","size":145844,"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":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"openssl:master","ref":"master","sha":"55fc247a699be33153f27c06d304e6e60eeff980","user":{"login":"openssl","id":3279138,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNzkxMzg=","avatar_url":"https://avatars2.githubusercontent.com/u/3279138?v=4","gravatar_id":"","url":"https://api.github.com/users/openssl","html_url":"https://github.com/openssl","followers_url":"https://api.github.com/users/openssl/followers","following_url":"https://api.github.com/users/openssl/following{/other_user}","gists_url":"https://api.github.com/users/openssl/gists{/gist_id}","starred_url":"https://api.github.com/users/openssl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openssl/subscriptions","organizations_url":"https://api.github.com/users/openssl/orgs","repos_url":"https://api.github.com/users/openssl/repos","events_url":"https://api.github.com/users/openssl/events{/privacy}","received_events_url":"https://api.github.com/users/openssl/received_events","type":"Organization","site_admin":false},"repo":{"id":7634677,"node_id":"MDEwOlJlcG9zaXRvcnk3NjM0Njc3","name":"openssl","full_name":"openssl/openssl","owner":{"login":"openssl","id":3279138,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNzkxMzg=","avatar_url":"https://avatars2.githubusercontent.com/u/3279138?v=4","gravatar_id":"","url":"https://api.github.com/users/openssl","html_url":"https://github.com/openssl","followers_url":"https://api.github.com/users/openssl/followers","following_url":"https://api.github.com/users/openssl/following{/other_user}","gists_url":"https://api.github.com/users/openssl/gists{/gist_id}","starred_url":"https://api.github.com/users/openssl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openssl/subscriptions","organizations_url":"https://api.github.com/users/openssl/orgs","repos_url":"https://api.github.com/users/openssl/repos","events_url":"https://api.github.com/users/openssl/events{/privacy}","received_events_url":"https://api.github.com/users/openssl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openssl/openssl","description":"TLS/SSL and crypto library","fork":false,"url":"https://api.github.com/repos/openssl/openssl","forks_url":"https://api.github.com/repos/openssl/openssl/forks","keys_url":"https://api.github.com/repos/openssl/openssl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openssl/openssl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openssl/openssl/teams","hooks_url":"https://api.github.com/repos/openssl/openssl/hooks","issue_events_url":"https://api.github.com/repos/openssl/openssl/issues/events{/number}","events_url":"https://api.github.com/repos/openssl/openssl/events","assignees_url":"https://api.github.com/repos/openssl/openssl/assignees{/user}","branches_url":"https://api.github.com/repos/openssl/openssl/branches{/branch}","tags_url":"https://api.github.com/repos/openssl/openssl/tags","blobs_url":"https://api.github.com/repos/openssl/openssl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openssl/openssl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openssl/openssl/git/refs{/sha}","trees_url":"https://api.github.com/repos/openssl/openssl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openssl/openssl/statuses/{sha}","languages_url":"https://api.github.com/repos/openssl/openssl/languages","stargazers_url":"https://api.github.com/repos/openssl/openssl/stargazers","contributors_url":"https://api.github.com/repos/openssl/openssl/contributors","subscribers_url":"https://api.github.com/repos/openssl/openssl/subscribers","subscription_url":"https://api.github.com/repos/openssl/openssl/subscription","commits_url":"https://api.github.com/repos/openssl/openssl/commits{/sha}","git_commits_url":"https://api.github.com/repos/openssl/openssl/git/commits{/sha}","comments_url":"https://api.github.com/repos/openssl/openssl/comments{/number}","issue_comment_url":"https://api.github.com/repos/openssl/openssl/issues/comments{/number}","contents_url":"https://api.github.com/repos/openssl/openssl/contents/{+path}","compare_url":"https://api.github.com/repos/openssl/openssl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openssl/openssl/merges","archive_url":"https://api.github.com/repos/openssl/openssl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openssl/openssl/downloads","issues_url":"https://api.github.com/repos/openssl/openssl/issues{/number}","pulls_url":"https://api.github.com/repos/openssl/openssl/pulls{/number}","milestones_url":"https://api.github.com/repos/openssl/openssl/milestones{/number}","notifications_url":"https://api.github.com/repos/openssl/openssl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openssl/openssl/labels{/name}","releases_url":"https://api.github.com/repos/openssl/openssl/releases{/id}","deployments_url":"https://api.github.com/repos/openssl/openssl/deployments","created_at":"2013-01-15T22:34:48Z","updated_at":"2018-06-12T16:28:18Z","pushed_at":"2018-06-12T16:34:05Z","git_url":"git://github.com/openssl/openssl.git","ssh_url":"git@github.com:openssl/openssl.git","clone_url":"https://github.com/openssl/openssl.git","svn_url":"https://github.com/openssl/openssl","homepage":"https://www.openssl.org","size":148707,"stargazers_count":7361,"watchers_count":7361,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3515,"mirror_url":null,"archived":false,"open_issues_count":400,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":3515,"open_issues":400,"watchers":7361,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openssl/openssl/pulls/6443"},"html":{"href":"https://github.com/openssl/openssl/pull/6443"},"issue":{"href":"https://api.github.com/repos/openssl/openssl/issues/6443"},"comments":{"href":"https://api.github.com/repos/openssl/openssl/issues/6443/comments"},"review_comments":{"href":"https://api.github.com/repos/openssl/openssl/pulls/6443/comments"},"review_comment":{"href":"https://api.github.com/repos/openssl/openssl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openssl/openssl/pulls/6443/commits"},"statuses":{"href":"https://api.github.com/repos/openssl/openssl/statuses/d948e7d47eee4f0aff2471d6dbf9b7b3eac77f89"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"richsalz"}}