⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkcs11-display.c

📁 读写Smart卡加解密接口的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * 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 + -