Skip to content

Commit

Permalink
Add GOST 34.311-95 28147-89 UA version (#377)
Browse files Browse the repository at this point in the history
  • Loading branch information
IvashchenkoSerhii authored May 26, 2022
1 parent dfcfb21 commit 9125a4b
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions gost94/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.10.2 (2022-05-25)
### Added
- Gost 34.311-95 28147-89 UA version 1.2.804.2.1.1.1.1.2.1 OID ([#377])

[#377]: https://github.com/RustCrypto/hashes/pull/377

## 0.10.1 (2022-02-17)
### Fixed
- Minimal versions build ([#363])
Expand Down
2 changes: 1 addition & 1 deletion gost94/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gost94"
version = "0.10.1" # Also update html_root_url in lib.rs when bumping this
version = "0.10.2" # Also update html_root_url in lib.rs when bumping this
description = "GOST R 34.11-94 hash function"
authors = ["RustCrypto Developers"]
license = "MIT OR Apache-2.0"
Expand Down
5 changes: 4 additions & 1 deletion gost94/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#![doc(
html_logo_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg",
html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg",
html_root_url = "https://docs.rs/gost94/0.10.1"
html_root_url = "https://docs.rs/gost94/0.10.2"
)]
#![warn(missing_docs, rust_2018_idioms)]
#![forbid(unsafe_code)]
Expand All @@ -52,3 +52,6 @@ pub type Gost94CryptoPro = CoreWrapper<Gost94Core<params::CryptoProParam>>;
pub type Gost94s2015 = CoreWrapper<Gost94Core<params::S2015Param>>;
/// GOST94 hash function with test parameters.
pub type Gost94Test = CoreWrapper<Gost94Core<params::TestParam>>;
/// GOST94 hash function with UAPKI GOST 34.311-95 parameters
/// (1.2.804.2.1.1.1.1.2.1 OID).
pub type Gost94UA = CoreWrapper<Gost94Core<params::GOST28147UAParam>>;
19 changes: 19 additions & 0 deletions gost94/src/params.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,22 @@ impl Gost94Params for TestParam {
const H0: Block = [0; 32];
const NAME: &'static str = "Gost94Test";
}

/// S-Box defined in GOST 34.311-95 & GOST 28147:2009.
#[derive(Copy, Clone, Default)]
pub struct GOST28147UAParam;

impl Gost94Params for GOST28147UAParam {
const S_BOX: SBox = [
[10, 9, 13, 6, 14, 11, 4, 5, 15, 1, 3, 12, 7, 0, 8, 2],
[8, 0, 12, 4, 9, 6, 7, 11, 2, 3, 1, 15, 5, 14, 10, 13],
[15, 6, 5, 8, 14, 11, 10, 4, 12, 0, 3, 7, 2, 9, 1, 13],
[3, 8, 13, 9, 6, 11, 15, 0, 2, 5, 12, 10, 4, 14, 1, 7],
[15, 8, 14, 9, 7, 2, 0, 13, 12, 6, 1, 5, 11, 4, 3, 10],
[2, 8, 9, 7, 5, 15, 0, 11, 12, 1, 13, 14, 10, 3, 6, 4],
[3, 8, 11, 5, 6, 4, 14, 10, 2, 12, 1, 7, 9, 15, 13, 0],
[1, 2, 3, 14, 6, 13, 11, 8, 15, 10, 12, 5, 7, 9, 0, 4],
];
const H0: Block = [0; 32];
const NAME: &'static str = "Gost28147UA";
}
12 changes: 11 additions & 1 deletion gost94/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use digest::dev::{feed_rand_16mib, fixed_reset_test};
use digest::new_test;
use gost94::{Digest, Gost94CryptoPro, Gost94Test};
use gost94::{Digest, Gost94CryptoPro, Gost94Test, Gost94UA};
use hex_literal::hex;

new_test!(gost94_test_main, "test", Gost94Test, fixed_reset_test);
Expand Down Expand Up @@ -81,3 +81,13 @@ fn arithmetic_overflow_regression() {
h.update(&include_bytes!("data/arithmetic_overflow.bin")[..]);
h.finalize().as_slice();
}

#[test]
fn gost_ua_engine_tests() {
let mut h = Gost94UA::new();
h.update(b"test");
assert_eq!(
h.finalize_reset().as_slice(),
hex!("7c536414f8b5b9cc649fdf3cccb2685c1a12622956308e34f31c50ed7b3af56c"),
);
}

0 comments on commit 9125a4b

Please sign in to comment.