gitee.com/lh-her-team/common@v1.5.1/opencrypto/gmssl/gmssl/include/openssl/otp.h (about)

     1  /* ====================================================================
     2   * Copyright (c) 2015 - 2016 The GmSSL Project.  All rights reserved.
     3   *
     4   * Redistribution and use in source and binary forms, with or without
     5   * modification, are permitted provided that the following conditions
     6   * are met:
     7   *
     8   * 1. Redistributions of source code must retain the above copyright
     9   *    notice, this list of conditions and the following disclaimer.
    10   *
    11   * 2. Redistributions in binary form must reproduce the above copyright
    12   *    notice, this list of conditions and the following disclaimer in
    13   *    the documentation and/or other materials provided with the
    14   *    distribution.
    15   *
    16   * 3. All advertising materials mentioning features or use of this
    17   *    software must display the following acknowledgment:
    18   *    "This product includes software developed by the GmSSL Project.
    19   *    (http://gmssl.org/)"
    20   *
    21   * 4. The name "GmSSL Project" must not be used to endorse or promote
    22   *    products derived from this software without prior written
    23   *    permission. For written permission, please contact
    24   *    guanzhi1980@gmail.com.
    25   *
    26   * 5. Products derived from this software may not be called "GmSSL"
    27   *    nor may "GmSSL" appear in their names without prior written
    28   *    permission of the GmSSL Project.
    29   *
    30   * 6. Redistributions of any form whatsoever must retain the following
    31   *    acknowledgment:
    32   *    "This product includes software developed by the GmSSL Project
    33   *    (http://gmssl.org/)"
    34   *
    35   * THIS SOFTWARE IS PROVIDED BY THE GmSSL PROJECT ``AS IS'' AND ANY
    36   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    37   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    38   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE GmSSL PROJECT OR
    39   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    40   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    41   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    42   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    43   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    44   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    45   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
    46   * OF THE POSSIBILITY OF SUCH DAMAGE.
    47   * ====================================================================
    48   */
    49  /* The implementation of
    50   * GM/T 0021-2012 One Time Password Application of Cryptography Algorithm
    51   */
    52  
    53  #ifndef HEADER_OTP_H
    54  #define HEADER_OTP_H
    55  
    56  #include <openssl/opensslconf.h>
    57  #ifndef OPENSSL_NO_OTP
    58  
    59  #ifdef __cplusplus
    60  extern "C" {
    61  #endif
    62  
    63  /* OTP reference to the GM/T OTP specification
    64   * type should be a valid md nid or a ECB cipher nid
    65   * te is the time period in the range [1, 60]
    66   * event is the C in ID = {T|C|O}
    67   * opt is the O in ID = {T|C|O}
    68   * otp_digits is the number of digits of otp, choose in the range [4, 8]
    69   * otp the output otp value, convert to digits with snprintf()
    70   */
    71  typedef struct OTP_PARAMS_st {
    72  	int type;
    73  	int te;
    74  	void *option;
    75  	size_t option_size;
    76  	int otp_digits;
    77  	/* adjust the clock in seconds */
    78  	int offset;
    79  } OTP_PARAMS;
    80  
    81  int OTP_generate(const OTP_PARAMS *params, const void *event, size_t eventlen,
    82  	unsigned int *otp, const unsigned char *key, size_t keylen);
    83  
    84  /* BEGIN ERROR CODES */
    85  /*
    86   * The following lines are auto generated by the script mkerr.pl. Any changes
    87   * made after this point may be overwritten when the script is next run.
    88   */
    89  
    90  int ERR_load_OTP_strings(void);
    91  
    92  /* Error codes for the OTP functions. */
    93  
    94  /* Function codes. */
    95  # define OTP_F_OTP_GENERATE                               100
    96  
    97  /* Reason codes. */
    98  # define OTP_R_CMAC_FAILURE                               101
    99  # define OTP_R_INVALID_PARAMS                             100
   100  
   101  # ifdef  __cplusplus
   102  }
   103  # endif
   104  #endif
   105  #endif