{"action":"created","issue":{"url":"https://api.github.com/repos/openssl/openssl/issues/4403","repository_url":"https://api.github.com/repos/openssl/openssl","labels_url":"https://api.github.com/repos/openssl/openssl/issues/4403/labels{/name}","comments_url":"https://api.github.com/repos/openssl/openssl/issues/4403/comments","events_url":"https://api.github.com/repos/openssl/openssl/issues/4403/events","html_url":"https://github.com/openssl/openssl/issues/4403","id":259671659,"number":4403,"title":"Make RAND_DRBG a public OpenSSL API","user":{"login":"mspncp","id":11467854,"avatar_url":"https://avatars2.githubusercontent.com/u/11467854?v=4","gravatar_id":"","url":"https://api.github.com/users/mspncp","html_url":"https://github.com/mspncp","followers_url":"https://api.github.com/users/mspncp/followers","following_url":"https://api.github.com/users/mspncp/following{/other_user}","gists_url":"https://api.github.com/users/mspncp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspncp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspncp/subscriptions","organizations_url":"https://api.github.com/users/mspncp/orgs","repos_url":"https://api.github.com/users/mspncp/repos","events_url":"https://api.github.com/users/mspncp/events{/privacy}","received_events_url":"https://api.github.com/users/mspncp/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"mspncp","id":11467854,"avatar_url":"https://avatars2.githubusercontent.com/u/11467854?v=4","gravatar_id":"","url":"https://api.github.com/users/mspncp","html_url":"https://github.com/mspncp","followers_url":"https://api.github.com/users/mspncp/followers","following_url":"https://api.github.com/users/mspncp/following{/other_user}","gists_url":"https://api.github.com/users/mspncp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspncp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspncp/subscriptions","organizations_url":"https://api.github.com/users/mspncp/orgs","repos_url":"https://api.github.com/users/mspncp/repos","events_url":"https://api.github.com/users/mspncp/events{/privacy}","received_events_url":"https://api.github.com/users/mspncp/received_events","type":"User","site_admin":false},"assignees":[{"login":"mspncp","id":11467854,"avatar_url":"https://avatars2.githubusercontent.com/u/11467854?v=4","gravatar_id":"","url":"https://api.github.com/users/mspncp","html_url":"https://github.com/mspncp","followers_url":"https://api.github.com/users/mspncp/followers","following_url":"https://api.github.com/users/mspncp/following{/other_user}","gists_url":"https://api.github.com/users/mspncp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspncp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspncp/subscriptions","organizations_url":"https://api.github.com/users/mspncp/orgs","repos_url":"https://api.github.com/users/mspncp/repos","events_url":"https://api.github.com/users/mspncp/events{/privacy}","received_events_url":"https://api.github.com/users/mspncp/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/openssl/openssl/milestones/9","html_url":"https://github.com/openssl/openssl/milestone/9","labels_url":"https://api.github.com/repos/openssl/openssl/milestones/9/labels","id":2145708,"number":9,"title":"1.1.1","description":"","creator":{"login":"levitte","id":698918,"avatar_url":"https://avatars1.githubusercontent.com/u/698918?v=4","gravatar_id":"","url":"https://api.github.com/users/levitte","html_url":"https://github.com/levitte","followers_url":"https://api.github.com/users/levitte/followers","following_url":"https://api.github.com/users/levitte/following{/other_user}","gists_url":"https://api.github.com/users/levitte/gists{/gist_id}","starred_url":"https://api.github.com/users/levitte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/levitte/subscriptions","organizations_url":"https://api.github.com/users/levitte/orgs","repos_url":"https://api.github.com/users/levitte/repos","events_url":"https://api.github.com/users/levitte/events{/privacy}","received_events_url":"https://api.github.com/users/levitte/received_events","type":"User","site_admin":false},"open_issues":176,"closed_issues":42,"state":"open","created_at":"2016-11-19T09:18:52Z","updated_at":"2018-02-09T16:49:44Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2017-09-22T00:40:29Z","updated_at":"2018-02-09T21:38:56Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"This is a followup to #4328 and #4402. As I said previously on many occasions, it is my vision and my belief that the RAND_DRBG API should become a public object oriented OpenSSL API.\r\n\r\nThe RAND_DRBG API is clearly more low-level than the RAND_METHOD API, so it makes sense to place the RAND_DRBG declarations in a separate header `<openssl/rand_drbg.h>` distinct from `<openssl/rand.h>` and make it clear in the documentation that this API is intended for “back end” developers, like somebody who tries to integrate a hardware RNG as entropy source and not for the standard user.\r\n\r\nThis issue does not compete with issue #4394. Having a simplified API for plugging in standard or user-defined entropy sources is a good way for 90% of the use cases. But there are also cases, where one needs access to the full power of the RAND_DRBG API. For example, in one of our products the default RAND_METHOD is mapped to a DRBG which reseeds on every generate request (prediction_resistance = true) and pulls its entropy from a smartcard  (/dev/random is only used as additional input). Such special cases can only be handled with the full API.\r\n\r\nThe RAND_DRBG should be a full blown \"class\", i.e. the structure should be opaque with the necessary accessors. To be truly object oriented, the rwlock needs to be owned by the object, and the locking managed entirely by the RAND_DRBG's \"methods\" (please excuse my C++-speak) and not by the caller.\r\n\r\nThe libcrypto library is a low level general purpose crypto library. So it should provide a toolbox of useful algorithms and not make any assumptions about the way it will be used by the programmer. In particular, it should enable but not force the programmer to use the legacy RAND_METHOD api.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/openssl/openssl/issues/comments/364576385","html_url":"https://github.com/openssl/openssl/issues/4403#issuecomment-364576385","issue_url":"https://api.github.com/repos/openssl/openssl/issues/4403","id":364576385,"user":{"login":"kroeckx","id":1616242,"avatar_url":"https://avatars3.githubusercontent.com/u/1616242?v=4","gravatar_id":"","url":"https://api.github.com/users/kroeckx","html_url":"https://github.com/kroeckx","followers_url":"https://api.github.com/users/kroeckx/followers","following_url":"https://api.github.com/users/kroeckx/following{/other_user}","gists_url":"https://api.github.com/users/kroeckx/gists{/gist_id}","starred_url":"https://api.github.com/users/kroeckx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kroeckx/subscriptions","organizations_url":"https://api.github.com/users/kroeckx/orgs","repos_url":"https://api.github.com/users/kroeckx/repos","events_url":"https://api.github.com/users/kroeckx/events{/privacy}","received_events_url":"https://api.github.com/users/kroeckx/received_events","type":"User","site_admin":false},"created_at":"2018-02-09T21:38:56Z","updated_at":"2018-02-09T21:38:56Z","author_association":"OWNER","body":"Do any other DRBGs other than the 3 global ones ever need locking? Do we want to support applications that want to create their own DRBG used by multiple threads? If so, should we do the locking, or should the application do it?"}}
{"actor":{"display_login":"kroeckx"}}