summaryrefslogtreecommitdiff
path: root/src/gcrypt/kw_des.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gcrypt/kw_des.c')
-rw-r--r--src/gcrypt/kw_des.c154
1 files changed, 46 insertions, 108 deletions
diff --git a/src/gcrypt/kw_des.c b/src/gcrypt/kw_des.c
index 67e76c56..3c3b792c 100644
--- a/src/gcrypt/kw_des.c
+++ b/src/gcrypt/kw_des.c
@@ -1,14 +1,20 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
@@ -158,11 +164,8 @@ xmlSecGCryptKWDes3Initialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -226,22 +229,16 @@ xmlSecGCryptKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < XMLSEC_KW_DES3_KEY_LENGTH) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key length %d is not enough (%d expected)",
- keySize, XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInvalidKeyDataSizeError(keySize, XMLSEC_KW_DES3_KEY_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(&(ctx->keyBuffer), xmlSecBufferGetData(buffer), XMLSEC_KW_DES3_KEY_LENGTH);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
return(-1);
}
@@ -280,12 +277,9 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d bytes - not %d bytes aligned",
- inSize, XMLSEC_KW_DES3_BLOCK_LENGTH);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -301,11 +295,9 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -314,12 +306,8 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Encode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -328,12 +316,8 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -341,21 +325,17 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -364,11 +344,7 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -400,11 +376,7 @@ xmlSecGCryptKWDes3Sha1(void * context,
err = gcry_md_open(&digestCtx, GCRY_MD_SHA1, GCRY_MD_FLAG_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_open(GCRY_MD_SHA1)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_open(GCRY_MD_SHA1)", err, NULL);
return(-1);
}
@@ -412,22 +384,14 @@ xmlSecGCryptKWDes3Sha1(void * context,
err = gcry_md_final(digestCtx);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_final",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_final", err, NULL);
gcry_md_close(digestCtx);
return(-1);
}
res = gcry_md_read(digestCtx, GCRY_MD_SHA1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_read(GCRY_MD_SHA1)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_md_read", GPG_ERR_NO_ERROR, NULL);
gcry_md_close(digestCtx);
return(-1);
}
@@ -477,11 +441,7 @@ xmlSecGCryptKWDes3BlockEncrypt(void * context,
out, outSize,
1); /* encrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKWDes3Encrypt", NULL);
return(-1);
}
@@ -513,11 +473,7 @@ xmlSecGCryptKWDes3BlockDecrypt(void * context,
out, outSize,
0); /* decrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKWDes3Encrypt", NULL);
return(-1);
}
return(ret);
@@ -545,53 +501,35 @@ xmlSecGCryptKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
err = gcry_cipher_open(&cipherCtx, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, GCRY_CIPHER_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_open(GCRY_CIPHER_3DES)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_open(GCRY_CIPHER_3DES)", err, NULL);
return(-1);
}
err = gcry_cipher_setkey(cipherCtx, key, keySize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setkey", err, NULL);
+ gcry_cipher_close(cipherCtx);
return(-1);
}
err = gcry_cipher_setiv(cipherCtx, iv, ivSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err, NULL);
+ gcry_cipher_close(cipherCtx);
return(-1);
}
if(enc) {
err = gcry_cipher_encrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_encrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
} else {
err = gcry_cipher_decrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_decrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}