{"action":"created","comment":{"url":"https://api.github.com/repos/bosnet/sebak/pulls/comments/195954552","pull_request_review_id":129414038,"id":195954552,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NTk1NDU1Mg==","diff_hunk":"@@ -0,0 +1,156 @@\n+package sebaknetwork\n+\n+import (\n+\t\"crypto/ecdsa\"\n+\t\"crypto/rand\"\n+\t\"crypto/rsa\"\n+\t\"crypto/x509\"\n+\t\"crypto/x509/pkix\"\n+\t\"encoding/pem\"\n+\t\"fmt\"\n+\t\"math/big\"\n+\t\"os\"\n+\t\"path/filepath\"\n+\t\"time\"\n+)\n+\n+var (\n+\thost     = \"localhost\"\n+\tvalidFor = time.Duration(1000000)\n+\trsaBits  = 2048\n+)\n+\n+func publicKey(priv interface{}) interface{} {\n+\tswitch k := priv.(type) {\n+\tcase *rsa.PrivateKey:\n+\t\treturn &k.PublicKey\n+\tcase *ecdsa.PrivateKey:\n+\t\treturn &k.PublicKey\n+\tdefault:\n+\t\treturn nil\n+\t}\n+}\n+\n+func pemBlockForKey(priv interface{}) *pem.Block {\n+\tswitch k := priv.(type) {\n+\tcase *rsa.PrivateKey:\n+\t\treturn &pem.Block{Type: \"RSA PRIVATE KEY\", Bytes: x509.MarshalPKCS1PrivateKey(k)}\n+\tcase *ecdsa.PrivateKey:\n+\t\tb, err := x509.MarshalECPrivateKey(k)\n+\t\tif err != nil {\n+\t\t\tfmt.Fprintf(os.Stderr, \"Unable to marshal ECDSA private key: %v\", err)\n+\t\t\tos.Exit(2)\n+\t\t}\n+\t\treturn &pem.Block{Type: \"EC PRIVATE KEY\", Bytes: b}\n+\tdefault:\n+\t\treturn nil\n+\t}\n+}\n+\n+type KeyGenerator struct {\n+\tcertPath string\n+\tkeyPath  string\n+}\n+\n+var (\n+\ttlsDirPath  = \"tls_tmp\"\n+\ttlsPrefix   = \"sebak\"\n+\tcertPostfix = \".cert\"\n+\tkeyPostfix  = \".key\"\n+)\n+\n+func remove(filePath string) {\n+\tif _, err := os.Stat(filePath); os.IsNotExist(err) {\n+\t\treturn\n+\t}\n+\n+\terr := os.Remove(filePath)\n+\tif err != nil {\n+\t\tabsFilePath, absErr := filepath.Abs(filePath)\n+\t\tif absErr != nil {\n+\t\t\tlog.Error(fmt.Sprintf(\"failed to get an absolute path(%s)\", filePath), \"error\", absErr)\n+\t\t}\n+\t\tlog.Error(fmt.Sprintf(\"failed to remove a file(%s)\", absFilePath), \"error\", err)\n+\t}\n+}\n+\n+func NewKeyGenerator(endPoint string) *KeyGenerator {\n+\tp := &KeyGenerator{}\n+\n+\tp.certPath = fmt.Sprintf(\"%s/%s_%s%s\", tlsDirPath, tlsPrefix, endPoint, certPostfix)\n+\tp.keyPath = fmt.Sprintf(\"%s/%s_%s%s\", tlsDirPath, tlsPrefix, endPoint, keyPostfix)\n+\n+\tremove(p.certPath)\n+\tremove(p.keyPath)\n+\n+\tGenerateKey(tlsDirPath, p.certPath, p.keyPath)\n+\n+\treturn p\n+}\n+\n+func (g *KeyGenerator) GetCertPath() string {\n+\treturn g.certPath\n+}\n+\n+func (g *KeyGenerator) GetKeyPath() string {\n+\treturn g.keyPath\n+}\n+\n+func GenerateKey(dirPath string, certPath string, keyPath string) {\n+\tvar priv interface{}\n+\tvar err error\n+\tpriv, err = rsa.GenerateKey(rand.Reader, rsaBits)\n+\tif err != nil {\n+\t\tlog.Debug(\"failed to generate private key: %s\", err)\n+\t}\n+\n+\tnotBefore := time.Now()\n+\tnotAfter := notBefore.Add(validFor)\n+\n+\tserialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)\n+\tserialNumber, err := rand.Int(rand.Reader, serialNumberLimit)\n+\tif err != nil {\n+\t\tlog.Debug(\"failed to generate serial number: %s\", err)\n+\t}\n+\n+\ttemplate := x509.Certificate{\n+\t\tSerialNumber: serialNumber,\n+\t\tSubject: pkix.Name{\n+\t\t\tOrganization: []string{\"Acme Co\"},\n+\t\t},\n+\t\tNotBefore: notBefore,\n+\t\tNotAfter:  notAfter,\n+\n+\t\tKeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,\n+\t\tExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},\n+\t\tBasicConstraintsValid: true,\n+\t}\n+\n+\ttemplate.DNSNames = append(template.DNSNames, \"localhost\")\n+\ttemplate.IsCA = true\n+\ttemplate.KeyUsage |= x509.KeyUsageCertSign\n+\n+\tderBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)\n+\tif err != nil {\n+\t\tlog.Debug(\"Failed to create certificate: %s\", err)\n+\t}\n+\n+\tos.Mkdir(dirPath, 0777)\n+\n+\tcertOut, err := os.Create(certPath)\n+\tif err != nil {\n+\t\tlog.Debug(\"failed to open %s for writing: %s\", certPath, err)\n+\t}\n+\tpem.Encode(certOut, &pem.Block{Type: \"CERTIFICATE\", Bytes: derBytes})\n+\tcertOut.Close()\n+\tlog.Debug(\"written \" + certPath + \"\\n\")\n+\n+\tkeyOut, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)\n+\tif err != nil {\n+\t\tlog.Debug(\"failed to open %s for writing:\", keyPath, err)\n+\t\treturn\n+\t}\n+\tpem.Encode(keyOut, pemBlockForKey(priv))\n+\tkeyOut.Close()\n+\tlog.Debug(\"written \" + keyPath + \"\\n\")","path":"lib/network/generate_key.go","position":155,"original_position":155,"commit_id":"633871a17cc41c19709c6b7cf39dd6157249d043","original_commit_id":"633871a17cc41c19709c6b7cf39dd6157249d043","user":{"login":"Geod24","id":2180215,"node_id":"MDQ6VXNlcjIxODAyMTU=","avatar_url":"https://avatars0.githubusercontent.com/u/2180215?v=4","gravatar_id":"","url":"https://api.github.com/users/Geod24","html_url":"https://github.com/Geod24","followers_url":"https://api.github.com/users/Geod24/followers","following_url":"https://api.github.com/users/Geod24/following{/other_user}","gists_url":"https://api.github.com/users/Geod24/gists{/gist_id}","starred_url":"https://api.github.com/users/Geod24/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Geod24/subscriptions","organizations_url":"https://api.github.com/users/Geod24/orgs","repos_url":"https://api.github.com/users/Geod24/repos","events_url":"https://api.github.com/users/Geod24/events{/privacy}","received_events_url":"https://api.github.com/users/Geod24/received_events","type":"User","site_admin":false},"body":"Leftover ?","created_at":"2018-06-18T02:38:23Z","updated_at":"2018-06-18T02:38:26Z","html_url":"https://github.com/bosnet/sebak/pull/90#discussion_r195954552","pull_request_url":"https://api.github.com/repos/bosnet/sebak/pulls/90","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/comments/195954552"},"html":{"href":"https://github.com/bosnet/sebak/pull/90#discussion_r195954552"},"pull_request":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/90"}}},"pull_request":{"url":"https://api.github.com/repos/bosnet/sebak/pulls/90","id":195401365,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1NDAxMzY1","html_url":"https://github.com/bosnet/sebak/pull/90","diff_url":"https://github.com/bosnet/sebak/pull/90.diff","patch_url":"https://github.com/bosnet/sebak/pull/90.patch","issue_url":"https://api.github.com/repos/bosnet/sebak/issues/90","number":90,"state":"open","locked":false,"title":"Add default cert and key by temporary generation","user":{"login":"Charleslee522","id":15343839,"node_id":"MDQ6VXNlcjE1MzQzODM5","avatar_url":"https://avatars1.githubusercontent.com/u/15343839?v=4","gravatar_id":"","url":"https://api.github.com/users/Charleslee522","html_url":"https://github.com/Charleslee522","followers_url":"https://api.github.com/users/Charleslee522/followers","following_url":"https://api.github.com/users/Charleslee522/following{/other_user}","gists_url":"https://api.github.com/users/Charleslee522/gists{/gist_id}","starred_url":"https://api.github.com/users/Charleslee522/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Charleslee522/subscriptions","organizations_url":"https://api.github.com/users/Charleslee522/orgs","repos_url":"https://api.github.com/users/Charleslee522/repos","events_url":"https://api.github.com/users/Charleslee522/events{/privacy}","received_events_url":"https://api.github.com/users/Charleslee522/received_events","type":"User","site_admin":false},"body":"### Github Issue\r\n<!--\r\n    Add the github issue number if exists(ex. Fixes #1, Closes #1 or Resolves #1).\r\n-->\r\nResolves #89 \r\n\r\n### Background\r\n<!--\r\n    Explain why this pull request was created.\r\n-->\r\nWhen a user is starter or tests sebak node module then creating tls cert and key files is a little bit annoying.\r\n\r\n### Solution\r\n<!-- \r\n    Explain how you solved this problem.\r\n-->\r\nWhen --tls-cert or --tls-key options are empty, the program automatically generates tls key and cert files.\r\n\r\n### Possible Drawbacks\r\n<!--\r\n    What are the possible side-effects or negative impacts of the code change?\r\n-->\r\n\r\n> Please check the assignee comment in file changed\r\n<!--\r\n    Please comment additional descriptions in file changed \r\n-->\r\n","created_at":"2018-06-17T23:50:54Z","updated_at":"2018-06-18T02:38:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bccbba52c3838e0227c659d2c11b23197401e68b","assignee":{"login":"Charleslee522","id":15343839,"node_id":"MDQ6VXNlcjE1MzQzODM5","avatar_url":"https://avatars1.githubusercontent.com/u/15343839?v=4","gravatar_id":"","url":"https://api.github.com/users/Charleslee522","html_url":"https://github.com/Charleslee522","followers_url":"https://api.github.com/users/Charleslee522/followers","following_url":"https://api.github.com/users/Charleslee522/following{/other_user}","gists_url":"https://api.github.com/users/Charleslee522/gists{/gist_id}","starred_url":"https://api.github.com/users/Charleslee522/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Charleslee522/subscriptions","organizations_url":"https://api.github.com/users/Charleslee522/orgs","repos_url":"https://api.github.com/users/Charleslee522/repos","events_url":"https://api.github.com/users/Charleslee522/events{/privacy}","received_events_url":"https://api.github.com/users/Charleslee522/received_events","type":"User","site_admin":false},"assignees":[{"login":"Charleslee522","id":15343839,"node_id":"MDQ6VXNlcjE1MzQzODM5","avatar_url":"https://avatars1.githubusercontent.com/u/15343839?v=4","gravatar_id":"","url":"https://api.github.com/users/Charleslee522","html_url":"https://github.com/Charleslee522","followers_url":"https://api.github.com/users/Charleslee522/followers","following_url":"https://api.github.com/users/Charleslee522/following{/other_user}","gists_url":"https://api.github.com/users/Charleslee522/gists{/gist_id}","starred_url":"https://api.github.com/users/Charleslee522/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Charleslee522/subscriptions","organizations_url":"https://api.github.com/users/Charleslee522/orgs","repos_url":"https://api.github.com/users/Charleslee522/repos","events_url":"https://api.github.com/users/Charleslee522/events{/privacy}","received_events_url":"https://api.github.com/users/Charleslee522/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"anarcher","id":12271,"node_id":"MDQ6VXNlcjEyMjcx","avatar_url":"https://avatars1.githubusercontent.com/u/12271?v=4","gravatar_id":"","url":"https://api.github.com/users/anarcher","html_url":"https://github.com/anarcher","followers_url":"https://api.github.com/users/anarcher/followers","following_url":"https://api.github.com/users/anarcher/following{/other_user}","gists_url":"https://api.github.com/users/anarcher/gists{/gist_id}","starred_url":"https://api.github.com/users/anarcher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anarcher/subscriptions","organizations_url":"https://api.github.com/users/anarcher/orgs","repos_url":"https://api.github.com/users/anarcher/repos","events_url":"https://api.github.com/users/anarcher/events{/privacy}","received_events_url":"https://api.github.com/users/anarcher/received_events","type":"User","site_admin":false},{"login":"spikeekips","id":174565,"node_id":"MDQ6VXNlcjE3NDU2NQ==","avatar_url":"https://avatars0.githubusercontent.com/u/174565?v=4","gravatar_id":"","url":"https://api.github.com/users/spikeekips","html_url":"https://github.com/spikeekips","followers_url":"https://api.github.com/users/spikeekips/followers","following_url":"https://api.github.com/users/spikeekips/following{/other_user}","gists_url":"https://api.github.com/users/spikeekips/gists{/gist_id}","starred_url":"https://api.github.com/users/spikeekips/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spikeekips/subscriptions","organizations_url":"https://api.github.com/users/spikeekips/orgs","repos_url":"https://api.github.com/users/spikeekips/repos","events_url":"https://api.github.com/users/spikeekips/events{/privacy}","received_events_url":"https://api.github.com/users/spikeekips/received_events","type":"User","site_admin":false},{"login":"astonshnam","id":22882624,"node_id":"MDQ6VXNlcjIyODgyNjI0","avatar_url":"https://avatars2.githubusercontent.com/u/22882624?v=4","gravatar_id":"","url":"https://api.github.com/users/astonshnam","html_url":"https://github.com/astonshnam","followers_url":"https://api.github.com/users/astonshnam/followers","following_url":"https://api.github.com/users/astonshnam/following{/other_user}","gists_url":"https://api.github.com/users/astonshnam/gists{/gist_id}","starred_url":"https://api.github.com/users/astonshnam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/astonshnam/subscriptions","organizations_url":"https://api.github.com/users/astonshnam/orgs","repos_url":"https://api.github.com/users/astonshnam/repos","events_url":"https://api.github.com/users/astonshnam/events{/privacy}","received_events_url":"https://api.github.com/users/astonshnam/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/bosnet/sebak/pulls/90/commits","review_comments_url":"https://api.github.com/repos/bosnet/sebak/pulls/90/comments","review_comment_url":"https://api.github.com/repos/bosnet/sebak/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bosnet/sebak/issues/90/comments","statuses_url":"https://api.github.com/repos/bosnet/sebak/statuses/633871a17cc41c19709c6b7cf39dd6157249d043","head":{"label":"Charleslee522:add-default-cert-and-key-by-temporary-generation","ref":"add-default-cert-and-key-by-temporary-generation","sha":"633871a17cc41c19709c6b7cf39dd6157249d043","user":{"login":"Charleslee522","id":15343839,"node_id":"MDQ6VXNlcjE1MzQzODM5","avatar_url":"https://avatars1.githubusercontent.com/u/15343839?v=4","gravatar_id":"","url":"https://api.github.com/users/Charleslee522","html_url":"https://github.com/Charleslee522","followers_url":"https://api.github.com/users/Charleslee522/followers","following_url":"https://api.github.com/users/Charleslee522/following{/other_user}","gists_url":"https://api.github.com/users/Charleslee522/gists{/gist_id}","starred_url":"https://api.github.com/users/Charleslee522/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Charleslee522/subscriptions","organizations_url":"https://api.github.com/users/Charleslee522/orgs","repos_url":"https://api.github.com/users/Charleslee522/repos","events_url":"https://api.github.com/users/Charleslee522/events{/privacy}","received_events_url":"https://api.github.com/users/Charleslee522/received_events","type":"User","site_admin":false},"repo":{"id":137317850,"node_id":"MDEwOlJlcG9zaXRvcnkxMzczMTc4NTA=","name":"sebak","full_name":"Charleslee522/sebak","owner":{"login":"Charleslee522","id":15343839,"node_id":"MDQ6VXNlcjE1MzQzODM5","avatar_url":"https://avatars1.githubusercontent.com/u/15343839?v=4","gravatar_id":"","url":"https://api.github.com/users/Charleslee522","html_url":"https://github.com/Charleslee522","followers_url":"https://api.github.com/users/Charleslee522/followers","following_url":"https://api.github.com/users/Charleslee522/following{/other_user}","gists_url":"https://api.github.com/users/Charleslee522/gists{/gist_id}","starred_url":"https://api.github.com/users/Charleslee522/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Charleslee522/subscriptions","organizations_url":"https://api.github.com/users/Charleslee522/orgs","repos_url":"https://api.github.com/users/Charleslee522/repos","events_url":"https://api.github.com/users/Charleslee522/events{/privacy}","received_events_url":"https://api.github.com/users/Charleslee522/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Charleslee522/sebak","description":"SEBAK, the next BOScoin Tokennet with ISAAC consensus protocol","fork":true,"url":"https://api.github.com/repos/Charleslee522/sebak","forks_url":"https://api.github.com/repos/Charleslee522/sebak/forks","keys_url":"https://api.github.com/repos/Charleslee522/sebak/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Charleslee522/sebak/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Charleslee522/sebak/teams","hooks_url":"https://api.github.com/repos/Charleslee522/sebak/hooks","issue_events_url":"https://api.github.com/repos/Charleslee522/sebak/issues/events{/number}","events_url":"https://api.github.com/repos/Charleslee522/sebak/events","assignees_url":"https://api.github.com/repos/Charleslee522/sebak/assignees{/user}","branches_url":"https://api.github.com/repos/Charleslee522/sebak/branches{/branch}","tags_url":"https://api.github.com/repos/Charleslee522/sebak/tags","blobs_url":"https://api.github.com/repos/Charleslee522/sebak/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Charleslee522/sebak/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Charleslee522/sebak/git/refs{/sha}","trees_url":"https://api.github.com/repos/Charleslee522/sebak/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Charleslee522/sebak/statuses/{sha}","languages_url":"https://api.github.com/repos/Charleslee522/sebak/languages","stargazers_url":"https://api.github.com/repos/Charleslee522/sebak/stargazers","contributors_url":"https://api.github.com/repos/Charleslee522/sebak/contributors","subscribers_url":"https://api.github.com/repos/Charleslee522/sebak/subscribers","subscription_url":"https://api.github.com/repos/Charleslee522/sebak/subscription","commits_url":"https://api.github.com/repos/Charleslee522/sebak/commits{/sha}","git_commits_url":"https://api.github.com/repos/Charleslee522/sebak/git/commits{/sha}","comments_url":"https://api.github.com/repos/Charleslee522/sebak/comments{/number}","issue_comment_url":"https://api.github.com/repos/Charleslee522/sebak/issues/comments{/number}","contents_url":"https://api.github.com/repos/Charleslee522/sebak/contents/{+path}","compare_url":"https://api.github.com/repos/Charleslee522/sebak/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Charleslee522/sebak/merges","archive_url":"https://api.github.com/repos/Charleslee522/sebak/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Charleslee522/sebak/downloads","issues_url":"https://api.github.com/repos/Charleslee522/sebak/issues{/number}","pulls_url":"https://api.github.com/repos/Charleslee522/sebak/pulls{/number}","milestones_url":"https://api.github.com/repos/Charleslee522/sebak/milestones{/number}","notifications_url":"https://api.github.com/repos/Charleslee522/sebak/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Charleslee522/sebak/labels{/name}","releases_url":"https://api.github.com/repos/Charleslee522/sebak/releases{/id}","deployments_url":"https://api.github.com/repos/Charleslee522/sebak/deployments","created_at":"2018-06-14T06:47:48Z","updated_at":"2018-06-17T22:56:49Z","pushed_at":"2018-06-18T02:18:07Z","git_url":"git://github.com/Charleslee522/sebak.git","ssh_url":"git@github.com:Charleslee522/sebak.git","clone_url":"https://github.com/Charleslee522/sebak.git","svn_url":"https://github.com/Charleslee522/sebak","homepage":"https://boscoin.io","size":299,"stargazers_count":1,"watchers_count":1,"language":"Go","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,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"bosnet:master","ref":"master","sha":"b01b08b1e8e4aae6a1d86ba5b64eccb3d1ae2277","user":{"login":"bosnet","id":37893578,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3ODkzNTc4","avatar_url":"https://avatars1.githubusercontent.com/u/37893578?v=4","gravatar_id":"","url":"https://api.github.com/users/bosnet","html_url":"https://github.com/bosnet","followers_url":"https://api.github.com/users/bosnet/followers","following_url":"https://api.github.com/users/bosnet/following{/other_user}","gists_url":"https://api.github.com/users/bosnet/gists{/gist_id}","starred_url":"https://api.github.com/users/bosnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bosnet/subscriptions","organizations_url":"https://api.github.com/users/bosnet/orgs","repos_url":"https://api.github.com/users/bosnet/repos","events_url":"https://api.github.com/users/bosnet/events{/privacy}","received_events_url":"https://api.github.com/users/bosnet/received_events","type":"Organization","site_admin":false},"repo":{"id":129848943,"node_id":"MDEwOlJlcG9zaXRvcnkxMjk4NDg5NDM=","name":"sebak","full_name":"bosnet/sebak","owner":{"login":"bosnet","id":37893578,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3ODkzNTc4","avatar_url":"https://avatars1.githubusercontent.com/u/37893578?v=4","gravatar_id":"","url":"https://api.github.com/users/bosnet","html_url":"https://github.com/bosnet","followers_url":"https://api.github.com/users/bosnet/followers","following_url":"https://api.github.com/users/bosnet/following{/other_user}","gists_url":"https://api.github.com/users/bosnet/gists{/gist_id}","starred_url":"https://api.github.com/users/bosnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bosnet/subscriptions","organizations_url":"https://api.github.com/users/bosnet/orgs","repos_url":"https://api.github.com/users/bosnet/repos","events_url":"https://api.github.com/users/bosnet/events{/privacy}","received_events_url":"https://api.github.com/users/bosnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bosnet/sebak","description":"SEBAK, the next BOScoin Tokennet with ISAAC consensus protocol","fork":false,"url":"https://api.github.com/repos/bosnet/sebak","forks_url":"https://api.github.com/repos/bosnet/sebak/forks","keys_url":"https://api.github.com/repos/bosnet/sebak/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bosnet/sebak/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bosnet/sebak/teams","hooks_url":"https://api.github.com/repos/bosnet/sebak/hooks","issue_events_url":"https://api.github.com/repos/bosnet/sebak/issues/events{/number}","events_url":"https://api.github.com/repos/bosnet/sebak/events","assignees_url":"https://api.github.com/repos/bosnet/sebak/assignees{/user}","branches_url":"https://api.github.com/repos/bosnet/sebak/branches{/branch}","tags_url":"https://api.github.com/repos/bosnet/sebak/tags","blobs_url":"https://api.github.com/repos/bosnet/sebak/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bosnet/sebak/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bosnet/sebak/git/refs{/sha}","trees_url":"https://api.github.com/repos/bosnet/sebak/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bosnet/sebak/statuses/{sha}","languages_url":"https://api.github.com/repos/bosnet/sebak/languages","stargazers_url":"https://api.github.com/repos/bosnet/sebak/stargazers","contributors_url":"https://api.github.com/repos/bosnet/sebak/contributors","subscribers_url":"https://api.github.com/repos/bosnet/sebak/subscribers","subscription_url":"https://api.github.com/repos/bosnet/sebak/subscription","commits_url":"https://api.github.com/repos/bosnet/sebak/commits{/sha}","git_commits_url":"https://api.github.com/repos/bosnet/sebak/git/commits{/sha}","comments_url":"https://api.github.com/repos/bosnet/sebak/comments{/number}","issue_comment_url":"https://api.github.com/repos/bosnet/sebak/issues/comments{/number}","contents_url":"https://api.github.com/repos/bosnet/sebak/contents/{+path}","compare_url":"https://api.github.com/repos/bosnet/sebak/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bosnet/sebak/merges","archive_url":"https://api.github.com/repos/bosnet/sebak/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bosnet/sebak/downloads","issues_url":"https://api.github.com/repos/bosnet/sebak/issues{/number}","pulls_url":"https://api.github.com/repos/bosnet/sebak/pulls{/number}","milestones_url":"https://api.github.com/repos/bosnet/sebak/milestones{/number}","notifications_url":"https://api.github.com/repos/bosnet/sebak/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bosnet/sebak/labels{/name}","releases_url":"https://api.github.com/repos/bosnet/sebak/releases{/id}","deployments_url":"https://api.github.com/repos/bosnet/sebak/deployments","created_at":"2018-04-17T05:05:34Z","updated_at":"2018-06-17T09:11:12Z","pushed_at":"2018-06-17T23:53:35Z","git_url":"git://github.com/bosnet/sebak.git","ssh_url":"git@github.com:bosnet/sebak.git","clone_url":"https://github.com/bosnet/sebak.git","svn_url":"https://github.com/bosnet/sebak","homepage":"https://boscoin.io","size":288,"stargazers_count":14,"watchers_count":14,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":12,"mirror_url":null,"archived":false,"open_issues_count":55,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":12,"open_issues":55,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/90"},"html":{"href":"https://github.com/bosnet/sebak/pull/90"},"issue":{"href":"https://api.github.com/repos/bosnet/sebak/issues/90"},"comments":{"href":"https://api.github.com/repos/bosnet/sebak/issues/90/comments"},"review_comments":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/90/comments"},"review_comment":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bosnet/sebak/pulls/90/commits"},"statuses":{"href":"https://api.github.com/repos/bosnet/sebak/statuses/633871a17cc41c19709c6b7cf39dd6157249d043"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Geod24"}}