You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.7 KiB
142 lines
4.7 KiB
/* crypto/ts/ts_lib.c */ |
|
/* |
|
* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL project |
|
* 2002. |
|
*/ |
|
/* ==================================================================== |
|
* Copyright (c) 2006 The OpenSSL Project. All rights reserved. |
|
* |
|
* Redistribution and use in source and binary forms, with or without |
|
* modification, are permitted provided that the following conditions |
|
* are met: |
|
* |
|
* 1. Redistributions of source code must retain the above copyright |
|
* notice, this list of conditions and the following disclaimer. |
|
* |
|
* 2. Redistributions in binary form must reproduce the above copyright |
|
* notice, this list of conditions and the following disclaimer in |
|
* the documentation and/or other materials provided with the |
|
* distribution. |
|
* |
|
* 3. All advertising materials mentioning features or use of this |
|
* software must display the following acknowledgment: |
|
* "This product includes software developed by the OpenSSL Project |
|
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" |
|
* |
|
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to |
|
* endorse or promote products derived from this software without |
|
* prior written permission. For written permission, please contact |
|
* licensing@OpenSSL.org. |
|
* |
|
* 5. Products derived from this software may not be called "OpenSSL" |
|
* nor may "OpenSSL" appear in their names without prior written |
|
* permission of the OpenSSL Project. |
|
* |
|
* 6. Redistributions of any form whatsoever must retain the following |
|
* acknowledgment: |
|
* "This product includes software developed by the OpenSSL Project |
|
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" |
|
* |
|
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY |
|
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR |
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
|
* OF THE POSSIBILITY OF SUCH DAMAGE. |
|
* ==================================================================== |
|
* |
|
* This product includes cryptographic software written by Eric Young |
|
* (eay@cryptsoft.com). This product includes software written by Tim |
|
* Hudson (tjh@cryptsoft.com). |
|
* |
|
*/ |
|
|
|
#include <stdio.h> |
|
#include "cryptlib.h" |
|
#include <openssl/objects.h> |
|
#include <openssl/bn.h> |
|
#include <openssl/x509v3.h> |
|
#include "ts.h" |
|
|
|
/* Local function declarations. */ |
|
|
|
/* Function definitions. */ |
|
|
|
int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num) |
|
{ |
|
BIGNUM num_bn; |
|
int result = 0; |
|
char *hex; |
|
|
|
BN_init(&num_bn); |
|
ASN1_INTEGER_to_BN(num, &num_bn); |
|
if ((hex = BN_bn2hex(&num_bn))) { |
|
result = BIO_write(bio, "0x", 2) > 0; |
|
result = result && BIO_write(bio, hex, strlen(hex)) > 0; |
|
OPENSSL_free(hex); |
|
} |
|
BN_free(&num_bn); |
|
|
|
return result; |
|
} |
|
|
|
int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj) |
|
{ |
|
char obj_txt[128]; |
|
|
|
OBJ_obj2txt(obj_txt, sizeof(obj_txt), obj, 0); |
|
BIO_printf(bio, "%s\n", obj_txt); |
|
|
|
return 1; |
|
} |
|
|
|
int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions) |
|
{ |
|
int i, critical, n; |
|
X509_EXTENSION *ex; |
|
ASN1_OBJECT *obj; |
|
|
|
BIO_printf(bio, "Extensions:\n"); |
|
n = X509v3_get_ext_count(extensions); |
|
for (i = 0; i < n; i++) { |
|
ex = X509v3_get_ext(extensions, i); |
|
obj = X509_EXTENSION_get_object(ex); |
|
i2a_ASN1_OBJECT(bio, obj); |
|
critical = X509_EXTENSION_get_critical(ex); |
|
BIO_printf(bio, ": %s\n", critical ? "critical" : ""); |
|
if (!X509V3_EXT_print(bio, ex, 0, 4)) { |
|
BIO_printf(bio, "%4s", ""); |
|
M_ASN1_OCTET_STRING_print(bio, ex->value); |
|
} |
|
BIO_write(bio, "\n", 1); |
|
} |
|
|
|
return 1; |
|
} |
|
|
|
int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg) |
|
{ |
|
int i = OBJ_obj2nid(alg->algorithm); |
|
return BIO_printf(bio, "Hash Algorithm: %s\n", |
|
(i == NID_undef) ? "UNKNOWN" : OBJ_nid2ln(i)); |
|
} |
|
|
|
int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *a) |
|
{ |
|
const ASN1_OCTET_STRING *msg; |
|
|
|
TS_X509_ALGOR_print_bio(bio, TS_MSG_IMPRINT_get_algo(a)); |
|
|
|
BIO_printf(bio, "Message data:\n"); |
|
msg = TS_MSG_IMPRINT_get_msg(a); |
|
BIO_dump_indent(bio, (const char *)M_ASN1_STRING_data(msg), |
|
M_ASN1_STRING_length(msg), 4); |
|
|
|
return 1; |
|
}
|
|
|