gana2188 / google-cloud-sdk

Automatically exported from code.google.com/p/google-cloud-sdk
0 stars 0 forks source link

pkcs12 parsing doesnt work #43

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
On a CentOS 6.5, fully patched machine, I have added a service account key with 
gcloud auth

When I try to use the account:

[root@puppet ~]# gcloud compute instances list
Traceback (most recent call last):
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 139, in <module>
    main()
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 135, in main
    _cli.Execute()
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/calliope/__init__.py", line 1600, in Execute
    post_run_hooks=self.__post_run_hooks, kwargs=kwargs)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/calliope/__init__.py", line 1151, in _Execute
    pre_run_hooks=pre_run_hooks, post_run_hooks=post_run_hooks)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/calliope/__init__.py", line 872, in Run
    command_instance.Display(args, result)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/base_classes.py", line 252, in Display
    for resource in resources:
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/base_classes.py", line 233, in ActuallyRun
    resources=self.GetResources(args, errors),
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/base_classes.py", line 417, in GetResources
    errors=errors)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/lister.py", line 180, in GetZonalResources
    errors=errors))
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/lister.py", line 36, in BatchList
    batch_url=batch_url)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/batch_helper.py", line 30, in MakeRequests
    responses = batch.Execute(http)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudapis/apitools/base/py/batch.py", line 180, in Execute
    batch_http_request.Execute(http)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudapis/apitools/base/py/batch.py", line 426, in Execute
    self._Execute(http)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudapis/apitools/base/py/batch.py", line 389, in _Execute
    response = http_wrapper.MakeRequest(http, request)
  File "/usr/local/gce/google-cloud-sdk/./lib/googlecloudapis/apitools/base/py/http_wrapper.py", line 139, in MakeRequest
    redirections=redirections, connection_type=connection_type)
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/util.py", line 132, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/client.py", line 475, in new_request
    self._refresh(request_orig)
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/client.py", line 663, in _refresh
    self._do_refresh_request(http_request)
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/client.py", line 677, in _do_refresh_request
    body = self._generate_refresh_request_body()
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/client.py", line 861, in _generate_refresh_request_body
    assertion = self._generate_assertion()
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/client.py", line 977, in _generate_assertion
    private_key, self.private_key_password), payload)
  File "/usr/local/gce/google-cloud-sdk/./lib/oauth2client/crypt.py", line 131, in from_string
    pkey = crypto.load_pkcs12(key, password).get_privatekey()
  File "/usr/lib/python2.6/site-packages/OpenSSL/crypto.py", line 2223, in load_pkcs12
    parse_result = _lib.PKCS12_parse(p12, passphrase, pkey, cert, cacerts)
TypeError: initializer for ctype 'char *' must be a str or list or tuple, not 
unicode

The simple fix is to edit google-cloud-sdk/lib/oauth2client/crypt.py
set line 131 to:
pkey = crypto.load_pkcs12(key, str(password)).get_privatekey()
vs the original of
pkey = crypto.load_pkcs12(key, password).get_privatekey()

What is the output of 'gcloud version'?
Google Cloud SDK 0.9.26

bq 2.0.18
bq-nix 2.0.18
compute 2014.06.05
core 2014.06.05
core-nix 2014.05.06
dns 2014.04.30
gcutil 1.16.0
gcutil-nix 1.15.0
gsutil 4.1
gsutil-nix 3.42
sql 2014.06.03

Original issue reported on code.google.com by a...@pathdefender.com on 6 Jun 2014 at 6:14

GoogleCodeExporter commented 9 years ago
This is happening for me too

Original comment by iamcraig...@gmail.com on 11 Jun 2014 at 7:39

GoogleCodeExporter commented 9 years ago
I think this should be fixed now. See:

https://code.google.com/p/google-api-python-client/issues/detail?id=328

Please re-open if you're running into this. 

Original comment by rdayal@google.com on 13 Aug 2014 at 11:04