{"id":38522899,"url":"https://github.com/drobotun/gostcrypto","last_synced_at":"2026-01-17T06:43:35.242Z","repository":{"id":57435453,"uuid":"253648045","full_name":"drobotun/gostcrypto","owner":"drobotun","description":"GOST cryptographic functions","archived":false,"fork":false,"pushed_at":"2021-10-17T09:15:12.000Z","size":1238,"stargazers_count":46,"open_issues_count":1,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-27T04:26:44.645Z","etag":null,"topics":["block-cipher","cipher-algorithms","cryptography","elliptic-curve-cryptography","elliptic-curves","gost-r-34-10-2012","gost-r-34-11-2012","gost-r-34-12-2015","gost-r-34-13-2015","hash-functions","hashing-algorithm","hmac","kuznechik","magma","oid","pbkdf","python","signature","streebog"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drobotun.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-07T00:31:49.000Z","updated_at":"2025-10-03T04:31:05.000Z","dependencies_parsed_at":"2022-09-19T08:10:20.731Z","dependency_job_id":null,"html_url":"https://github.com/drobotun/gostcrypto","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/drobotun/gostcrypto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drobotun%2Fgostcrypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drobotun%2Fgostcrypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drobotun%2Fgostcrypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drobotun%2Fgostcrypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drobotun","download_url":"https://codeload.github.com/drobotun/gostcrypto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drobotun%2Fgostcrypto/sbom","scorecard":{"id":356493,"data":{"date":"2025-08-11","repo":{"name":"github.com/drobotun/gostcrypto","commit":"1590311620d6d03d1d8e1b6abe1966da4c8550ed"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact ver_1.2.5 not signed: https://api.github.com/repos/drobotun/gostcrypto/releases/49028241","Warn: release artifact ver_1.2.4 not signed: https://api.github.com/repos/drobotun/gostcrypto/releases/31491242","Warn: release artifact ver_1.2.3 not signed: https://api.github.com/repos/drobotun/gostcrypto/releases/31484685","Warn: release artifact ver_1.2.2 not signed: https://api.github.com/repos/drobotun/gostcrypto/releases/26604792","Warn: release artifact ver_1.1.2 not signed: https://api.github.com/repos/drobotun/gostcrypto/releases/26119067","Warn: release artifact ver_1.2.5 does not have provenance: https://api.github.com/repos/drobotun/gostcrypto/releases/49028241","Warn: release artifact ver_1.2.4 does not have provenance: https://api.github.com/repos/drobotun/gostcrypto/releases/31491242","Warn: release artifact ver_1.2.3 does not have provenance: https://api.github.com/repos/drobotun/gostcrypto/releases/31484685","Warn: release artifact ver_1.2.2 does not have provenance: https://api.github.com/repos/drobotun/gostcrypto/releases/26604792","Warn: release artifact ver_1.1.2 does not have provenance: https://api.github.com/repos/drobotun/gostcrypto/releases/26119067"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-18T09:44:07.460Z","repository_id":57435453,"created_at":"2025-08-18T09:44:07.460Z","updated_at":"2025-08-18T09:44:07.460Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28502819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["block-cipher","cipher-algorithms","cryptography","elliptic-curve-cryptography","elliptic-curves","gost-r-34-10-2012","gost-r-34-11-2012","gost-r-34-12-2015","gost-r-34-13-2015","hash-functions","hashing-algorithm","hmac","kuznechik","magma","oid","pbkdf","python","signature","streebog"],"created_at":"2026-01-17T06:43:34.715Z","updated_at":"2026-01-17T06:43:35.235Z","avatar_url":"https://github.com/drobotun.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"GOST cryptographic functions\n=============================\n\n.. image:: https://img.shields.io/github/license/drobotun/virustotalapi3?style=flat\n    :target: http://doge.mit-license.org\n.. image:: https://travis-ci.com/drobotun/gostcrypto.svg?branch=master\n    :target: https://travis-ci.com/github/drobotun/gostcrypto\n.. image:: https://ci.appveyor.com/api/projects/status/3inl1huy5unq1q60?svg=true\n    :target: https://ci.appveyor.com/project/drobotun/gostcrypto\n.. image:: https://img.shields.io/coveralls/github/drobotun/gostcrypto\n    :target: https://coveralls.io/github/drobotun/gostcrypto\n.. image:: https://api.codacy.com/project/badge/Grade/774f6fd50f224286ac1e566d752bd9c6\n    :target: https://app.codacy.com/manual/drobotun/gostcrypto/dashboard\n.. image:: https://readthedocs.org/projects/gostcrypto/badge/?version=latest\n    :target: https://gostcrypto.readthedocs.io/en/latest/?badge=latest\n.. image:: https://img.shields.io/pypi/pyversions/gostcrypto.svg?logo=python\u0026logoColor=FBE072\n    :target: https://pypi.org/project/gostcrypto/\n.. image:: https://img.shields.io/pypi/v/gostcrypto\n    :target: https://pypi.org/project/gostcrypto/\n.. image:: https://img.shields.io/pypi/format/gostcrypto\n    :target: https://pypi.org/project/gostcrypto/\n.. image:: https://zenodo.org/badge/253648045.svg\n    :target: https://zenodo.org/badge/latestdoi/253648045\n\nThe package implements various cryptographic functions defined in the State standards of the Russian Federation. It includes the following modules:\n\n- **gosthash**: The module implements functions for calculating hash amounts in accordance with GOST R 34.11-2012.\n- **gostcipher**: The module implements block encryption functions in accordance with GOST R 34.12-2015 and their use modes in accordance with GOST R 34.13-2015.\n- **gostsignature**: The module implements the functions of forming and verifying an electronic digital signature in accordance with GOST R 34.10-2012.\n- **gostrandom**: The module implements functions for generating pseudo-random sequences in accordance with R 1323565.1.006-2017.\n- **gosthmac**: The module implements the functions of calculating the HMAC message authentication code in accordance with R 50.1.113-2016.\n- **gostpbkdf**: The module implements the password-based key derivation function in accordance with R 50.1.111-2016.\n- **gostoid**: The module implements generating identifiers for cryptographic objects.\n\nInstallation\n\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: bash\n\n    $ pip install gostcrypto\n\nUsage gosthash module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nGetting a hash for a string\n---------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    hash_string = u'Се ветри, Стрибожи внуци, веютъ с моря стрелами на храбрыя плъкы Игоревы'.encode('cp1251')\n    hash_obj = gostcrypto.gosthash.new('streebog256', data=hash_string)\n    hash_result = hash_obj.hexdigest()\n\nGetting a hash for a file\n-------------------------\n\nIn this case the 'buffer_size' value must be a multiple of the 'block_size' value.\n\n.. code-block:: python\n\n    import gostcrypto\n\n    file_path = 'hash_file.txt'\n    buffer_size = 128\n    hash_obj = gostcrypto.gosthash.new('streebog512')\n    with open(file_path, 'rb') as file:\n        buffer = file.read(buffer_size)\n        while len(buffer) \u003e 0:\n            hash_obj.update(buffer)\n            buffer = file.read(buffer_size)\n    hash_result = hash_obj.hexdigest()\n\nGetting the name identifier of the hashing algorithm object\n-----------------------------------------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    hash_obj = gostcrypto.gosthash.new('streebog512')\n    oid_name = hash_obj.oid.name\n\nUsage gostcipher module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nString encryption in ECB mode\n-----------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray([\n        0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,\n        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,\n    ])\n\n    plain_text = bytearray([\n        0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,\n        0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a,\n        0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a, 0x00,\n        0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a, 0x00, 0x11,\n    ])\n\n    cipher_obj = gostcrypto.gostcipher.new('kuznechik',\n                                            key,\n                                            gostcrypto.gostcipher.MODE_ECB,\n                                            pad_mode=gostcrypto.gostcipher.PAD_MODE_1)\n\n    cipher_text = cipher_obj.encrypt(plain_text)\n\nFile encryption in CTR mode\n---------------------------\n\nIn this case the 'buffer_size' value must be a multiple of the 'block_size' value.\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray([\n        0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,\n        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,\n    ])\n\n    init_vect = bytearray([\n        0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0,\n    ])\n\n    plain_file_path = 'plain_file.txt'\n    cipher_file_path = 'cipher_file.txt'\n    cipher_obj = gostcrypto.gostcipher.new('kuznechik',\n                                            key,\n                                            gostcrypto.gostcipher.MODE_CTR,\n                                            init_vect=init_vect)\n\n    buffer_size = 128\n\n    plain_file = open(plain_file_path, 'rb')\n    cipher_file = open(cipher_file_path, 'wb')\n    buffer = plain_file.read(buffer_size)\n    while len(buffer) \u003e 0:\n        cipher_data = cipher_obj.encrypt(buffer)\n        cipher_file.write(cipher_data)\n        buffer = plain_file.read(buffer_size))\n\nCalculating MAC of the file\n---------------------------\n\nIn this case the 'buffer_size' value must be a multiple of the 'block_size' value.\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray([\n        0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,\n        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,\n    ])\n\n    plain_file_path = 'plain_file.txt'\n    cipher_obj = gostcrypto.gostcipher.new('kuznechik',\n                                            key,\n                                            gostcrypto.gostcipher.MODE_MAC)\n\n    buffer_size = 128\n\n    plain_file = open(plain_file_path, 'rb')\n    buffer = plain_file.read(buffer_size)\n    while len(buffer) \u003e 0:\n        cipher_obj.update(buffer)\n        buffer = plain_file.read(buffer_size)\n    mac_result = cipher_obj.digest(8)\n\nUsage gostsignature module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nSigning\n-------\n\n.. code-block :: python\n\n    import gostcrypto\n\n    private_key = bytearray.fromhex('7a929ade789bb9be10ed359dd39a72c11b60961f49397eee1d19ce9891ec3b28')\n    digest = bytearray.fromhex('2dfbc1b372d89a1188c09c52e0eec61fce52032ab1022e8e67ece6672b043ee5')\n\n    sign_obj = gostcrypto.gostsignature.new(gostcrypto.gostsignature.MODE_256,\n                                            gostcrypto.gostsignature.CURVES_R_1323565_1_024_2019['id-tc26-gost-3410-2012-256-paramSetB'])\n    \n    signature = sign_obj.sign(private_key, digest)\n\nVerify\n------\n\n.. code-block:: python\n\n    public_key = bytearray.fromhex('fd21c21ab0dc84c154f3d218e9040bee64fff48bdff814b232295b09d0df72e45026dec9ac4f07061a2a01d7a2307e0659239a82a95862df86041d1458e45049')\n    digest = bytearray.fromhex('2dfbc1b372d89a1188c09c52e0eec61fce52032ab1022e8e67ece6672b043ee5')\n    signature = bytearray.fromhex('4b6dd64fa33820e90b14f8f4e49ee92eb2660f9eeb4e1b313517b6ba173979656df13cd4bceaf606ed32d410f48f2a5c2596c146e8c2fa4455d08cf68fc2b2a7')\n\n    sign_obj = gostcrypto.gostsignature.new(gostcrypto.gostsignature.MODE_256,\n                                            gostcrypto.gostsignature.CURVES_R_1323565_1_024_2019['id-tc26-gost-3410-2012-256-paramSetB'])\n\n    if sign_obj.verify(public_key, digest, signature):\n        print('Signature is correct')\n    else:\n        print('Signature is not correct')\n\nGenerating a public key\n-----------------------\n\n.. code-block:: python\n\n    private_key = bytearray.fromhex('7a929ade789bb9be10ed359dd39a72c11b60961f49397eee1d19ce9891ec3b28')\n\n    sign_obj = gostcrypto.gostsignature.new(gostcrypto.gostsignature.MODE_256,\n                                            gostcrypto.gostsignature.CURVES_R_1323565_1_024_2019['id-tc26-gost-3410-2012-256-paramSetB'])\n\n    public_key = sign_obj.public_key_generate(private_key)\n\nGetting the identifier of the signature mode object name\n--------------------------------------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    sign_obj = gostcrypto.gostsignature.new(gostcrypto.gostsignature.MODE_256,\n        gostcrypto.gostsignature.CURVES_R_1323565_1_024_2019['id-tc26-gost-3410-2012-256-paramSetB'])\n    oid_name = sign_obj.oid.name\n\nUsage gostrandom module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: python\n\n    import gostcrypto\n\n    rand_k = bytearray([\n        0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,\n        0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,\n        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,\n        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,\n    ])\n\n    random_obj = gostcrypto.gostrandom.new(32,\n                                       rand_k=rand_k,\n                                       size_s=gostcrypto.gostrandom.SIZE_S_256)\n    random_result = random_obj.random()\n    random_obj.clear()\n\nUsage gosthmac module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nGetting a HMAC for a string\n---------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray.fromhex('000102030405060708090a0b0c0d0e0f1011121315161718191a1b1c1d1e1f')\n    data = bytearray.fromhex('0126bdb87800af214341456563780100')\n\n    hmac_obj = gostcrypto.gosthmac.new('HMAC_GOSTR3411_2012_256', key, data=data)\n    hmac_result = hmac_obj.digest()\n\nGetting a HMAC for a file\n-------------------------\n\nIn this case the 'buffer_size' value must be a multiple of the 'block_size' value.\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray.fromhex('000102030405060708090a0b0c0d0e0f1011121315161718191a1b1c1d1e1f')\n    data = bytearray.fromhex('0126bdb87800af214341456563780100')\n\n    hmac_obj = gostcrypto.gosthmac.new('HMAC_GOSTR3411_2012_256', key, data=data)\n    hmac_result = hmac_obj.digest()\n\nGetting the name identifier of the HMAC algorithm object\n--------------------------------------------------------\n\n.. code-block:: python\n\n    import gostcrypto\n\n    key = bytearray.fromhex('000102030405060708090a0b0c0d0e0f1011121315161718191a1b1c1d1e1f')\n    hmac_obj = gostcrypto.gosthmac.new('HMAC_GOSTR3411_2012_256', key)\n    oid_name = hmac_obj.oid.name\n\nUsage gostpbkdf module\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: python\n\n    import gostcrypto\n\n    password = b'password'\n    salt = b'salt'\n\n    pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=4096)\n    pbkdf_result = pbkdf_obj.derive(32)\n\nLicense\n\"\"\"\"\"\"\"\n\nMIT Copyright (c) 2020 Evgeny Drobotun\n\nDocumentation\n\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nDocumentation for using this package: https://gostcrypto.readthedocs.io/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrobotun%2Fgostcrypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrobotun%2Fgostcrypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrobotun%2Fgostcrypto/lists"}