jdk/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto/nativeFunc.h
changeset 27182 4525d13b8af1
child 37909 38b1efe33344
equal deleted inserted replaced
27181:29f9c4f56e80 27182:4525d13b8af1
       
     1 /*
       
     2  * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 #ifndef SPARCT4_NATIVE_FUNC_H
       
    27 #define SPARCT4_NATIVE_FUNC_H
       
    28 #include <md5.h>
       
    29 #include <sha1.h>
       
    30 #include <sha2.h>
       
    31 #include <libsoftcrypto.h>
       
    32 
       
    33 jboolean* loadNative();
       
    34 
       
    35 /* function pointer definitions */
       
    36 
       
    37 typedef void (*MD5INIT_FN_PTR)(MD5_CTX *context);
       
    38 
       
    39 typedef void (*MD5UPDATE_FN_PTR)
       
    40      (MD5_CTX *context, unsigned char *input,
       
    41       unsigned int inlen);
       
    42 
       
    43 typedef void (*MD5FINAL_FN_PTR)
       
    44      (unsigned char *output, MD5_CTX *context);
       
    45 
       
    46 typedef void (*SHA1INIT_FN_PTR)(SHA1_CTX *context);
       
    47 
       
    48 typedef void (*SHA1UPDATE_FN_PTR)
       
    49      (SHA1_CTX *context, unsigned char *input,
       
    50       unsigned int inlen);
       
    51 
       
    52 typedef void (*SHA1FINAL_FN_PTR)
       
    53      (unsigned char *output, SHA1_CTX *context);
       
    54 
       
    55 typedef void (*SHA2INIT_FN_PTR)(uint64_t mech, SHA2_CTX *context);
       
    56 
       
    57 typedef void (*SHA2UPDATE_FN_PTR)
       
    58      (SHA2_CTX *context, unsigned char *input,
       
    59       unsigned int inlen);
       
    60 
       
    61 typedef void (*SHA2FINAL_FN_PTR)
       
    62      (unsigned char *output, SHA2_CTX *context);
       
    63 
       
    64 typedef int (*UCRYPTO_VERSION_FN_PTR)();
       
    65 
       
    66 typedef int (*UCRYPTO_GET_MECHLIST_FN_PTR)(char *str);
       
    67 
       
    68 typedef int (*UCRYPTO_ENCRYPT_INIT_FN_PTR)
       
    69      (crypto_ctx_t *context, ucrypto_mech_t mech_type,
       
    70       uchar_t *key_str, size_t key_len,
       
    71       void *iv, size_t iv_len);
       
    72 
       
    73 typedef int (*UCRYPTO_ENCRYPT_UPDATE_FN_PTR)
       
    74      (crypto_ctx_t *context, uchar_t *in,
       
    75       size_t in_len, uchar_t *out, size_t *out_len);
       
    76 
       
    77 typedef int (*UCRYPTO_ENCRYPT_FINAL_FN_PTR)
       
    78      (crypto_ctx_t *context, uchar_t *out,
       
    79       size_t *out_len);
       
    80 
       
    81 typedef int (*UCRYPTO_ENCRYPT_FN_PTR)
       
    82      (ucrypto_mech_t mech_type, uchar_t *key_str,
       
    83       size_t key_len, void *iv, size_t iv_len, uchar_t *in,
       
    84       size_t in_len, uchar_t *out, size_t *out_len);
       
    85 
       
    86 typedef int (*UCRYPTO_DECRYPT_INIT_FN_PTR)
       
    87      (crypto_ctx_t *context,
       
    88       ucrypto_mech_t mech_type, uchar_t *key_str, size_t key_len,
       
    89       void *iv, size_t iv_len);
       
    90 
       
    91 typedef int (*UCRYPTO_DECRYPT_UPDATE_FN_PTR)
       
    92      (crypto_ctx_t *context, uchar_t *in,
       
    93       size_t in_len, uchar_t *out, size_t *out_len);
       
    94 
       
    95 typedef int (*UCRYPTO_DECRYPT_FINAL_FN_PTR)
       
    96      (crypto_ctx_t *context, uchar_t *out,
       
    97       size_t *out_len);
       
    98 
       
    99 typedef int (*UCRYPTO_DECRYPT_FN_PTR)
       
   100      (ucrypto_mech_t mech_type, uchar_t *key_str,
       
   101       size_t key_len, void *iv, size_t iv_len, uchar_t *in,
       
   102       size_t in_len, uchar_t *out, size_t *out_len);
       
   103 
       
   104 typedef int (*UCRYPTO_SIGN_INIT_FN_PTR)
       
   105      (crypto_ctx_t *context, ucrypto_mech_t mech_type,
       
   106       uchar_t *key_str, size_t key_len,
       
   107       void *iv, size_t iv_len);
       
   108 
       
   109 typedef int (*UCRYPTO_SIGN_UPDATE_FN_PTR)
       
   110      (crypto_ctx_t *context, uchar_t *data_str, size_t data_len);
       
   111 
       
   112 typedef int (*UCRYPTO_SIGN_FINAL_FN_PTR)
       
   113      (crypto_ctx_t *context, uchar_t *sig_str, size_t *sig_len);
       
   114 
       
   115 typedef int (*UCRYPTO_VERIFY_INIT_FN_PTR)
       
   116      (crypto_ctx_t *context, ucrypto_mech_t mech_type,
       
   117       uchar_t *key_str, size_t key_len,
       
   118       void *iv, size_t iv_len);
       
   119 
       
   120 typedef int (*UCRYPTO_VERIFY_UPDATE_FN_PTR)
       
   121      (crypto_ctx_t *context, uchar_t *data_str, size_t data_len);
       
   122 
       
   123 typedef int (*UCRYPTO_VERIFY_FINAL_FN_PTR)
       
   124      (crypto_ctx_t *context, uchar_t *sig_str, size_t *sig_len);
       
   125 
       
   126 
       
   127 
       
   128 /* dynamically resolved functions from libmd, and libsoftcrypto
       
   129    libraries */
       
   130 typedef struct T4CRYPTO_FUNCTION_TABLE {
       
   131   MD5INIT_FN_PTR                 md5Init;
       
   132   MD5UPDATE_FN_PTR               md5Update;
       
   133   MD5FINAL_FN_PTR                md5Final;
       
   134   SHA1INIT_FN_PTR                sha1Init;
       
   135   SHA1UPDATE_FN_PTR              sha1Update;
       
   136   SHA1FINAL_FN_PTR               sha1Final;
       
   137   SHA2INIT_FN_PTR                sha2Init;
       
   138   SHA2UPDATE_FN_PTR              sha2Update;
       
   139   SHA2FINAL_FN_PTR               sha2Final;
       
   140   UCRYPTO_VERSION_FN_PTR         ucryptoVersion;
       
   141   UCRYPTO_GET_MECHLIST_FN_PTR    ucryptoGetMechList;
       
   142   UCRYPTO_ENCRYPT_INIT_FN_PTR    ucryptoEncryptInit;
       
   143   UCRYPTO_ENCRYPT_UPDATE_FN_PTR  ucryptoEncryptUpdate;
       
   144   UCRYPTO_ENCRYPT_FINAL_FN_PTR   ucryptoEncryptFinal;
       
   145   UCRYPTO_ENCRYPT_FN_PTR         ucryptoEncrypt;
       
   146   UCRYPTO_DECRYPT_INIT_FN_PTR    ucryptoDecryptInit;
       
   147   UCRYPTO_DECRYPT_UPDATE_FN_PTR  ucryptoDecryptUpdate;
       
   148   UCRYPTO_DECRYPT_FINAL_FN_PTR   ucryptoDecryptFinal;
       
   149   UCRYPTO_DECRYPT_FN_PTR         ucryptoDecrypt;
       
   150   UCRYPTO_SIGN_INIT_FN_PTR       ucryptoSignInit;
       
   151   UCRYPTO_SIGN_UPDATE_FN_PTR     ucryptoSignUpdate;
       
   152   UCRYPTO_SIGN_FINAL_FN_PTR      ucryptoSignFinal;
       
   153   UCRYPTO_VERIFY_INIT_FN_PTR     ucryptoVerifyInit;
       
   154   UCRYPTO_VERIFY_UPDATE_FN_PTR   ucryptoVerifyUpdate;
       
   155   UCRYPTO_VERIFY_FINAL_FN_PTR    ucryptoVerifyFinal;
       
   156 } T4CRYPTO_FUNCTION_TABLE;
       
   157 
       
   158 typedef T4CRYPTO_FUNCTION_TABLE *T4CRYPTO_FUNCTION_TABLE_PTR;
       
   159 
       
   160 /* global function table */
       
   161 T4CRYPTO_FUNCTION_TABLE_PTR ftab;
       
   162 
       
   163 #endif