diff options
author | lloyd <[email protected]> | 2009-04-01 14:03:44 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2009-04-01 14:03:44 +0000 |
commit | 2b29873755132035d2d600dc4e2b42ef42691c16 (patch) | |
tree | 2745f73bcaf912dd5335dd27a8dfebbef8ebff08 /src/block/gost_28147 | |
parent | af758d874a01db6c2c20d9cbcbe508e871ace3a2 (diff) |
Hide the declarations of the GOST sboxes inside the Param constructor since
that is the only code that needs to see them. Record the name in the Param
object.
Diffstat (limited to 'src/block/gost_28147')
-rw-r--r-- | src/block/gost_28147/gost_28147.cpp | 45 | ||||
-rw-r--r-- | src/block/gost_28147/gost_28147.h | 6 |
2 files changed, 26 insertions, 25 deletions
diff --git a/src/block/gost_28147/gost_28147.cpp b/src/block/gost_28147/gost_28147.cpp index 3f975f4dc..18fd38d30 100644 --- a/src/block/gost_28147/gost_28147.cpp +++ b/src/block/gost_28147/gost_28147.cpp @@ -17,8 +17,28 @@ byte GOST_28147_89_Params::sbox_entry(u32bit row, u32bit col) const return (row % 2 == 0) ? (x >> 4) : (x & 0x0F); } -GOST_28147_89_Params::GOST_28147_89_Params(const std::string& name) +GOST_28147_89_Params::GOST_28147_89_Params(const std::string& n) : name(n) { + // Encoded in the packed fromat from RFC 4357 + + // GostR3411_94_TestParamSet (OID 1.2.643.2.2.31.0) + static const byte GOST_R_3411_TEST_PARAMS[64] = { + 0x4E, 0x57, 0x64, 0xD1, 0xAB, 0x8D, 0xCB, 0xBF, 0x94, 0x1A, 0x7A, + 0x4D, 0x2C, 0xD1, 0x10, 0x10, 0xD6, 0xA0, 0x57, 0x35, 0x8D, 0x38, + 0xF2, 0xF7, 0x0F, 0x49, 0xD1, 0x5A, 0xEA, 0x2F, 0x8D, 0x94, 0x62, + 0xEE, 0x43, 0x09, 0xB3, 0xF4, 0xA6, 0xA2, 0x18, 0xC6, 0x98, 0xE3, + 0xC1, 0x7C, 0xE5, 0x7E, 0x70, 0x6B, 0x09, 0x66, 0xF7, 0x02, 0x3C, + 0x8B, 0x55, 0x95, 0xBF, 0x28, 0x39, 0xB3, 0x2E, 0xCC }; + + // GostR3411-94-CryptoProParamSet (OID 1.2.643.2.2.31.1) + static const byte GOST_R_3411_CRYPTOPRO_PARAMS[64] = { + 0xA5, 0x74, 0x77, 0xD1, 0x4F, 0xFA, 0x66, 0xE3, 0x54, 0xC7, 0x42, + 0x4A, 0x60, 0xEC, 0xB4, 0x19, 0x82, 0x90, 0x9D, 0x75, 0x1D, 0x4F, + 0xC9, 0x0B, 0x3B, 0x12, 0x2F, 0x54, 0x79, 0x08, 0xA0, 0xAF, 0xD1, + 0x3E, 0x1A, 0x38, 0xC7, 0xB1, 0x81, 0xC6, 0xE6, 0x56, 0x05, 0x87, + 0x03, 0x25, 0xEB, 0xFE, 0x9C, 0x6D, 0xF8, 0x6D, 0x2E, 0xAB, 0xDE, + 0x20, 0xBA, 0x89, 0x3C, 0x92, 0xF8, 0xD3, 0x53, 0xBC }; + if(name == "R3411_94_TestParam") sboxes = GOST_R_3411_TEST_PARAMS; else if(name == "R3411_CryptoPro") @@ -27,30 +47,11 @@ GOST_28147_89_Params::GOST_28147_89_Params(const std::string& name) throw Invalid_Argument("GOST_28147_89_Params: Unknown " + name); } -// Encoded in the packed fromat from RFC 4357 - -// GostR3411_94_TestParamSet (OID 1.2.643.2.2.31.0) -const byte GOST_28147_89_Params::GOST_R_3411_TEST_PARAMS[64] = { - 0x4E, 0x57, 0x64, 0xD1, 0xAB, 0x8D, 0xCB, 0xBF, 0x94, 0x1A, 0x7A, - 0x4D, 0x2C, 0xD1, 0x10, 0x10, 0xD6, 0xA0, 0x57, 0x35, 0x8D, 0x38, - 0xF2, 0xF7, 0x0F, 0x49, 0xD1, 0x5A, 0xEA, 0x2F, 0x8D, 0x94, 0x62, - 0xEE, 0x43, 0x09, 0xB3, 0xF4, 0xA6, 0xA2, 0x18, 0xC6, 0x98, 0xE3, - 0xC1, 0x7C, 0xE5, 0x7E, 0x70, 0x6B, 0x09, 0x66, 0xF7, 0x02, 0x3C, - 0x8B, 0x55, 0x95, 0xBF, 0x28, 0x39, 0xB3, 0x2E, 0xCC }; - -// GostR3411-94-CryptoProParamSet (OID 1.2.643.2.2.31.1) -const byte GOST_28147_89_Params::GOST_R_3411_CRYPTOPRO_PARAMS[64] = { - 0xA5, 0x74, 0x77, 0xD1, 0x4F, 0xFA, 0x66, 0xE3, 0x54, 0xC7, 0x42, - 0x4A, 0x60, 0xEC, 0xB4, 0x19, 0x82, 0x90, 0x9D, 0x75, 0x1D, 0x4F, - 0xC9, 0x0B, 0x3B, 0x12, 0x2F, 0x54, 0x79, 0x08, 0xA0, 0xAF, 0xD1, - 0x3E, 0x1A, 0x38, 0xC7, 0xB1, 0x81, 0xC6, 0xE6, 0x56, 0x05, 0x87, - 0x03, 0x25, 0xEB, 0xFE, 0x9C, 0x6D, 0xF8, 0x6D, 0x2E, 0xAB, 0xDE, - 0x20, 0xBA, 0x89, 0x3C, 0x92, 0xF8, 0xD3, 0x53, 0xBC }; - /* * GOST Constructor */ -GOST_28147_89::GOST_28147_89(const GOST_28147_89_Params& param) : BlockCipher(8, 32) +GOST_28147_89::GOST_28147_89(const GOST_28147_89_Params& param) : + BlockCipher(8, 32) { for(size_t i = 0; i != 4; ++i) for(size_t j = 0; j != 256; ++j) diff --git a/src/block/gost_28147/gost_28147.h b/src/block/gost_28147/gost_28147.h index 98eaba870..96d24c669 100644 --- a/src/block/gost_28147/gost_28147.h +++ b/src/block/gost_28147/gost_28147.h @@ -25,6 +25,8 @@ class GOST_28147_89_Params public: byte sbox_entry(u32bit row, u32bit col) const; + std::string param_name() const { return name; } + /** * Default GOST parameters are the ones given in GOST R 34.11 for * testing purposes; these sboxes are also used by Crypto++, and, @@ -32,10 +34,8 @@ class GOST_28147_89_Params */ GOST_28147_89_Params(const std::string& name = "R3411_94_TestParam"); private: - static const byte GOST_R_3411_TEST_PARAMS[64]; - static const byte GOST_R_3411_CRYPTOPRO_PARAMS[64]; - const byte* sboxes; + std::string name; }; /** |