diff options
Diffstat (limited to 'ppapi/shared_impl/crypto_impl.cc')
-rw-r--r-- | ppapi/shared_impl/crypto_impl.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/ppapi/shared_impl/crypto_impl.cc b/ppapi/shared_impl/crypto_impl.cc new file mode 100644 index 0000000..42694d0 --- /dev/null +++ b/ppapi/shared_impl/crypto_impl.cc @@ -0,0 +1,36 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/rand_util.h" +#include "ppapi/c/dev/ppb_crypto_dev.h" +#include "ppapi/thunk/thunk.h" + +// The crypto interface doesn't have a normal C -> C++ thunk since it doesn't +// actually have any proxy wrapping or associated objects; it's just a call +// into base. So we implement the entire interface here, using the thunk +// namespace so it magically gets hooked up in the proper places. + +namespace ppapi { + +namespace { + +void GetRandomBytes(char* buffer, uint32_t num_bytes) { + base::RandBytes(buffer, num_bytes); +} + +const PPB_Crypto_Dev crypto_interface = { + &GetRandomBytes +}; + +} // namespace + +namespace thunk { + +PPAPI_THUNK_EXPORT const PPB_Crypto_Dev* GetPPB_Crypto_Dev_Thunk() { + return &crypto_interface; +} + +} // namespace thunk + +} // namespace ppapi |