Print this page
fixup .text where possible
7127  remove -Wno-missing-braces from Makefile.uts


  41 #include <sys/sha2.h>
  42 #include <sys/random.h>
  43 #include <sys/crypto/impl.h>
  44 #include <sha1/sha1_impl.h>
  45 #include <sha2/sha2_impl.h>
  46 #include <padding/padding.h>
  47 #include <rsa/rsa_impl.h>
  48 
  49 extern struct mod_ops mod_cryptoops;
  50 
  51 /*
  52  * Module linkage information for the kernel.
  53  */
  54 static struct modlcrypto modlcrypto = {
  55         &mod_cryptoops,
  56         "RSA Kernel SW Provider"
  57 };
  58 
  59 static struct modlinkage modlinkage = {
  60         MODREV_1,
  61         (void *)&modlcrypto,
  62         NULL
  63 };
  64 
  65 /*
  66  * CSPI information (entry points, provider info, etc.)
  67  */
  68 typedef enum rsa_mech_type {
  69         RSA_PKCS_MECH_INFO_TYPE,        /* SUN_CKM_RSA_PKCS */
  70         RSA_X_509_MECH_INFO_TYPE,       /* SUN_CKM_RSA_X_509 */
  71         MD5_RSA_PKCS_MECH_INFO_TYPE,    /* SUN_MD5_RSA_PKCS */
  72         SHA1_RSA_PKCS_MECH_INFO_TYPE,   /* SUN_SHA1_RSA_PKCS */
  73         SHA256_RSA_PKCS_MECH_INFO_TYPE, /* SUN_SHA256_RSA_PKCS */
  74         SHA384_RSA_PKCS_MECH_INFO_TYPE, /* SUN_SHA384_RSA_PKCS */
  75         SHA512_RSA_PKCS_MECH_INFO_TYPE  /* SUN_SHA512_RSA_PKCS */
  76 } rsa_mech_type_t;
  77 
  78 /*
  79  * Context for RSA_PKCS and RSA_X_509 mechanisms.
  80  */
  81 typedef struct rsa_ctx {
  82         rsa_mech_type_t mech_type;


 257  * and verify_recover_init fields as they do the same thing.
 258  */
 259 static crypto_verify_ops_t rsa_verify_ops = {
 260         rsa_sign_verify_common_init,
 261         rsaprov_verify,
 262         rsa_verify_update,
 263         rsa_verify_final,
 264         rsa_verify_atomic,
 265         rsa_sign_verify_common_init,
 266         rsa_verify_recover,
 267         rsa_verify_recover_atomic
 268 };
 269 
 270 static int rsa_free_context(crypto_ctx_t *);
 271 
 272 static crypto_ctx_ops_t rsa_ctx_ops = {
 273         NULL,
 274         rsa_free_context
 275 };
 276 
 277 static crypto_ops_t rsa_crypto_ops = {
 278         &rsa_control_ops,
 279         NULL,
 280         &rsa_cipher_ops,
 281         NULL,
 282         &rsa_sign_ops,
 283         &rsa_verify_ops,
 284         NULL,
 285         NULL,
 286         NULL,
 287         NULL,
 288         NULL,
 289         NULL,
 290         NULL,
 291         &rsa_ctx_ops,
 292         NULL,
 293         NULL,
 294         NULL,
 295 };
 296 
 297 static crypto_provider_info_t rsa_prov_info = {
 298         CRYPTO_SPI_VERSION_4,
 299         "RSA Software Provider",
 300         CRYPTO_SW_PROVIDER,
 301         {&modlinkage},
 302         NULL,
 303         &rsa_crypto_ops,
 304         sizeof (rsa_mech_info_tab)/sizeof (crypto_mech_info_t),
 305         rsa_mech_info_tab
 306 };
 307 
 308 static int rsa_encrypt_common(rsa_mech_type_t, crypto_key_t *,
 309     crypto_data_t *, crypto_data_t *);
 310 static int rsa_decrypt_common(rsa_mech_type_t, crypto_key_t *,
 311     crypto_data_t *, crypto_data_t *);
 312 static int rsa_sign_common(rsa_mech_type_t, crypto_key_t *,
 313     crypto_data_t *, crypto_data_t *);
 314 static int rsa_verify_common(rsa_mech_type_t, crypto_key_t *,
 315     crypto_data_t *, crypto_data_t *);
 316 static int compare_data(crypto_data_t *, uchar_t *);
 317 
 318 static int core_rsa_encrypt(crypto_key_t *, uchar_t *, int, uchar_t *, int);
 319 static int core_rsa_decrypt(crypto_key_t *, uchar_t *, int, uchar_t *);
 320 
 321 static crypto_kcf_provider_handle_t rsa_prov_handle = NULL;
 322 
 323 int
 324 _init(void)
 325 {
 326         int ret;




  41 #include <sys/sha2.h>
  42 #include <sys/random.h>
  43 #include <sys/crypto/impl.h>
  44 #include <sha1/sha1_impl.h>
  45 #include <sha2/sha2_impl.h>
  46 #include <padding/padding.h>
  47 #include <rsa/rsa_impl.h>
  48 
  49 extern struct mod_ops mod_cryptoops;
  50 
  51 /*
  52  * Module linkage information for the kernel.
  53  */
  54 static struct modlcrypto modlcrypto = {
  55         &mod_cryptoops,
  56         "RSA Kernel SW Provider"
  57 };
  58 
  59 static struct modlinkage modlinkage = {
  60         MODREV_1,
  61         {   (void *)&modlcrypto,
  62             NULL }
  63 };
  64 
  65 /*
  66  * CSPI information (entry points, provider info, etc.)
  67  */
  68 typedef enum rsa_mech_type {
  69         RSA_PKCS_MECH_INFO_TYPE,        /* SUN_CKM_RSA_PKCS */
  70         RSA_X_509_MECH_INFO_TYPE,       /* SUN_CKM_RSA_X_509 */
  71         MD5_RSA_PKCS_MECH_INFO_TYPE,    /* SUN_MD5_RSA_PKCS */
  72         SHA1_RSA_PKCS_MECH_INFO_TYPE,   /* SUN_SHA1_RSA_PKCS */
  73         SHA256_RSA_PKCS_MECH_INFO_TYPE, /* SUN_SHA256_RSA_PKCS */
  74         SHA384_RSA_PKCS_MECH_INFO_TYPE, /* SUN_SHA384_RSA_PKCS */
  75         SHA512_RSA_PKCS_MECH_INFO_TYPE  /* SUN_SHA512_RSA_PKCS */
  76 } rsa_mech_type_t;
  77 
  78 /*
  79  * Context for RSA_PKCS and RSA_X_509 mechanisms.
  80  */
  81 typedef struct rsa_ctx {
  82         rsa_mech_type_t mech_type;


 257  * and verify_recover_init fields as they do the same thing.
 258  */
 259 static crypto_verify_ops_t rsa_verify_ops = {
 260         rsa_sign_verify_common_init,
 261         rsaprov_verify,
 262         rsa_verify_update,
 263         rsa_verify_final,
 264         rsa_verify_atomic,
 265         rsa_sign_verify_common_init,
 266         rsa_verify_recover,
 267         rsa_verify_recover_atomic
 268 };
 269 
 270 static int rsa_free_context(crypto_ctx_t *);
 271 
 272 static crypto_ctx_ops_t rsa_ctx_ops = {
 273         NULL,
 274         rsa_free_context
 275 };
 276 
 277 static crypto_ops_t rsa_crypto_ops = {{{{{{
 278                                 &rsa_control_ops,
 279                                 NULL,
 280                                 &rsa_cipher_ops,
 281                                 NULL,
 282                                 &rsa_sign_ops,
 283                                 &rsa_verify_ops,
 284                                 NULL,
 285                                 NULL,
 286                                 NULL,
 287                                 NULL,
 288                                 NULL,
 289                                 NULL,
 290                                 NULL,
 291                                 &rsa_ctx_ops },     /* cou_v1 */
 292                         NULL },                 /* cou_v2 */
 293                 NULL },                         /* cou_v3 */
 294         NULL }                                  /* cou_v4 */
 295 }};
 296 
 297 static crypto_provider_info_t rsa_prov_info = {{{{
 298         CRYPTO_SPI_VERSION_4,
 299         "RSA Software Provider",
 300         CRYPTO_SW_PROVIDER,
 301         {&modlinkage},
 302         NULL,
 303         &rsa_crypto_ops,
 304         sizeof (rsa_mech_info_tab)/sizeof (crypto_mech_info_t),
 305         rsa_mech_info_tab
 306 }}}};
 307 
 308 static int rsa_encrypt_common(rsa_mech_type_t, crypto_key_t *,
 309     crypto_data_t *, crypto_data_t *);
 310 static int rsa_decrypt_common(rsa_mech_type_t, crypto_key_t *,
 311     crypto_data_t *, crypto_data_t *);
 312 static int rsa_sign_common(rsa_mech_type_t, crypto_key_t *,
 313     crypto_data_t *, crypto_data_t *);
 314 static int rsa_verify_common(rsa_mech_type_t, crypto_key_t *,
 315     crypto_data_t *, crypto_data_t *);
 316 static int compare_data(crypto_data_t *, uchar_t *);
 317 
 318 static int core_rsa_encrypt(crypto_key_t *, uchar_t *, int, uchar_t *, int);
 319 static int core_rsa_decrypt(crypto_key_t *, uchar_t *, int, uchar_t *);
 320 
 321 static crypto_kcf_provider_handle_t rsa_prov_handle = NULL;
 322 
 323 int
 324 _init(void)
 325 {
 326         int ret;