def ssh_key_upload(self, key, label):
if not key.startswith(SSH_KEY_TYPES):<EOL><INDENT>path = os.path.expanduser(key)<EOL>if os.path.isfile(path):<EOL><INDENT>with open(path) as f:<EOL><INDENT>key = f.read().strip()<EOL><DEDENT><DEDENT>if not key.startswith(SSH_KEY_TYPES):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT><DEDENT>params = {<EOL>'<STR_LIT>': key,<EOL>'<STR_LIT:label>': label,<EOL>}<EOL>result = self.client.post('<STR_LIT>', data=params)<EOL>if not '<STR_LIT:id>' in result:<EOL><INDENT>raise UnexpectedResponseError('<STR_LIT>',<EOL>json=result)<EOL><DEDENT>ssh_key = SSHKey(self.client, result['<STR_LIT:id>'], result)<EOL>return ssh_key<EOL>
Uploads a new SSH Public Key to your profile  This key can be used in
later Linode deployments.

:param key: The ssh key, or a path to the ssh key.  If a path is provided,
            the file at the path must exist and be readable or an exception
            will be thrown.
:type key: str
:param label: The name to give this key.  This is purely aesthetic.
:type label: str

:returns: The newly uploaded SSH Key
:rtype: SSHKey
:raises ValueError: If the key provided does not appear to be valid, and
                    does not appear to be a path to a valid key.