// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

#include "platform/globals.h"
#if defined(HOST_OS_WINDOWS)

#include <bcrypt.h>
#include "bin/crypto.h"

namespace dart {
namespace bin {

// see https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif

bool Crypto::GetRandomBytes(intptr_t count, uint8_t* buffer) {
  if (count <= 0) {
    return true;
  }
  return NT_SUCCESS(BCryptGenRandom(/*hAlgorithm=*/nullptr, buffer,
                                    (ULONG)count,
                                    BCRYPT_USE_SYSTEM_PREFERRED_RNG));
}

}  // namespace bin
}  // namespace dart

#endif  // defined(HOST_OS_WINDOWS)
