Skip to main content

A library for secure password handling.

Project description

CryptoLibrary is a library for secure password handling. project page

For more information about Robot Framework, see http://robotframework.org.

Keyword Documentation


Installation

If you already have Python >= 3.6 with pip installed, you can simply run:

pip install --upgrade robotframework-crypto

or if you have Python 2 and 3 installed in parallel you may use

pip3 install --upgrade robotframework-crypto

If you have Python 2 … i am very sorry! Please update!


How it works

CryptoLibrary uses asymmetric crypto with elliptic curve cryptography to store confidential data securely.

With python -m CryptoLibrary you can generate a key pair (private and public key) for your test env. You will get the public key after generating.

this public key can now be used to encrypt every data you do not want to be public. Passwords, personal data, etc.

you can use python -m CryptoClient on you computer where you want to encrypt data. Encrypted Data will look like this:

crypt:tIdr5s65+ggfJZl46pJgljioCUePUdZLozgiwquznw+xSlmzT3dcvfrTL9wIdRwmNOJuONT7FBW5

this encrypted data can now be decrypted with CryptoLibrary within RobotFramework.

CryptoLibrary need the private_key_store.json for this. This is what is generated as key pair. Private key can be imported in test env with python -m CryptoLibrary .


Suppressing encrypted Text from Logs

All Data that is decrypted by CryptoLibrary is replaced in the log by *** This works always and can not be disabled. No need to use special keywords for this.


Usage in Test

*** Settings ***
Resource    imports.resource
Library     CryptoLibrary    %{private_key_password}    variable_decryption=False
#private key which should be secret, should also be protected by a password

*** Variables ***
${secret}=     KILL ALL HUMANS!!!
${enc_user}=   crypt:nkpEPOVKfOko3t04XxOupA+F/ANTEuR9aQuPaPeMBGBQenwYf6UNESEl9MWRKGuj60ZWd10=
${enc_pwd}=    crypt:TVpamLXCtrzRsl8UAgD0YuoY+lSJNV73+bTYhOP51zM1GQihgyCvSZ2CoGoKsUHLFjokyJLHxFzPEB4=

*** Test Cases ***
Valid Login
    Open Browser    ${BASE-URL}
    Suppress Logging                                  #disable Robot Framework logging
    ${var}=    set Variable   ${secret}
    Log    ${var}
    Unsuppress Logging                                #enable Robot Framework logging
    ${user}=    Get Decrypted Text    ${enc_user}     #decrypts cipher text and returns plain text
    Input Text      id:input_username    ${user}
    ${password}=    Get Decrypted Text    ${enc_pwd}  #decrypts cipher text and returns plain text
    Input Password    id:input_password    ${password}
    Click Button    id:button_login
    Page Should Contain Element    //a[text()='Logout']
    [Teardown]   Close Browser

in this case the decryption password for the private key. It can also be saved on test env persistently as a hash.

The parameter variable_decryption in the Library call, if set to true it will automatically decode ALL passwords defined in the variables section and then "Get Decrypted Text" isn’t needed.


Importing of CryptoLibrary

password:

Password for private key can be given as argument. This should be stored as secret! Use environment variables instead of hard coding it here.

variable_decryption:

If set to True all variables that are available on Test Suite or on Test Case start, that contain a encrypted text, will be decrypted automatically.

key_path:

A path that defines where the key pair is stored physically. Path needs to be an absolute path or relative to cryptoutility.py.


SeleniumLibrary Plugin

CryptoLibrary.Plugin is a SeleniumLibrary Plugin. When taken into usage, the Input Password Keyword can now handle decrypted cipher texts as well.

Example:

*** Settings ***
Library    SeleniumLibrary    plugins=CryptoLibrary.Plugin


*** Variables ***
${Admins-Password}=    crypt:fQ5Iqn/j2lN8rXwimyz0JXlYzD0gTsPRwb0YJ3YSvDchkvDpfwYDmhHxsZ2i7bIQDlsWKJVhBb+Dz4w=


*** Test Cases ***
Decrypt as Plugin
    Open Browser      http://www.keyword-driven.de
    Input Text        input_username    admin
    Input Password    input_password    ${Admins-Password}

This is still a Proof of Concept !!11!!1 ;-)

It may happen that keywords changes. i try not to do, but it can happen. Feel free to make a pull Request to improve docs or write some tests for it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework-crypto-0.2.4.tar.gz (69.4 kB view details)

Uploaded Source

Built Distribution

robotframework_crypto-0.2.4-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file robotframework-crypto-0.2.4.tar.gz.

File metadata

  • Download URL: robotframework-crypto-0.2.4.tar.gz
  • Upload date:
  • Size: 69.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.8.0

File hashes

Hashes for robotframework-crypto-0.2.4.tar.gz
Algorithm Hash digest
SHA256 33795c3ec20717ad4b4d811111dccf109f382660de13cb5878d4910cdf97cee1
MD5 03b7bb12da0f4c43670c117b6f46bb25
BLAKE2b-256 a7990e3bbd0099830f6ee9ffa47ae8828a905143de5778499969990c31e5f7af

See more details on using hashes here.

Provenance

File details

Details for the file robotframework_crypto-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: robotframework_crypto-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.8.0

File hashes

Hashes for robotframework_crypto-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6e0205b9a76d8e39a5056608b4953557507c57b19953504f31137cc4fc293314
MD5 7c5917b33e4646e7af97451fa3e5677d
BLAKE2b-256 4713f3c398c123972ede61dadfe25614e23550beef8611e68fb41aae967ffd13

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page