📄 pkcs11-display.c
字号:
/* * Copyright (C) 2003 Mathias Brossard <mathias.brossard@idealx.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, * USA */#ifdef HAVE_CONFIG_H#include <config.h>#endif#ifdef HAVE_OPENSSL#include <openssl/x509.h>#endif#include "pkcs11-display.h"void print_enum(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg){ enum_spec *spec = (enum_spec*)arg; CK_ULONG i; CK_ULONG ctype = *((CK_ULONG_PTR)value); for(i = 0; i < spec->size; i++) { if(spec->specs[i].type == ctype) { fprintf(f, "%s\n", spec->specs[i].name); return; } } fprintf(f, "Value %lX not found for type %s\n", ctype, spec->name);}void print_boolean(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg){ CK_BYTE i = *((CK_BYTE *)value); fprintf(f, i ? "True\n" : "False\n");}void print_generic(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg){ CK_ULONG i; if(size > 0 && value != NULL) { fprintf(f, "[size : 0x%lX (%ld)]\n ", size, size); for(i = 0; i < size; i++) { if (i != 0) { if ((i % 32) == 0) fprintf(f, "\n "); else if((i % 4) == 0) fprintf(f, " "); } fprintf(f, "%02X", ((CK_BYTE *)value)[i]); } } else { if (value != NULL) fprintf(f, "EMPTY"); else fprintf(f, "NULL [size : 0x%lX (%ld)]", size, size); } fprintf(f, "\n");}#ifdef HAVE_OPENSSLvoid print_dn(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg){ print_generic(f, type, value, size, arg); if(size && value) { X509_NAME *name; name = d2i_X509_NAME(NULL, (unsigned char **)&value, size); if(name) { BIO *bio = BIO_new(BIO_s_file()); BIO_set_fp(bio, f, 0); fprintf(f, " DN: "); X509_NAME_print(bio, name, XN_FLAG_RFC2253); fprintf(f, "\n"); BIO_free(bio); } }}#endifvoid print_print(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg){ CK_ULONG i, j; CK_BYTE c; if(size > 0) { fprintf(f, "[size : 0x%lX (%ld)]\n ", size, size); for(i = 0; i < size; i += j) { for(j = 0; ((i + j < size) && (j < 32)); j++) { if (((j % 4) == 0) && (j != 0)) fprintf(f, " "); c = ((CK_BYTE *)value)[i+j]; fprintf(f, "%02X", c); } fprintf(f, "\n "); for(j = 0; ((i + j < size) && (j < 32)); j++) { if (((j % 4) == 0) && (j != 0)) fprintf(f, " "); c = ((CK_BYTE *)value)[i + j]; if((c > 32) && (c < 128)) { fprintf(f, " %c", c); } else { fprintf(f, " ."); } } if(j == 32) fprintf(f, "\n "); } } else { fprintf(f, "EMPTY"); } fprintf(f, "\n");}enum_specs ck_cls_s[] = { { CKO_DATA , "CKO_DATA " }, { CKO_CERTIFICATE , "CKO_CERTIFICATE " }, { CKO_PUBLIC_KEY , "CKO_PUBLIC_KEY " }, { CKO_PRIVATE_KEY , "CKO_PRIVATE_KEY " }, { CKO_SECRET_KEY , "CKO_SECRET_KEY " }, { CKO_HW_FEATURE , "CKO_HW_FEATURE " }, { CKO_DOMAIN_PARAMETERS, "CKO_DOMAIN_PARAMETERS" }, { CKO_VENDOR_DEFINED , "CKO_VENDOR_DEFINED " }};enum_specs ck_crt_s[] = { { CKC_X_509, "CKC_X_509" }, { CKC_X_509_ATTR_CERT, "CKC_X_509_ATTR_CERT" },};enum_specs ck_key_s[] = { { CKK_RSA , "CKK_RSA " }, { CKK_DSA , "CKK_DSA " }, { CKK_DH , "CKK_DH " }, { CKK_EC , "CKK_EC " }, { CKK_X9_42_DH , "CKK_X9_42_DH " }, { CKK_KEA , "CKK_KEA " }, { CKK_GENERIC_SECRET, "CKK_GENERIC_SECRET " }, { CKK_RC2 , "CKK_RC2 " }, { CKK_RC4 , "CKK_RC4 " }, { CKK_DES , "CKK_DES " }, { CKK_DES2 , "CKK_DES2 " }, { CKK_DES3 , "CKK_DES3 " }, { CKK_CAST , "CKK_CAST " }, { CKK_CAST3 , "CKK_CAST3 " }, { CKK_CAST128 , "CKK_CAST128 " }, { CKK_RC5 , "CKK_RC5 " }, { CKK_IDEA , "CKK_IDEA " }, { CKK_SKIPJACK , "CKK_SKIPJACK " }, { CKK_BATON , "CKK_BATON " }, { CKK_JUNIPER , "CKK_JUNIPER " }, { CKK_CDMF , "CKK_CDMF " }, { CKK_AES , "CKK_AES " }};enum_specs ck_mec_s[] = { { CKM_RSA_PKCS_KEY_PAIR_GEN , "CKM_RSA_PKCS_KEY_PAIR_GEN " }, { CKM_RSA_PKCS , "CKM_RSA_PKCS " }, { CKM_RSA_9796 , "CKM_RSA_9796 " }, { CKM_RSA_X_509 , "CKM_RSA_X_509 " }, { CKM_MD2_RSA_PKCS , "CKM_MD2_RSA_PKCS " }, { CKM_MD5_RSA_PKCS , "CKM_MD5_RSA_PKCS " }, { CKM_SHA1_RSA_PKCS , "CKM_SHA1_RSA_PKCS " }, { CKM_RIPEMD128_RSA_PKCS , "CKM_RIPEMD128_RSA_PKCS " }, { CKM_RIPEMD160_RSA_PKCS , "CKM_RIPEMD160_RSA_PKCS " }, { CKM_RSA_PKCS_OAEP , "CKM_RSA_PKCS_OAEP " }, { CKM_RSA_X9_31_KEY_PAIR_GEN , "CKM_RSA_X9_31_KEY_PAIR_GEN " }, { CKM_RSA_X9_31 , "CKM_RSA_X9_31 " }, { CKM_SHA1_RSA_X9_31 , "CKM_SHA1_RSA_X9_31 " }, { CKM_RSA_PKCS_PSS , "CKM_RSA_PKCS_PSS " }, { CKM_SHA1_RSA_PKCS_PSS , "CKM_SHA1_RSA_PKCS_PSS " }, { CKM_DSA_KEY_PAIR_GEN , "CKM_DSA_KEY_PAIR_GEN " }, { CKM_DSA , "CKM_DSA " }, { CKM_DSA_SHA1 , "CKM_DSA_SHA1 " }, { CKM_DH_PKCS_KEY_PAIR_GEN , "CKM_DH_PKCS_KEY_PAIR_GEN " }, { CKM_DH_PKCS_DERIVE , "CKM_DH_PKCS_DERIVE " }, { CKM_X9_42_DH_KEY_PAIR_GEN , "CKM_X9_42_DH_KEY_PAIR_GEN " }, { CKM_X9_42_DH_DERIVE , "CKM_X9_42_DH_DERIVE " }, { CKM_X9_42_DH_HYBRID_DERIVE , "CKM_X9_42_DH_HYBRID_DERIVE " }, { CKM_X9_42_MQV_DERIVE , "CKM_X9_42_MQV_DERIVE " }, { CKM_RC2_KEY_GEN , "CKM_RC2_KEY_GEN " }, { CKM_RC2_ECB , "CKM_RC2_ECB " }, { CKM_RC2_CBC , "CKM_RC2_CBC " }, { CKM_RC2_MAC , "CKM_RC2_MAC " }, { CKM_RC2_MAC_GENERAL , "CKM_RC2_MAC_GENERAL " }, { CKM_RC2_CBC_PAD , "CKM_RC2_CBC_PAD " }, { CKM_RC4_KEY_GEN , "CKM_RC4_KEY_GEN " }, { CKM_RC4 , "CKM_RC4 " }, { CKM_DES_KEY_GEN , "CKM_DES_KEY_GEN " }, { CKM_DES_ECB , "CKM_DES_ECB " }, { CKM_DES_CBC , "CKM_DES_CBC " }, { CKM_DES_MAC , "CKM_DES_MAC " }, { CKM_DES_MAC_GENERAL , "CKM_DES_MAC_GENERAL " }, { CKM_DES_CBC_PAD , "CKM_DES_CBC_PAD " }, { CKM_DES2_KEY_GEN , "CKM_DES2_KEY_GEN " }, { CKM_DES3_KEY_GEN , "CKM_DES3_KEY_GEN " }, { CKM_DES3_ECB , "CKM_DES3_ECB " }, { CKM_DES3_CBC , "CKM_DES3_CBC " }, { CKM_DES3_MAC , "CKM_DES3_MAC " }, { CKM_DES3_MAC_GENERAL , "CKM_DES3_MAC_GENERAL " }, { CKM_DES3_CBC_PAD , "CKM_DES3_CBC_PAD " }, { CKM_CDMF_KEY_GEN , "CKM_CDMF_KEY_GEN " }, { CKM_CDMF_ECB , "CKM_CDMF_ECB " }, { CKM_CDMF_CBC , "CKM_CDMF_CBC " }, { CKM_CDMF_MAC , "CKM_CDMF_MAC " }, { CKM_CDMF_MAC_GENERAL , "CKM_CDMF_MAC_GENERAL " }, { CKM_CDMF_CBC_PAD , "CKM_CDMF_CBC_PAD " }, { CKM_MD2 , "CKM_MD2 " }, { CKM_MD2_HMAC , "CKM_MD2_HMAC " }, { CKM_MD2_HMAC_GENERAL , "CKM_MD2_HMAC_GENERAL " }, { CKM_MD5 , "CKM_MD5 " }, { CKM_MD5_HMAC , "CKM_MD5_HMAC " }, { CKM_MD5_HMAC_GENERAL , "CKM_MD5_HMAC_GENERAL " }, { CKM_SHA_1 , "CKM_SHA_1 " }, { CKM_SHA_1_HMAC , "CKM_SHA_1_HMAC " }, { CKM_SHA_1_HMAC_GENERAL , "CKM_SHA_1_HMAC_GENERAL " }, { CKM_RIPEMD128 , "CKM_RIPEMD128 " }, { CKM_RIPEMD128_HMAC , "CKM_RIPEMD128_HMAC " }, { CKM_RIPEMD128_HMAC_GENERAL , "CKM_RIPEMD128_HMAC_GENERAL " }, { CKM_RIPEMD160 , "CKM_RIPEMD160 " }, { CKM_RIPEMD160_HMAC , "CKM_RIPEMD160_HMAC " }, { CKM_RIPEMD160_HMAC_GENERAL , "CKM_RIPEMD160_HMAC_GENERAL " }, { CKM_CAST_KEY_GEN , "CKM_CAST_KEY_GEN " }, { CKM_CAST_ECB , "CKM_CAST_ECB " }, { CKM_CAST_CBC , "CKM_CAST_CBC " }, { CKM_CAST_MAC , "CKM_CAST_MAC " }, { CKM_CAST_MAC_GENERAL , "CKM_CAST_MAC_GENERAL " }, { CKM_CAST_CBC_PAD , "CKM_CAST_CBC_PAD " }, { CKM_CAST3_KEY_GEN , "CKM_CAST3_KEY_GEN " }, { CKM_CAST3_ECB , "CKM_CAST3_ECB " }, { CKM_CAST3_CBC , "CKM_CAST3_CBC " }, { CKM_CAST3_MAC , "CKM_CAST3_MAC " }, { CKM_CAST3_MAC_GENERAL , "CKM_CAST3_MAC_GENERAL " }, { CKM_CAST3_CBC_PAD , "CKM_CAST3_CBC_PAD " }, { CKM_CAST5_KEY_GEN , "CKM_CAST5_KEY_GEN " }, { CKM_CAST128_KEY_GEN , "CKM_CAST128_KEY_GEN " }, { CKM_CAST5_ECB , "CKM_CAST5_ECB " }, { CKM_CAST128_ECB , "CKM_CAST128_ECB " }, { CKM_CAST5_CBC , "CKM_CAST5_CBC " }, { CKM_CAST128_CBC , "CKM_CAST128_CBC " }, { CKM_CAST5_MAC , "CKM_CAST5_MAC " }, { CKM_CAST128_MAC , "CKM_CAST128_MAC " }, { CKM_CAST5_MAC_GENERAL , "CKM_CAST5_MAC_GENERAL " }, { CKM_CAST128_MAC_GENERAL , "CKM_CAST128_MAC_GENERAL " }, { CKM_CAST5_CBC_PAD , "CKM_CAST5_CBC_PAD " }, { CKM_CAST128_CBC_PAD , "CKM_CAST128_CBC_PAD " }, { CKM_RC5_KEY_GEN , "CKM_RC5_KEY_GEN " }, { CKM_RC5_ECB , "CKM_RC5_ECB " }, { CKM_RC5_CBC , "CKM_RC5_CBC " }, { CKM_RC5_MAC , "CKM_RC5_MAC " }, { CKM_RC5_MAC_GENERAL , "CKM_RC5_MAC_GENERAL " }, { CKM_RC5_CBC_PAD , "CKM_RC5_CBC_PAD " }, { CKM_IDEA_KEY_GEN , "CKM_IDEA_KEY_GEN " }, { CKM_IDEA_ECB , "CKM_IDEA_ECB " },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -