Skip to content

Latest commit

 

History

History
executable file
·
181 lines (112 loc) · 4.09 KB

gostpbkdf.rst

File metadata and controls

executable file
·
181 lines (112 loc) · 4.09 KB

API of the 'gostcrypto.gostpbkdf' module

Introduction

The module implementing the password-based key derivation function in accordance with R 50.1.111-2016. The module includes the R5011112016 and GOSTPBKDFError classes and the new function.

Functions

new(password, **kwargs)

Creates a new object for the password-based key derivation function and returns it.

import gostcrypto

password = b'password'
salt = b'salt'

pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)

Arguments:

  • password - password that is a character string in Unicode UTF-8 encoding.

Keyword arguments:

  • salt - random value. If this argument is not passed to the function, the os.urandom function is used to generate this value with the length of the generated value of 32 bytes.
  • counter - number of iterations. The default value is 1000.

Return:

  • New object for the password-based key derivation function (as an instance of the R5011112016 class).

Exception:

  • GOSTPBKDFError(invalid password value') - if the password value is incorrect.
  • GOSTPBKDFError('invalid salt value') - if the salt value is incorrect.

Classes

R5011112016

Class that implementing the calculating the password-based key derivation function in accordance with R 50.1.111-2016.

Methods:

derive(dk_len)

Returns a derived key (as a byte object).

import gostcrypto

password = b'password'
salt = b'salt'

pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_result = pbkdf_obj.derive(32)

Arguments:

  • dk_len - Required length of the output sequence (in bytes).

Return:

  • The derived key (as a byte object).

Exception:

  • GOSTPBKDFError('invalid size of the derived key') - in case of invalid size of the derived key.

hexderive(dk_len)

Returns a derived key (as a hexadecimal string).

import gostcrypto

password = b'password'
salt = b'salt'

pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_result = pbkdf_obj.hexderive(32)

Arguments:

  • dk_len - Required length of the output sequence (in bytes).

Return:

  • The derived key (as a hexadecimal string).

Exception:

  • GOSTPBKDFError('invalid size of the derived key') - in case of invalid size of the derived key.

clear()

Сlears the password value.

import gostcrypto

password = b'password'
salt = b'salt'

pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_obj.clear()

Attributes:

salt

The byte object containing a random value (salt). Required when generating the salt value using os.urandom.

import gostcrypto

password = b'password'

pbkdf_obj = gostcrypto.gostpbkdf.new(password)
salt = pbkdf_obj.salt

GOSTPBKDFError

The class that implements exceptions.

import gostcrypto

password = b'password'
salt = b'salt'

try: 
    pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
    pbkdf_result = pbkdf_obj.hexderive(32)
except gostcrypto.gostpbkdf.GOSTPBKDFError as err:
    print(err)
else:
    print(pbkdf_result)

Exception types:

  • invalid password value - if the password value is incorrect.
  • invalid salt value - if the salt value is incorrect.
  • invalid size of the derived key - if the size of the derived key is incorrect.

Example of use

import gostcrypto

password = b'password'
salt = b'salt'

pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=4096)
pbkdf_result = pbkdf_obj.derive(32)