keygen.py revision 5821806d5e7f356e8fa4b058a389a808ea183019
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import os
6import sys
7
8_SCRIPT_PATH = os.path.dirname(sys.argv[0])
9if _SCRIPT_PATH == "":
10  _SCRIPT_PATH = os.getcwd()
11
12_EXE_PATHS_TO_TRY = [
13  '.',
14  '..\\..\\build\\Debug',
15  '..\\..\\build\\Release',
16  '..\\Debug',
17  '..\\Release',
18  '../../xcodebuild/Debug',
19  '../../xcodebuild/Release',
20  '../../out/Debug',
21  '../../out/Release',
22  '/usr/lib/chrome-remote-desktop']
23
24
25def locate_executable(exe_name):
26  for path in _EXE_PATHS_TO_TRY:
27    exe_path = os.path.join(_SCRIPT_PATH, path, exe_name)
28    if os.path.exists(exe_path):
29      return exe_path
30    exe_path = exe_path + ".exe"
31    if os.path.exists(exe_path):
32      return exe_path
33
34  raise Exception("Could not locate executable '%s'" % exe_name)
35
36
37def generateRSAKeyPair():
38  """Returns (priv, pub) keypair where priv is a new private key and
39  pub is the corresponding public key.  Both keys are BASE64 encoded."""
40  keygen_path = locate_executable("remoting_host_keygen")
41  pipe = os.popen(keygen_path)
42  out = pipe.readlines()
43  if len(out) != 2:
44    raise Exception("remoting_host_keygen failed.")
45  return (out[0].strip(), out[1].strip())
46