Skip to content

Commit

Permalink
experimental GOST2012 support (patch from Nikolay Shaplov)
Browse files Browse the repository at this point in the history
  • Loading branch information
lsh123 committed Oct 23, 2014
1 parent bed976a commit 0606b74
Show file tree
Hide file tree
Showing 17 changed files with 982 additions and 19 deletions.
22 changes: 20 additions & 2 deletions configure.in
Original file line number Diff line number Diff line change
Expand Up @@ -1325,7 +1325,7 @@ AC_SUBST(XMLSEC_NO_AES)
dnl ==========================================================================
dnl See do we need GOST support
dnl ==========================================================================
AC_MSG_CHECKING(for GOST support)
AC_MSG_CHECKING(for GOST support)
AC_ARG_ENABLE(gost, [ --enable-gost enable GOST support (no)])
if test "z$enable_gost" != "zyes" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST=1"
Expand All @@ -1334,10 +1334,28 @@ if test "z$enable_gost" != "zyes" ; then
else
XMLSEC_NO_GOST="0"
AC_MSG_RESULT(yes)
fi
fi
AM_CONDITIONAL(XMLSEC_NO_GOST, test "z$XMLSEC_NO_GOST" = "z1")
AC_SUBST(XMLSEC_NO_GOST)


dnl ==========================================================================
dnl See do we need GOST2012 support
dnl ==========================================================================
AC_MSG_CHECKING(for EXPERMIENTAL GOST2012 support)
AC_ARG_ENABLE(gost, [ --enable-gost2012 enable EXPERMIENTAL GOST2012 support (no)])
if test "z$enable_gost2012" != "zyes" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST2012=1"
XMLSEC_NO_GOST2012="1"
AC_MSG_RESULT(no)
else
XMLSEC_NO_GOST2012="0"
AC_MSG_RESULT(yes)
fi
AM_CONDITIONAL(XMLSEC_NO_GOST2012, test "z$XMLSEC_NO_GOST2012" = "z1")
AC_SUBST(XMLSEC_NO_GOST2012)


dnl ==========================================================================
dnl See do we need XMLDSig support
dnl ==========================================================================
Expand Down
45 changes: 45 additions & 0 deletions include/xmlsec/app.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@ XMLSEC_EXPORT xmlSecKeyDataId xmlSecKeyDataEcdsaGetKlass
*/
#define xmlSecKeyDataGost2001Id xmlSecKeyDataGost2001GetKlass()
XMLSEC_EXPORT xmlSecKeyDataId xmlSecKeyDataGost2001GetKlass (void);
/**
* xmlSecKeyDataGostR3410_2012_256Id:
*
* The GOST R 34.10-2012 256 bit key klass.
*/
#define xmlSecKeyDataGostR3410_2012_256Id xmlSecKeyDataGostR3410_2012_256GetKlass()
XMLSEC_EXPORT xmlSecKeyDataId xmlSecKeyDataGostR3410_2012_256GetKlass (void);
/**
* xmlSecKeyDataGostR3410_2012_512Id:
*
* The GOST R 34.10-2012 512 bit key klass.
*/
#define xmlSecKeyDataGostR3410_2012_512Id xmlSecKeyDataGostR3410_2012_512GetKlass()
XMLSEC_EXPORT xmlSecKeyDataId xmlSecKeyDataGostR3410_2012_512GetKlass (void);
/**
* xmlSecKeyDataHmacId:
*
Expand Down Expand Up @@ -240,6 +254,22 @@ XMLSEC_EXPORT xmlSecTransformId xmlSecTransformEcdsaSha512GetKla
#define xmlSecTransformGost2001GostR3411_94Id xmlSecTransformGost2001GostR3411_94GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGost2001GostR3411_94GetKlass (void);

/**
* xmlSecTransformGostR3410_2012GostR3411_2012_256Id:
*
* The GOST R 34.10-2012 - GOST R 34.11-2012 256 bit signature transform klass.
*/
#define xmlSecTransformGostR3410_2012GostR3411_2012_256Id xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass (void);

/**
* xmlSecTransformGostR3410_2012GostR3411_2012_512Id:
*
* The GOST R 34.10-2012 - GOST R 34.11-2012 512 bit signature transform klass.
*/
#define xmlSecTransformGostR3410_2012GostR3411_2012_512Id xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass (void);

/**
* xmlSecTransformHmacMd5Id:
*
Expand Down Expand Up @@ -374,6 +404,21 @@ XMLSEC_EXPORT xmlSecTransformId xmlSecTransformRsaOaepGetKlass
*/
#define xmlSecTransformGostR3411_94Id xmlSecTransformGostR3411_94GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGostR3411_94GetKlass (void);
/**
* xmlSecTransformGostR3411_2012_256Id:
*
* The GOST R 34.11-2012 256 bit digest transform klass.
*/
#define xmlSecTransformGostR3411_2012_256Id xmlSecTransformGostR3411_2012_256GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGostR3411_2012_256GetKlass (void);
/**
* xmlSecTransformGostR3411_2012_512Id:
*
* The GOST R 34.11-2012 512 bit digest transform klass.
*/
#define xmlSecTransformGostR3411_2012_512Id xmlSecTransformGostR3411_2012_512GetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformGostR3411_2012_512GetKlass (void);

/**
* xmlSecTransformSha1Id:
*
Expand Down
73 changes: 71 additions & 2 deletions include/xmlsec/openssl/crypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -276,12 +276,13 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformEcdsaSha512GetKlass

#endif /* XMLSEC_NO_ECDSA */

#ifndef XMLSEC_NO_GOST

/********************************************************************
*
* GOST2001 transform
*
*******************************************************************/
#ifndef XMLSEC_NO_GOST

/**
* xmlSecOpenSSLKeyDataGost2001Id:
Expand Down Expand Up @@ -310,9 +311,77 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGost2001GostR3411_9
#define xmlSecOpenSSLTransformGostR3411_94Id \
xmlSecOpenSSLTransformGostR3411_94GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_94GetKlass(void);

#endif /* XMLSEC_NO_GOST */


#ifndef XMLSEC_NO_GOST2012
/********************************************************************
*
* GOST R 34.10-2012 transform
*
*******************************************************************/

/**
* xmlSecOpenSSLKeyDataGostR4310_2012_256Id:
*
* The GOST R 34.10-2012 256 key klass.
*/
#define xmlSecOpenSSLKeyDataGostR3410_2012_256Id \
xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass (void);


/**
* xmlSecOpenSSLKeyDataGostR4310_2012_512Id:
*
* The GOST R 34.10-2012 512 key klass.
*/
#define xmlSecOpenSSLKeyDataGostR3410_2012_512Id \
xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass (void);


/**
* xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id:
*
* The GOST R 34.10-2012 - GOST R 3411-2012 256 bit signature transform klass.
*/
#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id \
xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass(void);


/**
* xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id:
*
* The GOST R 34.10-2012 - GOST R 3411-2012 512 bit signature transform klass.
*/
#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id \
xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass(void);


/**
* xmlSecOpenSSLTransformGostR3411_2012_256Id:
*
* The GOST R 34.11-2012 256 bit hash transform klass.
*/
#define xmlSecOpenSSLTransformGostR3411_2012_256Id \
xmlSecOpenSSLTransformGostR3411_2012_256GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_2012_256GetKlass(void);


/**
* xmlSecOpenSSLTransformGostR3411_2012_512Id:
*
* The GOST R 34.11-2012 512 bit hash transform klass.
*/
#define xmlSecOpenSSLTransformGostR3411_2012_512Id \
xmlSecOpenSSLTransformGostR3411_2012_512GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_2012_512GetKlass(void);

#endif /* XMLSEC_NO_GOST2012 */

/********************************************************************
*
* HMAC transforms
Expand Down
12 changes: 12 additions & 0 deletions include/xmlsec/private.h
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,8 @@ typedef int (*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSec
* @keyDataDsaGetKlass: the method to get pointer to DSA key data klass.
* @keyDataEcdsaGetKlass: the method to get pointer to ECDSA key data klass.
* @keyDataGost2001GetKlass: the method to get pointer to GOST 2001 key data klass.
* @keyDataGostR3410_2012_256GetKlass: the method to get pointer to GOST R 34.10-2012 256 bit key data klass.
* @keyDataGostR3410_2012_512GetKlass: the method to get pointer to GOST R 34.10-2012 512 bit key data klass.
* @keyDataHmacGetKlass: the method to get pointer to HMAC key data klass.
* @keyDataRsaGetKlass: the method to get pointer to RSA key data klass.
* @keyDataX509GetKlass: the method to get pointer to X509 key data klass.
Expand All @@ -357,6 +359,8 @@ typedef int (*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSec
* @transformEcdsaSha384GetKlass: the method to get pointer to ECDSA-SHA384 signature transform.
* @transformEcdsaSha512GetKlass: the method to get pointer to ECDSA-SHA512 signature transform.
* @transformGost2001GostR3411_94GetKlass: the method to get pointer to GOST2001 transform.
* @transformGostR3410_2012GostR3411_2012_256GetKlass: the method to get pointer to GOST R 34.10-2012 - GOST R 34.11-2012 256bit transform.
* @transformGostR3410_2012GostR3411_2012_512GetKlass: the method to get pointer to GOST R 34.10-2012 - GOST R 34.11_2012 512bit transform.
* @transformHmacMd5GetKlass: the method to get pointer to HMAC-MD5 transform.
* @transformHmacRipemd160GetKlass: the method to get pointer to HMAC-RIPEMD160 transform.
* @transformHmacSha1GetKlass: the method to get pointer to HMAC-SHA1 transform.
Expand All @@ -376,6 +380,8 @@ typedef int (*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSec
* @transformRsaPkcs1GetKlass: the method to get pointer to RSA-PKCS1_5 key transport transform.
* @transformRsaOaepGetKlass: the method to get pointer to RSA-OAEP key transport transform.
* @transformGostR3411_94GetKlass: the method to get pointer to GOST R3411 transform.
* @transformGostR3411_2012_256GetKlass: the method to get pointer to GOST R 34.11-2012 256 bit transform.
* @transformGostR3411_2012_512GetKlass: the method to get pointer to GOST R 34.11-2012 512 bit transform.
* @transformSha1GetKlass: the method to get pointer to SHA1 digest transform.
* @transformSha224GetKlass: the method to get pointer to SHA224 digest transform.
* @transformSha256GetKlass: the method to get pointer to SHA256 digest transform.
Expand Down Expand Up @@ -411,6 +417,8 @@ struct _xmlSecCryptoDLFunctions {
xmlSecCryptoKeyDataGetKlassMethod keyDataDsaGetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataEcdsaGetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataGost2001GetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataGostR3410_2012_256GetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataGostR3410_2012_512GetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataHmacGetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataRsaGetKlass;
xmlSecCryptoKeyDataGetKlassMethod keyDataX509GetKlass;
Expand All @@ -436,6 +444,8 @@ struct _xmlSecCryptoDLFunctions {
xmlSecCryptoTransformGetKlassMethod transformEcdsaSha384GetKlass;
xmlSecCryptoTransformGetKlassMethod transformEcdsaSha512GetKlass;
xmlSecCryptoTransformGetKlassMethod transformGost2001GostR3411_94GetKlass;
xmlSecCryptoTransformGetKlassMethod transformGostR3410_2012GostR3411_2012_256GetKlass;
xmlSecCryptoTransformGetKlassMethod transformGostR3410_2012GostR3411_2012_512GetKlass;
xmlSecCryptoTransformGetKlassMethod transformHmacMd5GetKlass;
xmlSecCryptoTransformGetKlassMethod transformHmacRipemd160GetKlass;
xmlSecCryptoTransformGetKlassMethod transformHmacSha1GetKlass;
Expand All @@ -455,6 +465,8 @@ struct _xmlSecCryptoDLFunctions {
xmlSecCryptoTransformGetKlassMethod transformRsaPkcs1GetKlass;
xmlSecCryptoTransformGetKlassMethod transformRsaOaepGetKlass;
xmlSecCryptoTransformGetKlassMethod transformGostR3411_94GetKlass;
xmlSecCryptoTransformGetKlassMethod transformGostR3411_2012_256GetKlass;
xmlSecCryptoTransformGetKlassMethod transformGostR3411_2012_512GetKlass;
xmlSecCryptoTransformGetKlassMethod transformSha1GetKlass;
xmlSecCryptoTransformGetKlassMethod transformSha224GetKlass;
xmlSecCryptoTransformGetKlassMethod transformSha256GetKlass;
Expand Down
30 changes: 30 additions & 0 deletions include/xmlsec/strings.h
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,26 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGOST2001KeyValue[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGost2001GostR3411_94[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGost2001GostR3411_94[];

/*************************************************************************
*
* GOST R 34.10-2012 strings
*
************************************************************************/
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3410_2012_256KeyValue[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeGostR3410_2012_256KeyValue[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3410_2012_256KeyValue[];

XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3410_2012_512KeyValue[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeGostR3410_2012_512KeyValue[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3410_2012_512KeyValue[];

XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3410_2012GostR3411_2012_256[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3410_2012GostR3411_2012_256[];

XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3410_2012GostR3411_2012_512[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3410_2012GostR3411_2012_512[];


/*************************************************************************
*
* EncryptedKey
Expand Down Expand Up @@ -512,6 +532,16 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeRsaOAEPparams[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3411_94[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3411_94[];

/*************************************************************************
*
* GOST R 34.11-2012 strings
*
************************************************************************/
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3411_2012_256[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3411_2012_256[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameGostR3411_2012_512[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefGostR3411_2012_512[];

/*************************************************************************
*
* SHA1 strings
Expand Down
Loading

0 comments on commit 0606b74

Please sign in to comment.