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