aboutsummaryrefslogtreecommitdiffstats
path: root/src/block/gost_28147
diff options
context:
space:
mode:
authorlloyd <[email protected]>2009-04-01 14:03:44 +0000
committerlloyd <[email protected]>2009-04-01 14:03:44 +0000
commit2b29873755132035d2d600dc4e2b42ef42691c16 (patch)
tree2745f73bcaf912dd5335dd27a8dfebbef8ebff08 /src/block/gost_28147
parentaf758d874a01db6c2c20d9cbcbe508e871ace3a2 (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.cpp45
-rw-r--r--src/block/gost_28147/gost_28147.h6
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;
};
/**