├── .gitattributes ├── .gitignore ├── AndroidManifest.xml ├── README.md ├── plugin.xml ├── src ├── android │ ├── AlipayPlugin.java │ ├── Base64.java │ ├── Keys.java │ ├── PayResult.java │ ├── SignUtils.java │ └── libs │ │ ├── alipaysdk.jar │ │ ├── alipaysecsdk.jar │ │ └── alipayutdid.jar └── ios │ ├── AlipayPlugin.h │ ├── AlipayPlugin.m │ ├── Keys.h │ ├── alipayUtil │ ├── Order.h │ ├── Order.m │ ├── Util │ │ ├── DataSigner.h │ │ ├── DataSigner.m │ │ ├── DataVerifier.h │ │ ├── DataVerifier.m │ │ ├── MD5DataSigner.h │ │ ├── MD5DataSigner.m │ │ ├── NSDataEx.h │ │ ├── NSDataEx.m │ │ ├── RSADataSigner.h │ │ ├── RSADataSigner.m │ │ ├── RSADataVerifier.h │ │ ├── RSADataVerifier.m │ │ ├── base64.h │ │ ├── base64.m │ │ ├── config.h │ │ ├── openssl_wrapper.h │ │ └── openssl_wrapper.m │ └── openssl │ │ ├── aes.h │ │ ├── asn1.h │ │ ├── asn1_mac.h │ │ ├── asn1t.h │ │ ├── bio.h │ │ ├── blowfish.h │ │ ├── bn.h │ │ ├── buffer.h │ │ ├── camellia.h │ │ ├── cast.h │ │ ├── cmac.h │ │ ├── cms.h │ │ ├── comp.h │ │ ├── conf.h │ │ ├── conf_api.h │ │ ├── crypto.h │ │ ├── des.h │ │ ├── des_old.h │ │ ├── dh.h │ │ ├── dsa.h │ │ ├── dso.h │ │ ├── dtls1.h │ │ ├── e_os2.h │ │ ├── ebcdic.h │ │ ├── ec.h │ │ ├── ecdh.h │ │ ├── ecdsa.h │ │ ├── engine.h │ │ ├── err.h │ │ ├── evp.h │ │ ├── hmac.h │ │ ├── idea.h │ │ ├── krb5_asn.h │ │ ├── kssl.h │ │ ├── lhash.h │ │ ├── md4.h │ │ ├── md5.h │ │ ├── mdc2.h │ │ ├── modes.h │ │ ├── obj_mac.h │ │ ├── objects.h │ │ ├── ocsp.h │ │ ├── opensslconf.h │ │ ├── opensslv.h │ │ ├── ossl_typ.h │ │ ├── pem.h │ │ ├── pem2.h │ │ ├── pkcs12.h │ │ ├── pkcs7.h │ │ ├── pqueue.h │ │ ├── rand.h │ │ ├── rc2.h │ │ ├── rc4.h │ │ ├── ripemd.h │ │ ├── rsa.h │ │ ├── safestack.h │ │ ├── seed.h │ │ ├── sha.h │ │ ├── srp.h │ │ ├── srtp.h │ │ ├── ssl.h │ │ ├── ssl2.h │ │ ├── ssl23.h │ │ ├── ssl3.h │ │ ├── stack.h │ │ ├── symhacks.h │ │ ├── tls1.h │ │ ├── ts.h │ │ ├── txt_db.h │ │ ├── ui.h │ │ ├── ui_compat.h │ │ ├── whrlpool.h │ │ ├── x509.h │ │ ├── x509_vfy.h │ │ └── x509v3.h │ └── libs │ ├── AlipaySDK.bundle │ ├── bar@2x.png │ ├── refresh@2x.png │ ├── refresh_click@2x.png │ ├── shutdown@2x.png │ └── shutdown_click@2x.png │ ├── AlipaySDK.framework │ ├── AlipaySDK │ ├── Headers │ │ ├── APayAuthInfo.h │ │ └── AlipaySDK.h │ ├── Info.plist │ └── en.lproj │ │ └── InfoPlist.strings │ ├── libcrypto.a │ └── libssl.a ├── www └── AlipayPlugin.js └── 支付宝插件使用.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 18 | 19 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cordova-plugin-alipay 2 | 支付宝插件 3 | 4 | 5 | 添加插件:运行命令 cordova plugin add 插件目录路径 6 | 7 | 8 | 配置ios端: 9 | 10 | 1.启动IDE(如Xcode),plugin下 libs的库,并导入到项目工程中。 11 | AlipaySDK.bundle 12 | AlipaySDK.framework 13 | //libcrypto.a 14 | //libssl.a 15 | 16 | 2.将alipayUtil 文件夹放到plugin目录下,并在xcode中添加,记得选中group。即在xcode中显示为黄色文件夹 17 | 18 | 3.点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索, 19 | 对“Header Search Paths”增加头文件路径:$(SRCROOT)/项目名称,后面选择recursive 。 20 | 如果头文件信息已增加,可不必再增加。 (如果不添加,会报头文件找不到错误) 21 | 22 | 4.点击项目名称,点击“Build Phases”选项卡,在“Link Binary with Librarles”选项中,新增“AlipaySDK.framework”,“SystemConfiguration.framework”, security.framework 系统库文件。 23 | 如果项目中已有这几个库文件,可不必再增加。(如果不添加,会报link arm64 等错误) 24 | 25 | 5.配置url Scheme(点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“XXXXXX”。“XXXXXX”来自于文件Keys.h) (用于支付结束后的回调),需于代码中的Keys.h 中 urlSceheme一样 26 | 27 | 6.appdelegate中添加 openURL方法里面 28 | if ([url.host isEqualToString:@"safepay"]) { 29 | 30 | [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { 31 | NSLog(@"result = %@",resultDic); 32 | }]; 33 | } 34 | 35 | 7.修改程序中 36 | PARTNER(合作身份者id)、 37 | SELLER(收款支付宝账号)、 38 | RSA_PRIVATE(商户私钥)**如何生成商户私钥请自行查看支付宝官方文档。** 39 | 40 | 配置Android端: 41 | 42 | 添加插件 cordova plugin add 插件目录路径 43 | 修改Keys 中的PARTNER SELLER RSA_PRIVATE 44 | 45 | 46 | 最后: 47 | 调用方法请参看插件目录下www/index.js 中的testAlipay方法 48 | 49 | 50 | 如果想删除插件,Android端的只需要运行cordova命令就可以了,ios端的除了运行cordova命令,还需要按照安装时的步奏,手动删除库、文件以及代码 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | AlipayPlugin 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 34 | 35 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /src/android/Keys.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The MobileSecurePay Project 3 | * All right reserved. 4 | * author: shiqun.shi@alipay.com 5 | * 6 | * 提示:如何获取安全校验码和合作身份者id 7 | * 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) 8 | * 2.点击“商家服务”(https://b.alipay.com/order/myorder.htm) 9 | * 3.点击“查询合作者身份(pid)”、“查询安全校验码(key)” 10 | */ 11 | 12 | package com.vapps.alipay; 13 | 14 | // 15 | // 请参考 Android平台安全支付服务(msp)应用开发接口(4.2 RSA算法签名)部分,并使用压缩包中的openssl RSA密钥生成工具,生成一套RSA公私钥。 16 | // 这里签名时,只需要使用生成的RSA私钥。 17 | // Note: 为安全起见,使用RSA私钥进行签名的操作过程,应该尽量放到商家服务器端去进行。 18 | public final class Keys { 19 | 20 | //合作身份者id,以2088开头的16位纯数字 21 | public static final String PARTNER = ""; 22 | 23 | //收款支付宝账号 24 | public static final String SELLER = ""; 25 | 26 | //商户私钥,自助生成 pkcs8格式 27 | public static final String RSA_PRIVATE = ""; 28 | 29 | //支付宝默认公钥 ,请勿修改 30 | public static final String PUBLIC = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB"; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/android/PayResult.java: -------------------------------------------------------------------------------- 1 | package com.vapps.alipay; 2 | 3 | import android.text.TextUtils; 4 | 5 | public class PayResult { 6 | private String resultStatus; 7 | private String result; 8 | private String memo; 9 | 10 | public PayResult(String rawResult) { 11 | 12 | if (TextUtils.isEmpty(rawResult)) 13 | return; 14 | 15 | String[] resultParams = rawResult.split(";"); 16 | for (String resultParam : resultParams) { 17 | if (resultParam.startsWith("resultStatus")) { 18 | resultStatus = gatValue(resultParam, "resultStatus"); 19 | } 20 | if (resultParam.startsWith("result")) { 21 | result = gatValue(resultParam, "result"); 22 | } 23 | if (resultParam.startsWith("memo")) { 24 | memo = gatValue(resultParam, "memo"); 25 | } 26 | } 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | return "resultStatus={" + resultStatus + "};memo={" + memo 32 | + "};result={" + result + "}"; 33 | } 34 | 35 | private String gatValue(String content, String key) { 36 | String prefix = key + "={"; 37 | return content.substring(content.indexOf(prefix) + prefix.length(), 38 | content.lastIndexOf("}")); 39 | } 40 | 41 | /** 42 | * @return the resultStatus 43 | */ 44 | public String getResultStatus() { 45 | return resultStatus; 46 | } 47 | 48 | /** 49 | * @return the memo 50 | */ 51 | public String getMemo() { 52 | return memo; 53 | } 54 | 55 | /** 56 | * @return the result 57 | */ 58 | public String getResult() { 59 | return result; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/android/SignUtils.java: -------------------------------------------------------------------------------- 1 | package com.vapps.alipay; 2 | 3 | import java.security.KeyFactory; 4 | import java.security.PrivateKey; 5 | import java.security.spec.PKCS8EncodedKeySpec; 6 | 7 | public class SignUtils { 8 | 9 | private static final String ALGORITHM = "RSA"; 10 | 11 | private static final String SIGN_ALGORITHMS = "SHA1WithRSA"; 12 | 13 | private static final String DEFAULT_CHARSET = "UTF-8"; 14 | 15 | public static String sign(String content, String privateKey) { 16 | try { 17 | PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( 18 | Base64.decode(privateKey)); 19 | KeyFactory keyf = KeyFactory.getInstance(ALGORITHM); 20 | PrivateKey priKey = keyf.generatePrivate(priPKCS8); 21 | 22 | java.security.Signature signature = java.security.Signature 23 | .getInstance(SIGN_ALGORITHMS); 24 | 25 | signature.initSign(priKey); 26 | signature.update(content.getBytes(DEFAULT_CHARSET)); 27 | 28 | byte[] signed = signature.sign(); 29 | 30 | return Base64.encode(signed); 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | 35 | return null; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/android/libs/alipaysdk.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/android/libs/alipaysdk.jar -------------------------------------------------------------------------------- /src/android/libs/alipaysecsdk.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/android/libs/alipaysecsdk.jar -------------------------------------------------------------------------------- /src/android/libs/alipayutdid.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/android/libs/alipayutdid.jar -------------------------------------------------------------------------------- /src/ios/AlipayPlugin.h: -------------------------------------------------------------------------------- 1 | // 2 | // AlipayPlugin.h 3 | // TestAlipayDemo 4 | // 5 | // Created by chen on 15/5/13. 6 | // 7 | // 8 | 9 | #ifndef TestAlipayDemo_AlipayPlugin_h 10 | #define TestAlipayDemo_AlipayPlugin_h 11 | // 12 | //测试商品信息封装在Product中,外部商户可以根据自己商品实际情况定义 13 | // 14 | 15 | 16 | @interface AlipayPlugin : CDVPlugin { 17 | // Member variables go here. 18 | } 19 | 20 | - (void)pay:(CDVInvokedUrlCommand*)command; 21 | @end 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/ios/AlipayPlugin.m: -------------------------------------------------------------------------------- 1 | /********* AlipayPlugin.m Cordova Plugin Implementation *******/ 2 | 3 | #import 4 | #import "AlipayPlugin.h" 5 | #import 6 | #import "Order.h" 7 | #import "DataSigner.h" 8 | #import "Keys.h" 9 | 10 | 11 | @implementation AlipayPlugin 12 | 13 | - (void)pay:(CDVInvokedUrlCommand*)command 14 | { 15 | 16 | 17 | //应用注册scheme,在AlixPayDemo-Info.plist定义URL types 18 | NSString *appScheme = UrlScheme_Key; 19 | 20 | 21 | 22 | NSString *marketid = [command.arguments objectAtIndex:0]; 23 | NSString *subject = [command.arguments objectAtIndex:1]; 24 | NSString *body = [command.arguments objectAtIndex:2]; 25 | NSString *price = [command.arguments objectAtIndex:3]; 26 | 27 | NSString* orderInfo = [self getOrderInfo:price:subject:body:marketid]; 28 | 29 | NSString* signedStr = [self doRsa:orderInfo]; 30 | 31 | //将签名成功字符串格式化为订单字符串,请严格按照该格式 32 | NSString *orderString = nil; 33 | 34 | if (signedStr != nil) { 35 | orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", 36 | orderInfo, signedStr, @"RSA"]; 37 | 38 | [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) { 39 | NSLog(@"reslut = %@",resultDic); 40 | CDVPluginResult* pluginResult = nil; 41 | pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:resultDic]; 42 | [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; 43 | }]; 44 | 45 | } 46 | 47 | 48 | } 49 | 50 | 51 | 52 | 53 | -(NSString*)getOrderInfo:(NSString *)price:(NSString *)subject:(NSString *)body:(NSString *)marketid 54 | { 55 | 56 | 57 | /*=======================需要填写商户app申请的===================================*/ 58 | /* 59 | *商户的唯一的parnter和seller。 60 | *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。 61 | */ 62 | NSString *partner = PartnerID; 63 | NSString *seller = SellerID; 64 | 65 | /*============================================================================*/ 66 | 67 | /* 68 | *生成订单信息及签名 69 | */ 70 | Order *order = [[Order alloc] init]; 71 | order.partner = partner; 72 | order.seller = seller; 73 | order.tradeNO =marketid; //订单ID(由商家自行制定) 74 | 75 | order.productName = subject; //商品标题 76 | order.productDescription = body; //商品描述 77 | 78 | 79 | float pri=[price floatValue]; 80 | order.amount = [NSString stringWithFormat:@"%.2f",pri]; //商品价格 81 | 82 | order.notifyURL = @"http://www.xxx.com"; //回调URL 83 | 84 | order.service = @"mobile.securitypay.pay"; 85 | order.paymentType = @"1"; 86 | order.inputCharset = @"utf-8"; 87 | order.itBPay = @"30m"; 88 | order.showUrl = @"m.alipay.com"; 89 | 90 | //将商品信息拼接成字符串 91 | NSString *orderSpec = [order description]; 92 | NSLog(@"orderSpec = %@",orderSpec); 93 | 94 | return orderSpec; 95 | } 96 | 97 | //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode 98 | -(NSString*)doRsa:(NSString*)orderInfo 99 | { 100 | NSString *privateKey = PartnerPrivKey; 101 | id signer; 102 | signer = CreateRSADataSigner(privateKey); 103 | NSLog(@"签名的之后的字符串是:%@",signer); 104 | NSString *signedString = [signer signString:orderInfo]; 105 | return signedString; 106 | } 107 | 108 | 109 | 110 | @end 111 | -------------------------------------------------------------------------------- /src/ios/Keys.h: -------------------------------------------------------------------------------- 1 | // 2 | // Keys.h 3 | // TestAlipayDemo 4 | // 5 | // Created by chen on 15/5/13. 6 | // 7 | // 8 | // 提示:如何获取安全校验码和合作身份者id 9 | // 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) 10 | // 2.点击“商家服务”(https://b.alipay.com/order/myorder.htm) 11 | // 3.点击“查询合作者身份(pid)”、“查询安全校验码(key)” 12 | // 13 | 14 | #ifndef Alipay_Keys_h 15 | #define Alipay_Keys_h 16 | 17 | //合作身份者id,以2088开头的16位纯数字 18 | #define PartnerID @"" 19 | //收款支付宝账号 20 | #define SellerID @"" 21 | 22 | 23 | //应用注册scheme,在AlixPayDemo-Info.plist定义URL types 24 | #define UrlScheme_Key @"" 25 | 26 | //商户私钥,自助生成 27 | #define PartnerPrivKey @"" 28 | 29 | 30 | 31 | //支付宝公钥 无需修改 32 | #define AlipayPubKey @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB" 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Order.h: -------------------------------------------------------------------------------- 1 | // 2 | // Order.h 3 | // AlixPayDemo 4 | // 5 | // Created by 方彬 on 11/2/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface Order : NSObject 12 | 13 | @property(nonatomic, copy) NSString * partner; 14 | @property(nonatomic, copy) NSString * seller; 15 | @property(nonatomic, copy) NSString * tradeNO; 16 | @property(nonatomic, copy) NSString * productName; 17 | @property(nonatomic, copy) NSString * productDescription; 18 | @property(nonatomic, copy) NSString * amount; 19 | @property(nonatomic, copy) NSString * notifyURL; 20 | 21 | @property(nonatomic, copy) NSString * service; 22 | @property(nonatomic, copy) NSString * paymentType; 23 | @property(nonatomic, copy) NSString * inputCharset; 24 | @property(nonatomic, copy) NSString * itBPay; 25 | @property(nonatomic, copy) NSString * showUrl; 26 | 27 | 28 | @property(nonatomic, copy) NSString * rsaDate;//可选 29 | @property(nonatomic, copy) NSString * appID;//可选 30 | 31 | @property(nonatomic, readonly) NSMutableDictionary * extraParams; 32 | 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Order.m: -------------------------------------------------------------------------------- 1 | // 2 | // Order.m 3 | // AlixPayDemo 4 | // 5 | // Created by 方彬 on 11/2/13. 6 | // 7 | // 8 | 9 | #import "Order.h" 10 | 11 | @implementation Order 12 | 13 | - (NSString *)description { 14 | NSMutableString * discription = [NSMutableString string]; 15 | if (self.partner) { 16 | [discription appendFormat:@"partner=\"%@\"", self.partner]; 17 | } 18 | 19 | if (self.seller) { 20 | [discription appendFormat:@"&seller_id=\"%@\"", self.seller]; 21 | } 22 | if (self.tradeNO) { 23 | [discription appendFormat:@"&out_trade_no=\"%@\"", self.tradeNO]; 24 | } 25 | if (self.productName) { 26 | [discription appendFormat:@"&subject=\"%@\"", self.productName]; 27 | } 28 | 29 | if (self.productDescription) { 30 | [discription appendFormat:@"&body=\"%@\"", self.productDescription]; 31 | } 32 | if (self.amount) { 33 | [discription appendFormat:@"&total_fee=\"%@\"", self.amount]; 34 | } 35 | if (self.notifyURL) { 36 | [discription appendFormat:@"¬ify_url=\"%@\"", self.notifyURL]; 37 | } 38 | 39 | if (self.service) { 40 | [discription appendFormat:@"&service=\"%@\"",self.service];//mobile.securitypay.pay 41 | } 42 | if (self.paymentType) { 43 | [discription appendFormat:@"&payment_type=\"%@\"",self.paymentType];//1 44 | } 45 | 46 | if (self.inputCharset) { 47 | [discription appendFormat:@"&_input_charset=\"%@\"",self.inputCharset];//utf-8 48 | } 49 | if (self.itBPay) { 50 | [discription appendFormat:@"&it_b_pay=\"%@\"",self.itBPay];//30m 51 | } 52 | if (self.showUrl) { 53 | [discription appendFormat:@"&show_url=\"%@\"",self.showUrl];//m.alipay.com 54 | } 55 | if (self.rsaDate) { 56 | [discription appendFormat:@"&sign_date=\"%@\"",self.rsaDate]; 57 | } 58 | if (self.appID) { 59 | [discription appendFormat:@"&app_id=\"%@\"",self.appID]; 60 | } 61 | for (NSString * key in [self.extraParams allKeys]) { 62 | [discription appendFormat:@"&%@=\"%@\"", key, [self.extraParams objectForKey:key]]; 63 | } 64 | return discription; 65 | } 66 | 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/DataSigner.h: -------------------------------------------------------------------------------- 1 | // 2 | // DataSigner.h 3 | // AlixPayDemo 4 | // 5 | // Created by Jing Wen on 8/2/11. 6 | // Copyright 2011 alipay.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef enum DataSignAlgorithm { 13 | DataSignAlgorithmRSA, 14 | DataSignAlgorithmMD5, 15 | } DataSignAlgorithm; 16 | 17 | @protocol DataSigner 18 | 19 | - (NSString *)algorithmName; 20 | - (NSString *)signString:(NSString *)string; 21 | 22 | @end 23 | 24 | id CreateRSADataSigner(NSString *privateKey); 25 | 26 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/DataSigner.m: -------------------------------------------------------------------------------- 1 | // 2 | // DataSigner.m 3 | // AlixPayDemo 4 | // 5 | // Created by Jing Wen on 8/2/11. 6 | // Copyright 2011 alipay.com. All rights reserved. 7 | // 8 | 9 | #import "DataSigner.h" 10 | #import "RSADataSigner.h" 11 | #import "MD5DataSigner.h" 12 | 13 | id CreateRSADataSigner(NSString *privateKey) { 14 | 15 | return [[RSADataSigner alloc] initWithPrivateKey:privateKey]; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/DataVerifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // DataVerifier.h 3 | // AlixPayDemo 4 | // 5 | // Created by Jing Wen on 8/2/11. 6 | // Copyright 2011 alipay.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @protocol DataVerifier 13 | 14 | - (NSString *)algorithmName; 15 | - (BOOL)verifyString:(NSString *)string withSign:(NSString *)signString; 16 | 17 | @end 18 | 19 | id CreateRSADataVerifier(NSString *publicKey); 20 | 21 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/DataVerifier.m: -------------------------------------------------------------------------------- 1 | // 2 | // DataVerifier.m 3 | // AlixPayDemo 4 | // 5 | // Created by Jing Wen on 8/2/11. 6 | // Copyright 2011 alipay.com. All rights reserved. 7 | // 8 | 9 | #import "DataVerifier.h" 10 | 11 | 12 | #import "RSADataVerifier.h" 13 | 14 | id CreateRSADataVerifier(NSString *publicKey) { 15 | 16 | return [[RSADataVerifier alloc] initWithPublicKey:publicKey]; 17 | 18 | } -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/MD5DataSigner.h: -------------------------------------------------------------------------------- 1 | // 2 | // MD5DataSigner.h 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DataSigner.h" 11 | 12 | @interface MD5DataSigner : NSObject { 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/MD5DataSigner.m: -------------------------------------------------------------------------------- 1 | // 2 | // MD5DataSigner.m 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "MD5DataSigner.h" 10 | 11 | 12 | @implementation MD5DataSigner 13 | 14 | - (NSString *)algorithmName { 15 | return @"MD5"; 16 | } 17 | 18 | - (NSString *)signString:(NSString *)string { 19 | return @""; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/NSDataEx.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDataEx.h 3 | // iX3.0 4 | // 5 | // Created by Feng Huajun on 09-4-16. 6 | // Copyright 2009 Infothinker. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSData (NSDataBase64Additions) 13 | + (NSData *) dataWithBase64EncodedString:(NSString *) string; 14 | - (id) initWithBase64EncodedString:(NSString *) string; 15 | 16 | - (NSString *) base64Encoding; 17 | - (NSString *) base64EncodingWithLineLength:(unsigned int) lineLength; 18 | //- (NSString*) urlEncodedString; 19 | 20 | @end -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/NSDataEx.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSDataEx.m 3 | // iX3.0 4 | // 5 | // Created by Feng Huajun on 09-4-16. 6 | // Copyright 2009 Infothinker. All rights reserved. 7 | // 8 | 9 | #import "NSDataEx.h" 10 | 11 | static char encodingTable[64] = { 12 | 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 13 | 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', 14 | 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 15 | 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; 16 | 17 | @implementation NSData (NSDataBase64Additions) 18 | 19 | + (NSData *) dataWithBase64EncodedString:(NSString *) string { 20 | NSData *result = [[NSData alloc] initWithBase64EncodedString:string]; 21 | return result; 22 | } 23 | 24 | - (id) initWithBase64EncodedString:(NSString *) string { 25 | NSMutableData *mutableData = nil; 26 | 27 | if( string ) { 28 | unsigned long ixtext = 0; 29 | unsigned long lentext = 0; 30 | unsigned char ch = 0; 31 | unsigned char inbuf[4], outbuf[3]; 32 | short i = 0, ixinbuf = 0; 33 | BOOL flignore = NO; 34 | BOOL flendtext = NO; 35 | NSData *base64Data = nil; 36 | const unsigned char *base64Bytes = nil; 37 | 38 | // Convert the string to ASCII data. 39 | base64Data = [string dataUsingEncoding:NSASCIIStringEncoding]; 40 | base64Bytes = [base64Data bytes]; 41 | mutableData = [NSMutableData dataWithCapacity:[base64Data length]]; 42 | lentext = [base64Data length]; 43 | 44 | while( YES ) { 45 | if( ixtext >= lentext ) break; 46 | ch = base64Bytes[ixtext++]; 47 | flignore = NO; 48 | 49 | if( ( ch >= 'A' ) && ( ch <= 'Z' ) ) ch = ch - 'A'; 50 | else if( ( ch >= 'a' ) && ( ch <= 'z' ) ) ch = ch - 'a' + 26; 51 | else if( ( ch >= '0' ) && ( ch <= '9' ) ) ch = ch - '0' + 52; 52 | else if( ch == '+' ) ch = 62; 53 | else if( ch == '=' ) flendtext = YES; 54 | else if( ch == '/' ) ch = 63; 55 | else flignore = YES; 56 | 57 | if( ! flignore ) { 58 | short ctcharsinbuf = 3; 59 | BOOL flbreak = NO; 60 | 61 | if( flendtext ) { 62 | if( ! ixinbuf ) break; 63 | if( ( ixinbuf == 1 ) || ( ixinbuf == 2 ) ) ctcharsinbuf = 1; 64 | else ctcharsinbuf = 2; 65 | ixinbuf = 3; 66 | flbreak = YES; 67 | } 68 | 69 | inbuf [ixinbuf++] = ch; 70 | 71 | if( ixinbuf == 4 ) { 72 | ixinbuf = 0; 73 | outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 ); 74 | outbuf [1] = ( ( inbuf[1] & 0x0F ) << 4 ) | ( ( inbuf[2] & 0x3C ) >> 2 ); 75 | outbuf [2] = ( ( inbuf[2] & 0x03 ) << 6 ) | ( inbuf[3] & 0x3F ); 76 | 77 | for( i = 0; i < ctcharsinbuf; i++ ) 78 | [mutableData appendBytes:&outbuf[i] length:1]; 79 | } 80 | 81 | if( flbreak ) break; 82 | } 83 | } 84 | } 85 | 86 | self = [self initWithData:mutableData]; 87 | return self; 88 | } 89 | 90 | #pragma mark - 91 | 92 | - (NSString *) base64Encoding { 93 | return [self base64EncodingWithLineLength:0]; 94 | } 95 | 96 | - (NSString *) base64EncodingWithLineLength:(unsigned int) lineLength { 97 | const unsigned char *bytes = [self bytes]; 98 | NSMutableString *result = [NSMutableString stringWithCapacity:[self length]]; 99 | unsigned long ixtext = 0; 100 | unsigned long lentext = [self length]; 101 | long ctremaining = 0; 102 | unsigned char inbuf[3], outbuf[4]; 103 | short i = 0; 104 | short charsonline = 0, ctcopy = 0; 105 | unsigned long ix = 0; 106 | 107 | while( YES ) { 108 | ctremaining = lentext - ixtext; 109 | if( ctremaining <= 0 ) break; 110 | 111 | for( i = 0; i < 3; i++ ) { 112 | ix = ixtext + i; 113 | if( ix < lentext ) inbuf[i] = bytes[ix]; 114 | else inbuf [i] = 0; 115 | } 116 | 117 | outbuf [0] = (inbuf [0] & 0xFC) >> 2; 118 | outbuf [1] = ((inbuf [0] & 0x03) << 4) | ((inbuf [1] & 0xF0) >> 4); 119 | outbuf [2] = ((inbuf [1] & 0x0F) << 2) | ((inbuf [2] & 0xC0) >> 6); 120 | outbuf [3] = inbuf [2] & 0x3F; 121 | ctcopy = 4; 122 | 123 | switch( ctremaining ) { 124 | case 1: 125 | ctcopy = 2; 126 | break; 127 | case 2: 128 | ctcopy = 3; 129 | break; 130 | } 131 | 132 | for( i = 0; i < ctcopy; i++ ) 133 | [result appendFormat:@"%c", encodingTable[outbuf[i]]]; 134 | 135 | for( i = ctcopy; i < 4; i++ ) 136 | [result appendFormat:@"%c",'=']; 137 | 138 | ixtext += 3; 139 | charsonline += 4; 140 | 141 | if( lineLength > 0 ) { 142 | if (charsonline >= lineLength) { 143 | charsonline = 0; 144 | [result appendString:@"\n"]; 145 | } 146 | } 147 | } 148 | 149 | return result; 150 | } 151 | 152 | 153 | 154 | //- (NSString*) urlEncodedString 155 | //{ 156 | // char *hex = "0123456789ABCDEF"; 157 | // unsigned char* data = (unsigned char*)[self bytes]; 158 | // int len = [self length]; 159 | // //NSLog(@"len = %d", len); 160 | // NSMutableString* s = [NSMutableString string]; 161 | // for(int i = 0;i> 4]; 173 | // // NSLog(@"ts = %c", ts1); 174 | // NSString* ts = [[NSString alloc] initWithCString:&ts1 length:1]; 175 | // [s appendString:ts]; 176 | // [ts release]; 177 | // char ts2 = hex[c & 15]; 178 | // ts = [[NSString alloc] initWithCString:&ts2 length:1]; 179 | // [s appendString:ts]; 180 | // [ts release]; 181 | // 182 | // } 183 | // } 184 | // return s; 185 | //} 186 | 187 | @end -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/RSADataSigner.h: -------------------------------------------------------------------------------- 1 | // 2 | // RSADataSigner.h 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DataSigner.h" 11 | 12 | @interface RSADataSigner : NSObject { 13 | NSString * _privateKey; 14 | } 15 | 16 | - (id)initWithPrivateKey:(NSString *)privateKey; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/RSADataSigner.m: -------------------------------------------------------------------------------- 1 | // 2 | // RSADataSigner.m 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "RSADataSigner.h" 10 | #import "openssl_wrapper.h" 11 | #import "NSDataEx.h" 12 | 13 | @implementation RSADataSigner 14 | 15 | - (id)initWithPrivateKey:(NSString *)privateKey { 16 | if (self = [super init]) { 17 | _privateKey = [privateKey copy]; 18 | } 19 | return self; 20 | } 21 | 22 | - (NSString*)urlEncodedString:(NSString *)string 23 | { 24 | NSString * encodedString = (__bridge_transfer NSString*) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 ); 25 | 26 | return encodedString; 27 | } 28 | 29 | 30 | - (NSString *)formatPrivateKey:(NSString *)privateKey { 31 | const char *pstr = [privateKey UTF8String]; 32 | int len = [privateKey length]; 33 | NSMutableString *result = [NSMutableString string]; 34 | [result appendString:@"-----BEGIN PRIVATE KEY-----\n"]; 35 | int index = 0; 36 | int count = 0; 37 | while (index < len) { 38 | char ch = pstr[index]; 39 | if (ch == '\r' || ch == '\n') { 40 | ++index; 41 | continue; 42 | } 43 | [result appendFormat:@"%c", ch]; 44 | if (++count == 79) 45 | { 46 | [result appendString:@"\n"]; 47 | count = 0; 48 | } 49 | index++; 50 | } 51 | [result appendString:@"\n-----END PRIVATE KEY-----"]; 52 | return result; 53 | } 54 | 55 | - (NSString *)algorithmName { 56 | return @"RSA"; 57 | } 58 | 59 | //该签名方法仅供参考,外部商户可用自己方法替换 60 | - (NSString *)signString:(NSString *)string { 61 | 62 | //在Document文件夹下创建私钥文件 63 | NSString * signedString = nil; 64 | NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 65 | NSString *path = [documentPath stringByAppendingPathComponent:@"AlixPay-RSAPrivateKey"]; 66 | 67 | // 68 | // 把密钥写入文件 69 | // 70 | NSString *formatKey = [self formatPrivateKey:_privateKey]; 71 | [formatKey writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil]; 72 | 73 | const char *message = [string cStringUsingEncoding:NSUTF8StringEncoding]; 74 | int messageLength = strlen(message); 75 | unsigned char *sig = (unsigned char *)malloc(256); 76 | unsigned int sig_len; 77 | int ret = rsa_sign_with_private_key_pem((char *)message, messageLength, sig, &sig_len, (char *)[path UTF8String]); 78 | //签名成功,需要给签名字符串base64编码和UrlEncode,该两个方法也可以根据情况替换为自己函数 79 | if (ret == 1) { 80 | NSString * base64String = base64StringFromData([NSData dataWithBytes:sig length:sig_len]); 81 | //NSData * UTF8Data = [base64String dataUsingEncoding:NSUTF8StringEncoding]; 82 | signedString = [self urlEncodedString:base64String]; 83 | } 84 | 85 | free(sig); 86 | return signedString; 87 | } 88 | 89 | @end 90 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/RSADataVerifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // RSADataVerifier.h 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DataVerifier.h" 11 | 12 | @interface RSADataVerifier : NSObject { 13 | NSString *_publicKey; 14 | } 15 | 16 | - (id)initWithPublicKey:(NSString *)publicKey; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/RSADataVerifier.m: -------------------------------------------------------------------------------- 1 | // 2 | // AlixPayDataVerifier.m 3 | // SafepayService 4 | // 5 | // Created by wenbi on 11-4-11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "RSADataVerifier.h" 10 | #import "openssl_wrapper.h" 11 | #import "NSDataEx.h" 12 | #import "base64.h" 13 | 14 | @implementation RSADataVerifier 15 | 16 | - (id)initWithPublicKey:(NSString *)publicKey { 17 | if (self = [super init]) { 18 | _publicKey = [publicKey copy]; 19 | } 20 | return self; 21 | } 22 | 23 | 24 | - (NSString *)formatPublicKey:(NSString *)publicKey { 25 | 26 | NSMutableString *result = [NSMutableString string]; 27 | 28 | [result appendString:@"-----BEGIN PUBLIC KEY-----\n"]; 29 | 30 | int count = 0; 31 | 32 | for (int i = 0; i < [publicKey length]; ++i) { 33 | 34 | unichar c = [publicKey characterAtIndex:i]; 35 | if (c == '\n' || c == '\r') { 36 | continue; 37 | } 38 | [result appendFormat:@"%c", c]; 39 | if (++count == 76) { 40 | [result appendString:@"\n"]; 41 | count = 0; 42 | } 43 | 44 | } 45 | 46 | [result appendString:@"\n-----END PUBLIC KEY-----\n"]; 47 | 48 | return result; 49 | 50 | } 51 | 52 | - (NSString *)algorithmName { 53 | return @"RSA"; 54 | } 55 | 56 | - (BOOL)verifyString:(NSString *)string withSign:(NSString *)signString { 57 | 58 | // const char *message = [string cStringUsingEncoding:NSUTF8StringEncoding]; 59 | // int messageLength = strlen(message); 60 | // 61 | // unsigned char *signature = (unsigned char *)[signString UTF8String]; 62 | // unsigned int signatureLength = (unsigned int)strlen((char *)signature); 63 | // char *encodedPath = (char *)[_pathForPEMFile cStringUsingEncoding:NSUTF8StringEncoding]; 64 | 65 | NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 66 | NSString *path = [documentPath stringByAppendingPathComponent:@"AlixPay-RSAPublicKey"]; 67 | 68 | // 69 | // 把密钥写入文件 70 | // 71 | NSString *formatKey = [self formatPublicKey:_publicKey]; 72 | [formatKey writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil]; 73 | 74 | BOOL ret; 75 | rsaVerifyString(string, signString, path, &ret); 76 | return ret; 77 | 78 | } 79 | 80 | @end 81 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/base64.h: -------------------------------------------------------------------------------- 1 | /** 2 | * \file base64.h 3 | */ 4 | #ifndef XYSSL_BASE64_H 5 | #define XYSSL_BASE64_H 6 | 7 | #define XYSSL_ERR_BASE64_INVALID_CHARACTER -0x0012 8 | #define XYSSL_ERR_BASE64_BUFFER_TOO_SMALL -0x0010 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | /** 15 | * \brief Encode a buffer into base64 format 16 | * 17 | * \param dst destination buffer 18 | * \param dlen size of the buffer 19 | * \param src source buffer 20 | * \param slen amount of data to be encoded 21 | * 22 | * \return 0 if successful, or XYSSL_ERR_BASE64_BUFFER_TOO_SMALL. 23 | * *dlen is always updated to reflect the amount 24 | * of data that has (or would have) been written. 25 | * 26 | * \note Call this function with *dlen = 0 to obtain the 27 | * required buffer size in *dlen 28 | */ 29 | int base64_encode( unsigned char *dst, int *dlen, 30 | unsigned char *src, int slen ); 31 | 32 | /** 33 | * \brief Decode a base64-formatted buffer 34 | * 35 | * \param dst destination buffer 36 | * \param dlen size of the buffer 37 | * \param src source buffer 38 | * \param slen amount of data to be decoded 39 | * 40 | * \return 0 if successful, XYSSL_ERR_BASE64_BUFFER_TOO_SMALL, or 41 | * XYSSL_ERR_BASE64_INVALID_DATA if the input data is not 42 | * correct. *dlen is always updated to reflect the amount 43 | * of data that has (or would have) been written. 44 | * 45 | * \note Call this function with *dlen = 0 to obtain the 46 | * required buffer size in *dlen 47 | */ 48 | int base64_decode( unsigned char *dst, int *dlen, 49 | unsigned char *src, int slen ); 50 | 51 | /** 52 | * \brief Checkup routine 53 | * 54 | * \return 0 if successful, or 1 if the test failed 55 | */ 56 | int base64_self_test( int verbose ); 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | 62 | 63 | @interface Base64 : NSObject 64 | 65 | + (NSData *)decodeString:(NSString *)string; 66 | 67 | @end 68 | 69 | 70 | #endif /* base64.h */ 71 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/base64.m: -------------------------------------------------------------------------------- 1 | /* 2 | * RFC 1521 base64 encoding/decoding 3 | * 4 | * Copyright (C) 2006-2007 Christophe Devine 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | //#include "stdafx.h" 21 | #include "config.h" 22 | 23 | #if defined(XYSSL_BASE64_C) 24 | 25 | #include "base64.h" 26 | 27 | static const unsigned char base64_enc_map[64] = 28 | { 29 | 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 30 | 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 31 | 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 32 | 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 33 | 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 34 | 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', 35 | '8', '9', '+', '/' 36 | }; 37 | 38 | static const unsigned char base64_dec_map[128] = 39 | { 40 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 41 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 42 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 43 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 44 | 127, 127, 127, 62, 127, 127, 127, 63, 52, 53, 45 | 54, 55, 56, 57, 58, 59, 60, 61, 127, 127, 46 | 127, 64, 127, 127, 127, 0, 1, 2, 3, 4, 47 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 48 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 49 | 25, 127, 127, 127, 127, 127, 127, 26, 27, 28, 50 | 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 51 | 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52 | 49, 50, 51, 127, 127, 127, 127, 127 53 | }; 54 | 55 | /* 56 | * Encode a buffer into base64 format 57 | */ 58 | int base64_encode( unsigned char *dst, int *dlen, 59 | unsigned char *src, int slen ) 60 | { 61 | int i, n; 62 | int C1, C2, C3; 63 | unsigned char *p; 64 | 65 | if( slen == 0 ) 66 | return( 0 ); 67 | 68 | n = (slen << 3) / 6; 69 | 70 | switch( (slen << 3) - (n * 6) ) 71 | { 72 | case 2: n += 3; break; 73 | case 4: n += 2; break; 74 | default: break; 75 | } 76 | 77 | if( *dlen < n + 1 ) 78 | { 79 | *dlen = n + 1; 80 | return( XYSSL_ERR_BASE64_BUFFER_TOO_SMALL ); 81 | } 82 | 83 | n = (slen / 3) * 3; 84 | 85 | for( i = 0, p = dst; i < n; i += 3 ) 86 | { 87 | C1 = *src++; 88 | C2 = *src++; 89 | C3 = *src++; 90 | 91 | *p++ = base64_enc_map[(C1 >> 2) & 0x3F]; 92 | *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F]; 93 | *p++ = base64_enc_map[(((C2 & 15) << 2) + (C3 >> 6)) & 0x3F]; 94 | *p++ = base64_enc_map[C3 & 0x3F]; 95 | } 96 | 97 | if( i < slen ) 98 | { 99 | C1 = *src++; 100 | C2 = ((i + 1) < slen) ? *src++ : 0; 101 | 102 | *p++ = base64_enc_map[(C1 >> 2) & 0x3F]; 103 | *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F]; 104 | 105 | if( (i + 1) < slen ) 106 | *p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F]; 107 | else *p++ = '='; 108 | 109 | *p++ = '='; 110 | } 111 | 112 | *dlen = p - dst; 113 | *p = 0; 114 | 115 | return( 0 ); 116 | } 117 | 118 | /* 119 | * Decode a base64-formatted buffer 120 | */ 121 | int base64_decode( unsigned char *dst, int *dlen, 122 | unsigned char *src, int slen ) 123 | { 124 | int i, j, n; 125 | unsigned long x; 126 | unsigned char *p; 127 | 128 | for( i = j = n = 0; i < slen; i++ ) 129 | { 130 | if( ( slen - i ) >= 2 && 131 | src[i] == '\r' && src[i + 1] == '\n' ) 132 | continue; 133 | 134 | if( src[i] == '\n' ) 135 | continue; 136 | 137 | if( src[i] == '=' && ++j > 2 ) 138 | return( XYSSL_ERR_BASE64_INVALID_CHARACTER ); 139 | 140 | if( src[i] > 127 || base64_dec_map[src[i]] == 127 ) 141 | return( XYSSL_ERR_BASE64_INVALID_CHARACTER ); 142 | 143 | if( base64_dec_map[src[i]] < 64 && j != 0 ) 144 | return( XYSSL_ERR_BASE64_INVALID_CHARACTER ); 145 | 146 | n++; 147 | } 148 | 149 | if( n == 0 ) 150 | return( 0 ); 151 | 152 | n = ((n * 6) + 7) >> 3; 153 | 154 | if( *dlen < n ) 155 | { 156 | *dlen = n; 157 | return( XYSSL_ERR_BASE64_BUFFER_TOO_SMALL ); 158 | } 159 | 160 | for( j = 3, n = x = 0, p = dst; i > 0; i--, src++ ) 161 | { 162 | if( *src == '\r' || *src == '\n' ) 163 | continue; 164 | 165 | j -= ( base64_dec_map[*src] == 64 ); 166 | x = (x << 6) | ( base64_dec_map[*src] & 0x3F ); 167 | 168 | if( ++n == 4 ) 169 | { 170 | n = 0; 171 | if( j > 0 ) *p++ = (unsigned char)( x >> 16 ); 172 | if( j > 1 ) *p++ = (unsigned char)( x >> 8 ); 173 | if( j > 2 ) *p++ = (unsigned char)( x ); 174 | } 175 | } 176 | 177 | *dlen = p - dst; 178 | 179 | return( 0 ); 180 | } 181 | 182 | @implementation Base64 183 | 184 | + (NSData *)decodeString:(NSString *)string { 185 | 186 | char *dst = NULL; 187 | int dlen = 0; 188 | 189 | char *src = (char *)[string UTF8String]; 190 | int slen = (int)strlen((char *)src); 191 | 192 | int ret = base64_decode((unsigned char *)dst, &dlen, (unsigned char *)src, slen); 193 | if (ret == XYSSL_ERR_BASE64_BUFFER_TOO_SMALL) { 194 | dst = (char *)malloc(dlen); 195 | ret = base64_decode((unsigned char *)dst, &dlen, (unsigned char *)src, slen); 196 | } 197 | 198 | NSData *data = [NSData dataWithBytes:dst length:dlen]; 199 | if (dst != NULL) { 200 | free(dst); 201 | } 202 | return data; 203 | } 204 | 205 | @end 206 | 207 | #endif 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/config.h: -------------------------------------------------------------------------------- 1 | /** 2 | * \file config.h 3 | * 4 | * This set of compile-time options may be used to enable 5 | * or disable features selectively, and reduce the global 6 | * memory footprint. 7 | */ 8 | #ifndef XYSSL_CONFIG_H 9 | #define XYSSL_CONFIG_H 10 | 11 | #ifndef _CRT_SECURE_NO_DEPRECATE 12 | #define _CRT_SECURE_NO_DEPRECATE 1 13 | #endif 14 | 15 | /* 16 | * Uncomment if native integers are 8-bit wide. 17 | * 18 | #define XYSSL_HAVE_INT8 19 | */ 20 | 21 | /* 22 | * Uncomment if native integers are 16-bit wide. 23 | * 24 | #define XYSSL_HAVE_INT16 25 | */ 26 | 27 | /* 28 | * Uncomment if the compiler supports long long. 29 | * 30 | #define XYSSL_HAVE_LONGLONG 31 | */ 32 | 33 | /* 34 | * Uncomment to enable the use of assembly code. 35 | */ 36 | //#define XYSSL_HAVE_ASM 37 | 38 | /* 39 | * Uncomment if the CPU supports SSE2 (IA-32 specific). 40 | * 41 | #define XYSSL_HAVE_SSE2 42 | */ 43 | 44 | /* 45 | * Enable all SSL/TLS debugging messages. 46 | #define XYSSL_DEBUG_MSG 47 | */ 48 | 49 | /* 50 | * Enable the checkup functions (*_self_test). 51 | */ 52 | #define XYSSL_SELF_TEST 53 | 54 | 55 | /* 56 | * Enable the prime-number generation code. 57 | */ 58 | #define XYSSL_GENPRIME 59 | 60 | /* 61 | * Uncomment this macro to store the AES tables in ROM. 62 | * 63 | #define XYSSL_AES_ROM_TABLES 64 | */ 65 | 66 | /* 67 | * Module: library/aes.c 68 | * Caller: library/ssl_tls.c 69 | * 70 | * This module enables the following ciphersuites: 71 | * SSL_RSA_AES_128_SHA 72 | * SSL_RSA_AES_256_SHA 73 | * SSL_EDH_RSA_AES_256_SHA 74 | */ 75 | #define XYSSL_AES_C 76 | 77 | /* 78 | * Module: library/arc4.c 79 | * Caller: library/ssl_tls.c 80 | * 81 | * This module enables the following ciphersuites: 82 | * SSL_RSA_RC4_128_MD5 83 | * SSL_RSA_RC4_128_SHA 84 | */ 85 | #define XYSSL_ARC4_C 86 | 87 | /* 88 | * Module: library/base64.c 89 | * Caller: library/x509parse.c 90 | * 91 | * This module is required for X.509 support. 92 | */ 93 | #define XYSSL_BASE64_C 94 | 95 | /* 96 | * Module: library/bignum.c 97 | * Caller: library/dhm.c 98 | * library/rsa.c 99 | * library/ssl_tls.c 100 | * library/x509parse.c 101 | * 102 | * This module is required for RSA and DHM support. 103 | */ 104 | #define XYSSL_BIGNUM_C 105 | 106 | /* 107 | * Module: library/certs.c 108 | * Caller: 109 | * 110 | * This module is used for testing (ssl_client/server). 111 | */ 112 | #define XYSSL_CERTS_C 113 | 114 | /* 115 | * Module: library/debug.c 116 | * Caller: library/ssl_cli.c 117 | * library/ssl_srv.c 118 | * library/ssl_tls.c 119 | * 120 | * This module provides debugging functions. 121 | #define XYSSL_DEBUG_C 122 | */ 123 | 124 | /* 125 | * Module: library/des.c 126 | * Caller: library/ssl_tls.c 127 | * 128 | * This module enables the following ciphersuites: 129 | * SSL_RSA_DES_168_SHA 130 | * SSL_EDH_RSA_DES_168_SHA 131 | */ 132 | #define XYSSL_DES_C 133 | 134 | /* 135 | * Module: library/dhm.c 136 | * Caller: library/ssl_cli.c 137 | * library/ssl_srv.c 138 | * 139 | * This module enables the following ciphersuites: 140 | * SSL_EDH_RSA_DES_168_SHA 141 | * SSL_EDH_RSA_AES_256_SHA 142 | */ 143 | #define XYSSL_DHM_C 144 | 145 | /* 146 | * Module: library/havege.c 147 | * Caller: 148 | * 149 | * This module enables the HAVEGE random number generator. 150 | */ 151 | #define XYSSL_HAVEGE_C 152 | 153 | /* 154 | * Module: library/md2.c 155 | * Caller: library/x509parse.c 156 | * 157 | * Uncomment to enable support for (rare) MD2-signed X.509 certs. 158 | * 159 | #define XYSSL_MD2_C 160 | */ 161 | 162 | /* 163 | * Module: library/md4.c 164 | * Caller: library/x509parse.c 165 | * 166 | * Uncomment to enable support for (rare) MD4-signed X.509 certs. 167 | * 168 | #define XYSSL_MD4_C 169 | */ 170 | 171 | /* 172 | * Module: library/md5.c 173 | * Caller: library/ssl_tls.c 174 | * library/x509parse.c 175 | * 176 | * This module is required for SSL/TLS and X.509. 177 | */ 178 | #define XYSSL_MD5_C 179 | 180 | /* 181 | * Module: library/net.c 182 | * Caller: 183 | * 184 | * This module provides TCP/IP networking routines. 185 | */ 186 | #define XYSSL_NET_C 187 | 188 | /* 189 | * Module: library/padlock.c 190 | * Caller: library/aes.c 191 | * 192 | * This modules adds support for the VIA PadLock on x86. 193 | */ 194 | #define XYSSL_PADLOCK_C 195 | 196 | /* 197 | * Module: library/rsa.c 198 | * Caller: library/ssl_cli.c 199 | * library/ssl_srv.c 200 | * library/ssl_tls.c 201 | * library/x509.c 202 | * 203 | * This module is required for SSL/TLS and MD5-signed certificates. 204 | */ 205 | #define XYSSL_RSA_C 206 | 207 | /* 208 | * Module: library/sha1.c 209 | * Caller: library/ssl_cli.c 210 | * library/ssl_srv.c 211 | * library/ssl_tls.c 212 | * library/x509parse.c 213 | * 214 | * This module is required for SSL/TLS and SHA1-signed certificates. 215 | */ 216 | #define XYSSL_SHA1_C 217 | 218 | /* 219 | * Module: library/sha2.c 220 | * Caller: 221 | * 222 | * This module adds support for SHA-224 and SHA-256. 223 | */ 224 | #define XYSSL_SHA2_C 225 | 226 | /* 227 | * Module: library/sha4.c 228 | * Caller: 229 | * 230 | * This module adds support for SHA-384 and SHA-512. 231 | */ 232 | #define XYSSL_SHA4_C 233 | 234 | /* 235 | * Module: library/ssl_cli.c 236 | * Caller: 237 | * 238 | * This module is required for SSL/TLS client support. 239 | */ 240 | #define XYSSL_SSL_CLI_C 241 | 242 | /* 243 | * Module: library/ssl_srv.c 244 | * Caller: 245 | * 246 | * This module is required for SSL/TLS server support. 247 | */ 248 | #define XYSSL_SSL_SRV_C 249 | 250 | /* 251 | * Module: library/ssl_tls.c 252 | * Caller: library/ssl_cli.c 253 | * library/ssl_srv.c 254 | * 255 | * This module is required for SSL/TLS. 256 | */ 257 | #define XYSSL_SSL_TLS_C 258 | 259 | /* 260 | * Module: library/timing.c 261 | * Caller: library/havege.c 262 | * 263 | * This module is used by the HAVEGE random number generator. 264 | */ 265 | #define XYSSL_TIMING_C 266 | 267 | /* 268 | * Module: library/x509parse.c 269 | * Caller: library/ssl_cli.c 270 | * library/ssl_srv.c 271 | * library/ssl_tls.c 272 | * 273 | * This module is required for X.509 certificate parsing. 274 | */ 275 | #define XYSSL_X509_PARSE_C 276 | 277 | /* 278 | * Module: library/x509_write.c 279 | * Caller: 280 | * 281 | * This module is required for X.509 certificate writing. 282 | */ 283 | #define XYSSL_X509_WRITE_C 284 | 285 | #endif /* config.h */ 286 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/openssl_wrapper.h: -------------------------------------------------------------------------------- 1 | // 2 | // openssl_wrapper.h 3 | // ThirdDemoApp 4 | // 5 | // Created by Xu Hanjie on 11-1-20. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | int rsa_sign_with_private_key_pem(char *message, int message_length 10 | , unsigned char *signature, unsigned int *signature_length 11 | , char *private_key_file_path); 12 | int rsa_verify_with_public_key_pem(char *message, int message_length 13 | , unsigned char *signature, unsigned int signature_length 14 | , char *public_key_file_path); 15 | 16 | NSString *base64StringFromData(NSData *signature); 17 | NSData *dataFromBase64String(NSString *base64String); 18 | NSString *rsaSignString(NSString *stringToSign, NSString *privateKeyFilePath, BOOL *signSuccess); 19 | void rsaVerifyString(NSString *stringToVerify, NSString *signature, NSString *publicKeyFilePath, BOOL *verifySuccess); 20 | NSString *formattedPEMString(NSString *originalString); 21 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/Util/openssl_wrapper.m: -------------------------------------------------------------------------------- 1 | // 2 | // openssl_wrapper.m 3 | // ThirdDemoApp 4 | // 5 | // Created by Xu Hanjie on 11-1-20. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "openssl_wrapper.h" 10 | 11 | #import "rsa.h" 12 | #include "pem.h" 13 | #include "md5.h" 14 | #include "bio.h" 15 | #include "sha.h" 16 | #include 17 | 18 | 19 | int rsa_sign_with_private_key_pem(char *message, int message_length 20 | , unsigned char *signature, unsigned int *signature_length 21 | , char *private_key_file_path) 22 | { 23 | unsigned char sha1[20]; 24 | SHA1((unsigned char *)message, message_length, sha1); 25 | int success = 0; 26 | BIO *bio_private = NULL; 27 | RSA *rsa_private = NULL; 28 | bio_private = BIO_new(BIO_s_file()); 29 | BIO_read_filename(bio_private, private_key_file_path); 30 | rsa_private = PEM_read_bio_RSAPrivateKey(bio_private, NULL, NULL, ""); 31 | if (rsa_private != nil) { 32 | if (1 == RSA_check_key(rsa_private)) 33 | { 34 | int rsa_sign_valid = RSA_sign(NID_sha1 35 | , sha1, 20 36 | , signature, signature_length 37 | , rsa_private); 38 | if (1 == rsa_sign_valid) 39 | { 40 | success = 1; 41 | } 42 | } 43 | BIO_free_all(bio_private); 44 | } 45 | else { 46 | NSLog(@"rsa_private read error : private key is NULL"); 47 | } 48 | 49 | return success; 50 | } 51 | 52 | int rsa_verify_with_public_key_pem(char *message, int message_length 53 | , unsigned char *signature, unsigned int signature_length 54 | , char *public_key_file_path) 55 | { 56 | unsigned char sha1[20]; 57 | SHA1((unsigned char *)message, message_length, sha1); 58 | BIO *bio_public = NULL; 59 | RSA *rsa_public = NULL; 60 | bio_public = BIO_new(BIO_s_file()); 61 | BIO_read_filename(bio_public, public_key_file_path); 62 | rsa_public = PEM_read_bio_RSA_PUBKEY(bio_public, NULL, NULL, NULL); 63 | 64 | int rsa_verify_valid = RSA_verify(NID_sha1 65 | , sha1, 20 66 | , signature, signature_length 67 | , rsa_public); 68 | BIO_free_all(bio_public); 69 | if (1 == rsa_verify_valid) 70 | { 71 | return 1; 72 | } 73 | return 0; 74 | } 75 | 76 | NSString *base64StringFromData(NSData *signature) 77 | { 78 | int signatureLength = [signature length]; 79 | unsigned char *outputBuffer = (unsigned char *)malloc(2 * 4 * (signatureLength / 3 + 1)); 80 | int outputLength = EVP_EncodeBlock(outputBuffer, [signature bytes], signatureLength); 81 | outputBuffer[outputLength] = '\0'; 82 | NSString *base64String = [NSString stringWithCString:(char *)outputBuffer encoding:NSASCIIStringEncoding]; 83 | free(outputBuffer); 84 | return base64String; 85 | } 86 | 87 | NSData *dataFromBase64String(NSString *base64String) 88 | { 89 | int stringLength = [base64String length]; 90 | const unsigned char *strBuffer = (const unsigned char *)[base64String UTF8String]; 91 | unsigned char *outputBuffer = (unsigned char *)malloc(2 * 3 * (stringLength / 4 + 1)); 92 | int outputLength = EVP_DecodeBlock(outputBuffer, strBuffer, stringLength); 93 | 94 | int zeroByteCounter = 0; 95 | for (int i = stringLength - 1; i >= 0; i--) 96 | { 97 | if (strBuffer[i] == '=') 98 | { 99 | zeroByteCounter++; 100 | } 101 | else 102 | { 103 | break; 104 | } 105 | } 106 | 107 | NSData *data = [[NSData alloc] initWithBytes:outputBuffer length:outputLength - zeroByteCounter]; 108 | free(outputBuffer); 109 | return data; 110 | } 111 | 112 | NSString *rsaSignString(NSString *stringToSign, NSString *privateKeyFilePath, BOOL *signSuccess) 113 | { 114 | const char *message = [stringToSign cStringUsingEncoding:NSUTF8StringEncoding]; 115 | int messageLength = strlen(message); 116 | unsigned char *sig = (unsigned char *)malloc(256); 117 | unsigned int sig_len; 118 | char *filePath = (char *)[privateKeyFilePath cStringUsingEncoding:NSUTF8StringEncoding]; 119 | int sign_ok = rsa_sign_with_private_key_pem((char *)message, messageLength 120 | , sig, &sig_len 121 | , filePath); 122 | NSString *signedString = nil; 123 | if (1 == sign_ok) 124 | { 125 | *signSuccess = YES; 126 | signedString = base64StringFromData([NSData dataWithBytes:sig length:sig_len]); 127 | } 128 | else 129 | { 130 | *signSuccess = NO; 131 | } 132 | free(sig); 133 | return signedString; 134 | } 135 | 136 | void rsaVerifyString(NSString *stringToVerify, NSString *signature, NSString *publicKeyFilePath, BOOL *verifySuccess) 137 | { 138 | const char *message = [stringToVerify cStringUsingEncoding:NSUTF8StringEncoding]; 139 | int messageLength = [stringToVerify lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; 140 | NSData *signatureData = dataFromBase64String(signature); 141 | unsigned char *sig = (unsigned char *)[signatureData bytes]; 142 | unsigned int sig_len = [signatureData length]; 143 | char *filePath = (char *)[publicKeyFilePath cStringUsingEncoding:NSUTF8StringEncoding]; 144 | int verify_ok = rsa_verify_with_public_key_pem((char *)message, messageLength 145 | , sig, sig_len 146 | , filePath); 147 | if (1 == verify_ok) 148 | { 149 | *verifySuccess = YES; 150 | } 151 | else 152 | { 153 | *verifySuccess = NO; 154 | } 155 | } 156 | 157 | NSString *formattedPEMString(NSString *originalString) 158 | { 159 | NSString *trimmedString = [originalString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 160 | const char *c = [trimmedString UTF8String]; 161 | int len = [trimmedString length]; 162 | NSMutableString *result = [NSMutableString string]; 163 | [result appendString:@"-----BEGIN PRIVATE KEY-----\n"]; 164 | int index = 0; 165 | while (index < len) { 166 | char cc = c[index]; 167 | [result appendFormat:@"%c", cc]; 168 | if ( (index+1) % 64 == 0) 169 | { 170 | [result appendString:@"\n"]; 171 | } 172 | index++; 173 | } 174 | [result appendString:@"\n-----END PRIVATE KEY-----"]; 175 | return result; 176 | } 177 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/aes.h: -------------------------------------------------------------------------------- 1 | /* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */ 2 | /* ==================================================================== 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 9 | * 1. Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * 2. Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in 14 | * the documentation and/or other materials provided with the 15 | * distribution. 16 | * 17 | * 3. All advertising materials mentioning features or use of this 18 | * software must display the following acknowledgment: 19 | * "This product includes software developed by the OpenSSL Project 20 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 21 | * 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 23 | * endorse or promote products derived from this software without 24 | * prior written permission. For written permission, please contact 25 | * openssl-core@openssl.org. 26 | * 27 | * 5. Products derived from this software may not be called "OpenSSL" 28 | * nor may "OpenSSL" appear in their names without prior written 29 | * permission of the OpenSSL Project. 30 | * 31 | * 6. Redistributions of any form whatsoever must retain the following 32 | * acknowledgment: 33 | * "This product includes software developed by the OpenSSL Project 34 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 35 | * 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 47 | * OF THE POSSIBILITY OF SUCH DAMAGE. 48 | * ==================================================================== 49 | * 50 | */ 51 | 52 | #ifndef HEADER_AES_H 53 | #define HEADER_AES_H 54 | 55 | #include 56 | 57 | #ifdef OPENSSL_NO_AES 58 | #error AES is disabled. 59 | #endif 60 | 61 | #include 62 | 63 | #define AES_ENCRYPT 1 64 | #define AES_DECRYPT 0 65 | 66 | /* Because array size can't be a const in C, the following two are macros. 67 | Both sizes are in bytes. */ 68 | #define AES_MAXNR 14 69 | #define AES_BLOCK_SIZE 16 70 | 71 | #ifdef __cplusplus 72 | extern "C" { 73 | #endif 74 | 75 | /* This should be a hidden type, but EVP requires that the size be known */ 76 | struct aes_key_st { 77 | #ifdef AES_LONG 78 | unsigned long rd_key[4 *(AES_MAXNR + 1)]; 79 | #else 80 | unsigned int rd_key[4 *(AES_MAXNR + 1)]; 81 | #endif 82 | int rounds; 83 | }; 84 | typedef struct aes_key_st AES_KEY; 85 | 86 | const char *AES_options(void); 87 | 88 | int AES_set_encrypt_key(const unsigned char *userKey, const int bits, 89 | AES_KEY *key); 90 | int AES_set_decrypt_key(const unsigned char *userKey, const int bits, 91 | AES_KEY *key); 92 | 93 | int private_AES_set_encrypt_key(const unsigned char *userKey, const int bits, 94 | AES_KEY *key); 95 | int private_AES_set_decrypt_key(const unsigned char *userKey, const int bits, 96 | AES_KEY *key); 97 | 98 | void AES_encrypt(const unsigned char *in, unsigned char *out, 99 | const AES_KEY *key); 100 | void AES_decrypt(const unsigned char *in, unsigned char *out, 101 | const AES_KEY *key); 102 | 103 | void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, 104 | const AES_KEY *key, const int enc); 105 | void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 106 | size_t length, const AES_KEY *key, 107 | unsigned char *ivec, const int enc); 108 | void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, 109 | size_t length, const AES_KEY *key, 110 | unsigned char *ivec, int *num, const int enc); 111 | void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, 112 | size_t length, const AES_KEY *key, 113 | unsigned char *ivec, int *num, const int enc); 114 | void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, 115 | size_t length, const AES_KEY *key, 116 | unsigned char *ivec, int *num, const int enc); 117 | void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, 118 | size_t length, const AES_KEY *key, 119 | unsigned char *ivec, int *num); 120 | void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out, 121 | size_t length, const AES_KEY *key, 122 | unsigned char ivec[AES_BLOCK_SIZE], 123 | unsigned char ecount_buf[AES_BLOCK_SIZE], 124 | unsigned int *num); 125 | /* NB: the IV is _two_ blocks long */ 126 | void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 127 | size_t length, const AES_KEY *key, 128 | unsigned char *ivec, const int enc); 129 | /* NB: the IV is _four_ blocks long */ 130 | void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 131 | size_t length, const AES_KEY *key, 132 | const AES_KEY *key2, const unsigned char *ivec, 133 | const int enc); 134 | 135 | int AES_wrap_key(AES_KEY *key, const unsigned char *iv, 136 | unsigned char *out, 137 | const unsigned char *in, unsigned int inlen); 138 | int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, 139 | unsigned char *out, 140 | const unsigned char *in, unsigned int inlen); 141 | 142 | 143 | #ifdef __cplusplus 144 | } 145 | #endif 146 | 147 | #endif /* !HEADER_AES_H */ 148 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/blowfish.h: -------------------------------------------------------------------------------- 1 | /* crypto/bf/blowfish.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_BLOWFISH_H 60 | #define HEADER_BLOWFISH_H 61 | 62 | #include 63 | 64 | #ifdef __cplusplus 65 | extern "C" { 66 | #endif 67 | 68 | #ifdef OPENSSL_NO_BF 69 | #error BF is disabled. 70 | #endif 71 | 72 | #define BF_ENCRYPT 1 73 | #define BF_DECRYPT 0 74 | 75 | /* 76 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 | * ! BF_LONG has to be at least 32 bits wide. If it's wider, then ! 78 | * ! BF_LONG_LOG2 has to be defined along. ! 79 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 80 | */ 81 | 82 | #if defined(__LP32__) 83 | #define BF_LONG unsigned long 84 | #elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 85 | #define BF_LONG unsigned long 86 | #define BF_LONG_LOG2 3 87 | /* 88 | * _CRAY note. I could declare short, but I have no idea what impact 89 | * does it have on performance on none-T3E machines. I could declare 90 | * int, but at least on C90 sizeof(int) can be chosen at compile time. 91 | * So I've chosen long... 92 | * 93 | */ 94 | #else 95 | #define BF_LONG unsigned int 96 | #endif 97 | 98 | #define BF_ROUNDS 16 99 | #define BF_BLOCK 8 100 | 101 | typedef struct bf_key_st 102 | { 103 | BF_LONG P[BF_ROUNDS+2]; 104 | BF_LONG S[4*256]; 105 | } BF_KEY; 106 | 107 | #ifdef OPENSSL_FIPS 108 | void private_BF_set_key(BF_KEY *key, int len, const unsigned char *data); 109 | #endif 110 | void BF_set_key(BF_KEY *key, int len, const unsigned char *data); 111 | 112 | void BF_encrypt(BF_LONG *data,const BF_KEY *key); 113 | void BF_decrypt(BF_LONG *data,const BF_KEY *key); 114 | 115 | void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, 116 | const BF_KEY *key, int enc); 117 | void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 118 | const BF_KEY *schedule, unsigned char *ivec, int enc); 119 | void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, long length, 120 | const BF_KEY *schedule, unsigned char *ivec, int *num, int enc); 121 | void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, long length, 122 | const BF_KEY *schedule, unsigned char *ivec, int *num); 123 | const char *BF_options(void); 124 | 125 | #ifdef __cplusplus 126 | } 127 | #endif 128 | 129 | #endif 130 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/buffer.h: -------------------------------------------------------------------------------- 1 | /* crypto/buffer/buffer.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_BUFFER_H 60 | #define HEADER_BUFFER_H 61 | 62 | #include 63 | 64 | #ifdef __cplusplus 65 | extern "C" { 66 | #endif 67 | 68 | #include 69 | 70 | #if !defined(NO_SYS_TYPES_H) 71 | #include 72 | #endif 73 | 74 | /* Already declared in ossl_typ.h */ 75 | /* typedef struct buf_mem_st BUF_MEM; */ 76 | 77 | struct buf_mem_st 78 | { 79 | size_t length; /* current number of bytes */ 80 | char *data; 81 | size_t max; /* size of buffer */ 82 | }; 83 | 84 | BUF_MEM *BUF_MEM_new(void); 85 | void BUF_MEM_free(BUF_MEM *a); 86 | int BUF_MEM_grow(BUF_MEM *str, size_t len); 87 | int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); 88 | char * BUF_strdup(const char *str); 89 | char * BUF_strndup(const char *str, size_t siz); 90 | void * BUF_memdup(const void *data, size_t siz); 91 | void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); 92 | 93 | /* safe string functions */ 94 | size_t BUF_strlcpy(char *dst,const char *src,size_t siz); 95 | size_t BUF_strlcat(char *dst,const char *src,size_t siz); 96 | 97 | 98 | /* BEGIN ERROR CODES */ 99 | /* The following lines are auto generated by the script mkerr.pl. Any changes 100 | * made after this point may be overwritten when the script is next run. 101 | */ 102 | void ERR_load_BUF_strings(void); 103 | 104 | /* Error codes for the BUF functions. */ 105 | 106 | /* Function codes. */ 107 | #define BUF_F_BUF_MEMDUP 103 108 | #define BUF_F_BUF_MEM_GROW 100 109 | #define BUF_F_BUF_MEM_GROW_CLEAN 105 110 | #define BUF_F_BUF_MEM_NEW 101 111 | #define BUF_F_BUF_STRDUP 102 112 | #define BUF_F_BUF_STRNDUP 104 113 | 114 | /* Reason codes. */ 115 | 116 | #ifdef __cplusplus 117 | } 118 | #endif 119 | #endif 120 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/camellia.h: -------------------------------------------------------------------------------- 1 | /* crypto/camellia/camellia.h -*- mode:C; c-file-style: "eay" -*- */ 2 | /* ==================================================================== 3 | * Copyright (c) 2006 The OpenSSL Project. All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 9 | * 1. Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * 2. Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in 14 | * the documentation and/or other materials provided with the 15 | * distribution. 16 | * 17 | * 3. All advertising materials mentioning features or use of this 18 | * software must display the following acknowledgment: 19 | * "This product includes software developed by the OpenSSL Project 20 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 21 | * 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 23 | * endorse or promote products derived from this software without 24 | * prior written permission. For written permission, please contact 25 | * openssl-core@openssl.org. 26 | * 27 | * 5. Products derived from this software may not be called "OpenSSL" 28 | * nor may "OpenSSL" appear in their names without prior written 29 | * permission of the OpenSSL Project. 30 | * 31 | * 6. Redistributions of any form whatsoever must retain the following 32 | * acknowledgment: 33 | * "This product includes software developed by the OpenSSL Project 34 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 35 | * 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 47 | * OF THE POSSIBILITY OF SUCH DAMAGE. 48 | * ==================================================================== 49 | * 50 | */ 51 | 52 | #ifndef HEADER_CAMELLIA_H 53 | #define HEADER_CAMELLIA_H 54 | 55 | #include 56 | 57 | #ifdef OPENSSL_NO_CAMELLIA 58 | #error CAMELLIA is disabled. 59 | #endif 60 | 61 | #include 62 | 63 | #define CAMELLIA_ENCRYPT 1 64 | #define CAMELLIA_DECRYPT 0 65 | 66 | /* Because array size can't be a const in C, the following two are macros. 67 | Both sizes are in bytes. */ 68 | 69 | #ifdef __cplusplus 70 | extern "C" { 71 | #endif 72 | 73 | /* This should be a hidden type, but EVP requires that the size be known */ 74 | 75 | #define CAMELLIA_BLOCK_SIZE 16 76 | #define CAMELLIA_TABLE_BYTE_LEN 272 77 | #define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) 78 | 79 | typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match with WORD */ 80 | 81 | struct camellia_key_st 82 | { 83 | union { 84 | double d; /* ensures 64-bit align */ 85 | KEY_TABLE_TYPE rd_key; 86 | } u; 87 | int grand_rounds; 88 | }; 89 | typedef struct camellia_key_st CAMELLIA_KEY; 90 | 91 | #ifdef OPENSSL_FIPS 92 | int private_Camellia_set_key(const unsigned char *userKey, const int bits, 93 | CAMELLIA_KEY *key); 94 | #endif 95 | int Camellia_set_key(const unsigned char *userKey, const int bits, 96 | CAMELLIA_KEY *key); 97 | 98 | void Camellia_encrypt(const unsigned char *in, unsigned char *out, 99 | const CAMELLIA_KEY *key); 100 | void Camellia_decrypt(const unsigned char *in, unsigned char *out, 101 | const CAMELLIA_KEY *key); 102 | 103 | void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, 104 | const CAMELLIA_KEY *key, const int enc); 105 | void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, 106 | size_t length, const CAMELLIA_KEY *key, 107 | unsigned char *ivec, const int enc); 108 | void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, 109 | size_t length, const CAMELLIA_KEY *key, 110 | unsigned char *ivec, int *num, const int enc); 111 | void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, 112 | size_t length, const CAMELLIA_KEY *key, 113 | unsigned char *ivec, int *num, const int enc); 114 | void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, 115 | size_t length, const CAMELLIA_KEY *key, 116 | unsigned char *ivec, int *num, const int enc); 117 | void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, 118 | size_t length, const CAMELLIA_KEY *key, 119 | unsigned char *ivec, int *num); 120 | void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, 121 | size_t length, const CAMELLIA_KEY *key, 122 | unsigned char ivec[CAMELLIA_BLOCK_SIZE], 123 | unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], 124 | unsigned int *num); 125 | 126 | #ifdef __cplusplus 127 | } 128 | #endif 129 | 130 | #endif /* !HEADER_Camellia_H */ 131 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/cast.h: -------------------------------------------------------------------------------- 1 | /* crypto/cast/cast.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_CAST_H 60 | #define HEADER_CAST_H 61 | 62 | #ifdef __cplusplus 63 | extern "C" { 64 | #endif 65 | 66 | #include 67 | 68 | #ifdef OPENSSL_NO_CAST 69 | #error CAST is disabled. 70 | #endif 71 | 72 | #define CAST_ENCRYPT 1 73 | #define CAST_DECRYPT 0 74 | 75 | #define CAST_LONG unsigned int 76 | 77 | #define CAST_BLOCK 8 78 | #define CAST_KEY_LENGTH 16 79 | 80 | typedef struct cast_key_st 81 | { 82 | CAST_LONG data[32]; 83 | int short_key; /* Use reduced rounds for short key */ 84 | } CAST_KEY; 85 | 86 | #ifdef OPENSSL_FIPS 87 | void private_CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); 88 | #endif 89 | void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); 90 | void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, const CAST_KEY *key, 91 | int enc); 92 | void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); 93 | void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); 94 | void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 95 | const CAST_KEY *ks, unsigned char *iv, int enc); 96 | void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, 97 | long length, const CAST_KEY *schedule, unsigned char *ivec, 98 | int *num, int enc); 99 | void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, 100 | long length, const CAST_KEY *schedule, unsigned char *ivec, 101 | int *num); 102 | 103 | #ifdef __cplusplus 104 | } 105 | #endif 106 | 107 | #endif 108 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/cmac.h: -------------------------------------------------------------------------------- 1 | /* crypto/cmac/cmac.h */ 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 3 | * project. 4 | */ 5 | /* ==================================================================== 6 | * Copyright (c) 2010 The OpenSSL Project. All rights reserved. 7 | * 8 | * Redistribution and use in source and binary forms, with or without 9 | * modification, are permitted provided that the following conditions 10 | * are met: 11 | * 12 | * 1. Redistributions of source code must retain the above copyright 13 | * notice, this list of conditions and the following disclaimer. 14 | * 15 | * 2. Redistributions in binary form must reproduce the above copyright 16 | * notice, this list of conditions and the following disclaimer in 17 | * the documentation and/or other materials provided with the 18 | * distribution. 19 | * 20 | * 3. All advertising materials mentioning features or use of this 21 | * software must display the following acknowledgment: 22 | * "This product includes software developed by the OpenSSL Project 23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24 | * 25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26 | * endorse or promote products derived from this software without 27 | * prior written permission. For written permission, please contact 28 | * licensing@OpenSSL.org. 29 | * 30 | * 5. Products derived from this software may not be called "OpenSSL" 31 | * nor may "OpenSSL" appear in their names without prior written 32 | * permission of the OpenSSL Project. 33 | * 34 | * 6. Redistributions of any form whatsoever must retain the following 35 | * acknowledgment: 36 | * "This product includes software developed by the OpenSSL Project 37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38 | * 39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50 | * OF THE POSSIBILITY OF SUCH DAMAGE. 51 | * ==================================================================== 52 | */ 53 | 54 | 55 | #ifndef HEADER_CMAC_H 56 | #define HEADER_CMAC_H 57 | 58 | #ifdef __cplusplus 59 | extern "C" { 60 | #endif 61 | 62 | #include 63 | 64 | /* Opaque */ 65 | typedef struct CMAC_CTX_st CMAC_CTX; 66 | 67 | CMAC_CTX *CMAC_CTX_new(void); 68 | void CMAC_CTX_cleanup(CMAC_CTX *ctx); 69 | void CMAC_CTX_free(CMAC_CTX *ctx); 70 | EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); 71 | int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); 72 | 73 | int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, 74 | const EVP_CIPHER *cipher, ENGINE *impl); 75 | int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); 76 | int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); 77 | int CMAC_resume(CMAC_CTX *ctx); 78 | 79 | #ifdef __cplusplus 80 | } 81 | #endif 82 | #endif 83 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/comp.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef HEADER_COMP_H 3 | #define HEADER_COMP_H 4 | 5 | #include 6 | 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | 11 | typedef struct comp_ctx_st COMP_CTX; 12 | 13 | typedef struct comp_method_st 14 | { 15 | int type; /* NID for compression library */ 16 | const char *name; /* A text string to identify the library */ 17 | int (*init)(COMP_CTX *ctx); 18 | void (*finish)(COMP_CTX *ctx); 19 | int (*compress)(COMP_CTX *ctx, 20 | unsigned char *out, unsigned int olen, 21 | unsigned char *in, unsigned int ilen); 22 | int (*expand)(COMP_CTX *ctx, 23 | unsigned char *out, unsigned int olen, 24 | unsigned char *in, unsigned int ilen); 25 | /* The following two do NOTHING, but are kept for backward compatibility */ 26 | long (*ctrl)(void); 27 | long (*callback_ctrl)(void); 28 | } COMP_METHOD; 29 | 30 | struct comp_ctx_st 31 | { 32 | COMP_METHOD *meth; 33 | unsigned long compress_in; 34 | unsigned long compress_out; 35 | unsigned long expand_in; 36 | unsigned long expand_out; 37 | 38 | CRYPTO_EX_DATA ex_data; 39 | }; 40 | 41 | 42 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); 43 | void COMP_CTX_free(COMP_CTX *ctx); 44 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, 45 | unsigned char *in, int ilen); 46 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, 47 | unsigned char *in, int ilen); 48 | COMP_METHOD *COMP_rle(void ); 49 | COMP_METHOD *COMP_zlib(void ); 50 | void COMP_zlib_cleanup(void); 51 | 52 | #ifdef HEADER_BIO_H 53 | #ifdef ZLIB 54 | BIO_METHOD *BIO_f_zlib(void); 55 | #endif 56 | #endif 57 | 58 | /* BEGIN ERROR CODES */ 59 | /* The following lines are auto generated by the script mkerr.pl. Any changes 60 | * made after this point may be overwritten when the script is next run. 61 | */ 62 | void ERR_load_COMP_strings(void); 63 | 64 | /* Error codes for the COMP functions. */ 65 | 66 | /* Function codes. */ 67 | #define COMP_F_BIO_ZLIB_FLUSH 99 68 | #define COMP_F_BIO_ZLIB_NEW 100 69 | #define COMP_F_BIO_ZLIB_READ 101 70 | #define COMP_F_BIO_ZLIB_WRITE 102 71 | 72 | /* Reason codes. */ 73 | #define COMP_R_ZLIB_DEFLATE_ERROR 99 74 | #define COMP_R_ZLIB_INFLATE_ERROR 100 75 | #define COMP_R_ZLIB_NOT_SUPPORTED 101 76 | 77 | #ifdef __cplusplus 78 | } 79 | #endif 80 | #endif 81 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/conf_api.h: -------------------------------------------------------------------------------- 1 | /* conf_api.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_CONF_API_H 60 | #define HEADER_CONF_API_H 61 | 62 | #include 63 | #include 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | /* Up until OpenSSL 0.9.5a, this was new_section */ 70 | CONF_VALUE *_CONF_new_section(CONF *conf, const char *section); 71 | /* Up until OpenSSL 0.9.5a, this was get_section */ 72 | CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section); 73 | /* Up until OpenSSL 0.9.5a, this was CONF_get_section */ 74 | STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf, 75 | const char *section); 76 | 77 | int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value); 78 | char *_CONF_get_string(const CONF *conf, const char *section, 79 | const char *name); 80 | long _CONF_get_number(const CONF *conf, const char *section, const char *name); 81 | 82 | int _CONF_new_data(CONF *conf); 83 | void _CONF_free_data(CONF *conf); 84 | 85 | #ifdef __cplusplus 86 | } 87 | #endif 88 | #endif 89 | 90 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/ebcdic.h: -------------------------------------------------------------------------------- 1 | /* crypto/ebcdic.h */ 2 | 3 | #ifndef HEADER_EBCDIC_H 4 | #define HEADER_EBCDIC_H 5 | 6 | #include 7 | 8 | /* Avoid name clashes with other applications */ 9 | #define os_toascii _openssl_os_toascii 10 | #define os_toebcdic _openssl_os_toebcdic 11 | #define ebcdic2ascii _openssl_ebcdic2ascii 12 | #define ascii2ebcdic _openssl_ascii2ebcdic 13 | 14 | extern const unsigned char os_toascii[256]; 15 | extern const unsigned char os_toebcdic[256]; 16 | void *ebcdic2ascii(void *dest, const void *srce, size_t count); 17 | void *ascii2ebcdic(void *dest, const void *srce, size_t count); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/ecdh.h: -------------------------------------------------------------------------------- 1 | /* crypto/ecdh/ecdh.h */ 2 | /* ==================================================================== 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 4 | * 5 | * The Elliptic Curve Public-Key Crypto Library (ECC Code) included 6 | * herein is developed by SUN MICROSYSTEMS, INC., and is contributed 7 | * to the OpenSSL project. 8 | * 9 | * The ECC Code is licensed pursuant to the OpenSSL open source 10 | * license provided below. 11 | * 12 | * The ECDH software is originally written by Douglas Stebila of 13 | * Sun Microsystems Laboratories. 14 | * 15 | */ 16 | /* ==================================================================== 17 | * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. 18 | * 19 | * Redistribution and use in source and binary forms, with or without 20 | * modification, are permitted provided that the following conditions 21 | * are met: 22 | * 23 | * 1. Redistributions of source code must retain the above copyright 24 | * notice, this list of conditions and the following disclaimer. 25 | * 26 | * 2. Redistributions in binary form must reproduce the above copyright 27 | * notice, this list of conditions and the following disclaimer in 28 | * the documentation and/or other materials provided with the 29 | * distribution. 30 | * 31 | * 3. All advertising materials mentioning features or use of this 32 | * software must display the following acknowledgment: 33 | * "This product includes software developed by the OpenSSL Project 34 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 35 | * 36 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 37 | * endorse or promote products derived from this software without 38 | * prior written permission. For written permission, please contact 39 | * licensing@OpenSSL.org. 40 | * 41 | * 5. Products derived from this software may not be called "OpenSSL" 42 | * nor may "OpenSSL" appear in their names without prior written 43 | * permission of the OpenSSL Project. 44 | * 45 | * 6. Redistributions of any form whatsoever must retain the following 46 | * acknowledgment: 47 | * "This product includes software developed by the OpenSSL Project 48 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 49 | * 50 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 51 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 52 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 53 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 54 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 55 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 56 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 57 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 58 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 59 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 60 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 61 | * OF THE POSSIBILITY OF SUCH DAMAGE. 62 | * ==================================================================== 63 | * 64 | * This product includes cryptographic software written by Eric Young 65 | * (eay@cryptsoft.com). This product includes software written by Tim 66 | * Hudson (tjh@cryptsoft.com). 67 | * 68 | */ 69 | #ifndef HEADER_ECDH_H 70 | #define HEADER_ECDH_H 71 | 72 | #include 73 | 74 | #ifdef OPENSSL_NO_ECDH 75 | #error ECDH is disabled. 76 | #endif 77 | 78 | #include 79 | #include 80 | #ifndef OPENSSL_NO_DEPRECATED 81 | #include 82 | #endif 83 | 84 | #ifdef __cplusplus 85 | extern "C" { 86 | #endif 87 | 88 | const ECDH_METHOD *ECDH_OpenSSL(void); 89 | 90 | void ECDH_set_default_method(const ECDH_METHOD *); 91 | const ECDH_METHOD *ECDH_get_default_method(void); 92 | int ECDH_set_method(EC_KEY *, const ECDH_METHOD *); 93 | 94 | int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh, 95 | void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen)); 96 | 97 | int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new 98 | *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); 99 | int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg); 100 | void *ECDH_get_ex_data(EC_KEY *d, int idx); 101 | 102 | 103 | /* BEGIN ERROR CODES */ 104 | /* The following lines are auto generated by the script mkerr.pl. Any changes 105 | * made after this point may be overwritten when the script is next run. 106 | */ 107 | void ERR_load_ECDH_strings(void); 108 | 109 | /* Error codes for the ECDH functions. */ 110 | 111 | /* Function codes. */ 112 | #define ECDH_F_ECDH_CHECK 102 113 | #define ECDH_F_ECDH_COMPUTE_KEY 100 114 | #define ECDH_F_ECDH_DATA_NEW_METHOD 101 115 | 116 | /* Reason codes. */ 117 | #define ECDH_R_KDF_FAILED 102 118 | #define ECDH_R_NON_FIPS_METHOD 103 119 | #define ECDH_R_NO_PRIVATE_VALUE 100 120 | #define ECDH_R_POINT_ARITHMETIC_FAILURE 101 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif 125 | #endif 126 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/hmac.h: -------------------------------------------------------------------------------- 1 | /* crypto/hmac/hmac.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | #ifndef HEADER_HMAC_H 59 | #define HEADER_HMAC_H 60 | 61 | #include 62 | 63 | #ifdef OPENSSL_NO_HMAC 64 | #error HMAC is disabled. 65 | #endif 66 | 67 | #include 68 | 69 | #define HMAC_MAX_MD_CBLOCK 128 /* largest known is SHA512 */ 70 | 71 | #ifdef __cplusplus 72 | extern "C" { 73 | #endif 74 | 75 | typedef struct hmac_ctx_st 76 | { 77 | const EVP_MD *md; 78 | EVP_MD_CTX md_ctx; 79 | EVP_MD_CTX i_ctx; 80 | EVP_MD_CTX o_ctx; 81 | unsigned int key_length; 82 | unsigned char key[HMAC_MAX_MD_CBLOCK]; 83 | } HMAC_CTX; 84 | 85 | #define HMAC_size(e) (EVP_MD_size((e)->md)) 86 | 87 | 88 | void HMAC_CTX_init(HMAC_CTX *ctx); 89 | void HMAC_CTX_cleanup(HMAC_CTX *ctx); 90 | 91 | #define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) /* deprecated */ 92 | 93 | int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, 94 | const EVP_MD *md); /* deprecated */ 95 | int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, 96 | const EVP_MD *md, ENGINE *impl); 97 | int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); 98 | int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); 99 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, 100 | const unsigned char *d, size_t n, unsigned char *md, 101 | unsigned int *md_len); 102 | int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); 103 | 104 | void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); 105 | 106 | #ifdef __cplusplus 107 | } 108 | #endif 109 | 110 | #endif 111 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/idea.h: -------------------------------------------------------------------------------- 1 | /* crypto/idea/idea.h */ 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_IDEA_H 60 | #define HEADER_IDEA_H 61 | 62 | #include /* IDEA_INT, OPENSSL_NO_IDEA */ 63 | 64 | #ifdef OPENSSL_NO_IDEA 65 | #error IDEA is disabled. 66 | #endif 67 | 68 | #define IDEA_ENCRYPT 1 69 | #define IDEA_DECRYPT 0 70 | 71 | #define IDEA_BLOCK 8 72 | #define IDEA_KEY_LENGTH 16 73 | 74 | #ifdef __cplusplus 75 | extern "C" { 76 | #endif 77 | 78 | typedef struct idea_key_st 79 | { 80 | IDEA_INT data[9][6]; 81 | } IDEA_KEY_SCHEDULE; 82 | 83 | const char *idea_options(void); 84 | void idea_ecb_encrypt(const unsigned char *in, unsigned char *out, 85 | IDEA_KEY_SCHEDULE *ks); 86 | #ifdef OPENSSL_FIPS 87 | void private_idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); 88 | #endif 89 | void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); 90 | void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); 91 | void idea_cbc_encrypt(const unsigned char *in, unsigned char *out, 92 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc); 93 | void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out, 94 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, 95 | int *num,int enc); 96 | void idea_ofb64_encrypt(const unsigned char *in, unsigned char *out, 97 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, int *num); 98 | void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif 104 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/kssl.h: -------------------------------------------------------------------------------- 1 | /* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ 2 | /* Written by Vern Staats for the OpenSSL project 2000. 3 | * project 2000. 4 | */ 5 | /* ==================================================================== 6 | * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 7 | * 8 | * Redistribution and use in source and binary forms, with or without 9 | * modification, are permitted provided that the following conditions 10 | * are met: 11 | * 12 | * 1. Redistributions of source code must retain the above copyright 13 | * notice, this list of conditions and the following disclaimer. 14 | * 15 | * 2. Redistributions in binary form must reproduce the above copyright 16 | * notice, this list of conditions and the following disclaimer in 17 | * the documentation and/or other materials provided with the 18 | * distribution. 19 | * 20 | * 3. All advertising materials mentioning features or use of this 21 | * software must display the following acknowledgment: 22 | * "This product includes software developed by the OpenSSL Project 23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24 | * 25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26 | * endorse or promote products derived from this software without 27 | * prior written permission. For written permission, please contact 28 | * licensing@OpenSSL.org. 29 | * 30 | * 5. Products derived from this software may not be called "OpenSSL" 31 | * nor may "OpenSSL" appear in their names without prior written 32 | * permission of the OpenSSL Project. 33 | * 34 | * 6. Redistributions of any form whatsoever must retain the following 35 | * acknowledgment: 36 | * "This product includes software developed by the OpenSSL Project 37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38 | * 39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50 | * OF THE POSSIBILITY OF SUCH DAMAGE. 51 | * ==================================================================== 52 | * 53 | * This product includes cryptographic software written by Eric Young 54 | * (eay@cryptsoft.com). This product includes software written by Tim 55 | * Hudson (tjh@cryptsoft.com). 56 | * 57 | */ 58 | 59 | /* 60 | ** 19990701 VRS Started. 61 | */ 62 | 63 | #ifndef KSSL_H 64 | #define KSSL_H 65 | 66 | #include 67 | 68 | #ifndef OPENSSL_NO_KRB5 69 | 70 | #include 71 | #include 72 | #include 73 | #ifdef OPENSSL_SYS_WIN32 74 | /* These can sometimes get redefined indirectly by krb5 header files 75 | * after they get undefed in ossl_typ.h 76 | */ 77 | #undef X509_NAME 78 | #undef X509_EXTENSIONS 79 | #undef OCSP_REQUEST 80 | #undef OCSP_RESPONSE 81 | #endif 82 | 83 | #ifdef __cplusplus 84 | extern "C" { 85 | #endif 86 | 87 | /* 88 | ** Depending on which KRB5 implementation used, some types from 89 | ** the other may be missing. Resolve that here and now 90 | */ 91 | #ifdef KRB5_HEIMDAL 92 | typedef unsigned char krb5_octet; 93 | #define FAR 94 | #else 95 | 96 | #ifndef FAR 97 | #define FAR 98 | #endif 99 | 100 | #endif 101 | 102 | /* Uncomment this to debug kssl problems or 103 | ** to trace usage of the Kerberos session key 104 | ** 105 | ** #define KSSL_DEBUG 106 | */ 107 | 108 | #ifndef KRB5SVC 109 | #define KRB5SVC "host" 110 | #endif 111 | 112 | #ifndef KRB5KEYTAB 113 | #define KRB5KEYTAB "/etc/krb5.keytab" 114 | #endif 115 | 116 | #ifndef KRB5SENDAUTH 117 | #define KRB5SENDAUTH 1 118 | #endif 119 | 120 | #ifndef KRB5CHECKAUTH 121 | #define KRB5CHECKAUTH 1 122 | #endif 123 | 124 | #ifndef KSSL_CLOCKSKEW 125 | #define KSSL_CLOCKSKEW 300; 126 | #endif 127 | 128 | #define KSSL_ERR_MAX 255 129 | typedef struct kssl_err_st { 130 | int reason; 131 | char text[KSSL_ERR_MAX+1]; 132 | } KSSL_ERR; 133 | 134 | 135 | /* Context for passing 136 | ** (1) Kerberos session key to SSL, and 137 | ** (2) Config data between application and SSL lib 138 | */ 139 | typedef struct kssl_ctx_st 140 | { 141 | /* used by: disposition: */ 142 | char *service_name; /* C,S default ok (kssl) */ 143 | char *service_host; /* C input, REQUIRED */ 144 | char *client_princ; /* S output from krb5 ticket */ 145 | char *keytab_file; /* S NULL (/etc/krb5.keytab) */ 146 | char *cred_cache; /* C NULL (default) */ 147 | krb5_enctype enctype; 148 | int length; 149 | krb5_octet FAR *key; 150 | } KSSL_CTX; 151 | 152 | #define KSSL_CLIENT 1 153 | #define KSSL_SERVER 2 154 | #define KSSL_SERVICE 3 155 | #define KSSL_KEYTAB 4 156 | 157 | #define KSSL_CTX_OK 0 158 | #define KSSL_CTX_ERR 1 159 | #define KSSL_NOMEM 2 160 | 161 | /* Public (for use by applications that use OpenSSL with Kerberos 5 support */ 162 | krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); 163 | KSSL_CTX *kssl_ctx_new(void); 164 | KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); 165 | void kssl_ctx_show(KSSL_CTX *kssl_ctx); 166 | krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, 167 | krb5_data *realm, krb5_data *entity, int nentities); 168 | krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, 169 | krb5_data *authenp, KSSL_ERR *kssl_err); 170 | krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, 171 | krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); 172 | krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); 173 | void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); 174 | void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); 175 | krb5_error_code kssl_build_principal_2(krb5_context context, 176 | krb5_principal *princ, int rlen, const char *realm, 177 | int slen, const char *svc, int hlen, const char *host); 178 | krb5_error_code kssl_validate_times(krb5_timestamp atime, 179 | krb5_ticket_times *ttimes); 180 | krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, 181 | krb5_timestamp *atimep, KSSL_ERR *kssl_err); 182 | unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); 183 | 184 | void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); 185 | KSSL_CTX * SSL_get0_kssl_ctx(SSL *s); 186 | char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); 187 | 188 | #ifdef __cplusplus 189 | } 190 | #endif 191 | #endif /* OPENSSL_NO_KRB5 */ 192 | #endif /* KSSL_H */ 193 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/md4.h: -------------------------------------------------------------------------------- 1 | /* crypto/md4/md4.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_MD4_H 60 | #define HEADER_MD4_H 61 | 62 | #include 63 | #include 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | #ifdef OPENSSL_NO_MD4 70 | #error MD4 is disabled. 71 | #endif 72 | 73 | /* 74 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 75 | * ! MD4_LONG has to be at least 32 bits wide. If it's wider, then ! 76 | * ! MD4_LONG_LOG2 has to be defined along. ! 77 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 78 | */ 79 | 80 | #if defined(__LP32__) 81 | #define MD4_LONG unsigned long 82 | #elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 83 | #define MD4_LONG unsigned long 84 | #define MD4_LONG_LOG2 3 85 | /* 86 | * _CRAY note. I could declare short, but I have no idea what impact 87 | * does it have on performance on none-T3E machines. I could declare 88 | * int, but at least on C90 sizeof(int) can be chosen at compile time. 89 | * So I've chosen long... 90 | * 91 | */ 92 | #else 93 | #define MD4_LONG unsigned int 94 | #endif 95 | 96 | #define MD4_CBLOCK 64 97 | #define MD4_LBLOCK (MD4_CBLOCK/4) 98 | #define MD4_DIGEST_LENGTH 16 99 | 100 | typedef struct MD4state_st 101 | { 102 | MD4_LONG A,B,C,D; 103 | MD4_LONG Nl,Nh; 104 | MD4_LONG data[MD4_LBLOCK]; 105 | unsigned int num; 106 | } MD4_CTX; 107 | 108 | #ifdef OPENSSL_FIPS 109 | int private_MD4_Init(MD4_CTX *c); 110 | #endif 111 | int MD4_Init(MD4_CTX *c); 112 | int MD4_Update(MD4_CTX *c, const void *data, size_t len); 113 | int MD4_Final(unsigned char *md, MD4_CTX *c); 114 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); 115 | void MD4_Transform(MD4_CTX *c, const unsigned char *b); 116 | #ifdef __cplusplus 117 | } 118 | #endif 119 | 120 | #endif 121 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/md5.h: -------------------------------------------------------------------------------- 1 | /* crypto/md5/md5.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_MD5_H 60 | #define HEADER_MD5_H 61 | 62 | #include 63 | #include 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | #ifdef OPENSSL_NO_MD5 70 | #error MD5 is disabled. 71 | #endif 72 | 73 | /* 74 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 75 | * ! MD5_LONG has to be at least 32 bits wide. If it's wider, then ! 76 | * ! MD5_LONG_LOG2 has to be defined along. ! 77 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 78 | */ 79 | 80 | #if defined(__LP32__) 81 | #define MD5_LONG unsigned long 82 | #elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 83 | #define MD5_LONG unsigned long 84 | #define MD5_LONG_LOG2 3 85 | /* 86 | * _CRAY note. I could declare short, but I have no idea what impact 87 | * does it have on performance on none-T3E machines. I could declare 88 | * int, but at least on C90 sizeof(int) can be chosen at compile time. 89 | * So I've chosen long... 90 | * 91 | */ 92 | #else 93 | #define MD5_LONG unsigned int 94 | #endif 95 | 96 | #define MD5_CBLOCK 64 97 | #define MD5_LBLOCK (MD5_CBLOCK/4) 98 | #define MD5_DIGEST_LENGTH 16 99 | 100 | typedef struct MD5state_st 101 | { 102 | MD5_LONG A,B,C,D; 103 | MD5_LONG Nl,Nh; 104 | MD5_LONG data[MD5_LBLOCK]; 105 | unsigned int num; 106 | } MD5_CTX; 107 | 108 | #ifdef OPENSSL_FIPS 109 | int private_MD5_Init(MD5_CTX *c); 110 | #endif 111 | int MD5_Init(MD5_CTX *c); 112 | int MD5_Update(MD5_CTX *c, const void *data, size_t len); 113 | int MD5_Final(unsigned char *md, MD5_CTX *c); 114 | unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); 115 | void MD5_Transform(MD5_CTX *c, const unsigned char *b); 116 | #ifdef __cplusplus 117 | } 118 | #endif 119 | 120 | #endif 121 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/mdc2.h: -------------------------------------------------------------------------------- 1 | /* crypto/mdc2/mdc2.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_MDC2_H 60 | #define HEADER_MDC2_H 61 | 62 | #include 63 | 64 | #ifdef __cplusplus 65 | extern "C" { 66 | #endif 67 | 68 | #ifdef OPENSSL_NO_MDC2 69 | #error MDC2 is disabled. 70 | #endif 71 | 72 | #define MDC2_BLOCK 8 73 | #define MDC2_DIGEST_LENGTH 16 74 | 75 | typedef struct mdc2_ctx_st 76 | { 77 | unsigned int num; 78 | unsigned char data[MDC2_BLOCK]; 79 | DES_cblock h,hh; 80 | int pad_type; /* either 1 or 2, default 1 */ 81 | } MDC2_CTX; 82 | 83 | 84 | #ifdef OPENSSL_FIPS 85 | int private_MDC2_Init(MDC2_CTX *c); 86 | #endif 87 | int MDC2_Init(MDC2_CTX *c); 88 | int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); 89 | int MDC2_Final(unsigned char *md, MDC2_CTX *c); 90 | unsigned char *MDC2(const unsigned char *d, size_t n, 91 | unsigned char *md); 92 | 93 | #ifdef __cplusplus 94 | } 95 | #endif 96 | 97 | #endif 98 | 99 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/modes.h: -------------------------------------------------------------------------------- 1 | /* ==================================================================== 2 | * Copyright (c) 2008 The OpenSSL Project. All rights reserved. 3 | * 4 | * Rights for redistribution and usage in source and binary 5 | * forms are granted according to the OpenSSL license. 6 | */ 7 | 8 | #include 9 | 10 | typedef void (*block128_f)(const unsigned char in[16], 11 | unsigned char out[16], 12 | const void *key); 13 | 14 | typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out, 15 | size_t len, const void *key, 16 | unsigned char ivec[16], int enc); 17 | 18 | typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out, 19 | size_t blocks, const void *key, 20 | const unsigned char ivec[16]); 21 | 22 | typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out, 23 | size_t blocks, const void *key, 24 | const unsigned char ivec[16],unsigned char cmac[16]); 25 | 26 | void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, 27 | size_t len, const void *key, 28 | unsigned char ivec[16], block128_f block); 29 | void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, 30 | size_t len, const void *key, 31 | unsigned char ivec[16], block128_f block); 32 | 33 | void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, 34 | size_t len, const void *key, 35 | unsigned char ivec[16], unsigned char ecount_buf[16], 36 | unsigned int *num, block128_f block); 37 | 38 | void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, 39 | size_t len, const void *key, 40 | unsigned char ivec[16], unsigned char ecount_buf[16], 41 | unsigned int *num, ctr128_f ctr); 42 | 43 | void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, 44 | size_t len, const void *key, 45 | unsigned char ivec[16], int *num, 46 | block128_f block); 47 | 48 | void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, 49 | size_t len, const void *key, 50 | unsigned char ivec[16], int *num, 51 | int enc, block128_f block); 52 | void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, 53 | size_t length, const void *key, 54 | unsigned char ivec[16], int *num, 55 | int enc, block128_f block); 56 | void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, 57 | size_t bits, const void *key, 58 | unsigned char ivec[16], int *num, 59 | int enc, block128_f block); 60 | 61 | size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, unsigned char *out, 62 | size_t len, const void *key, 63 | unsigned char ivec[16], block128_f block); 64 | size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, 65 | size_t len, const void *key, 66 | unsigned char ivec[16], cbc128_f cbc); 67 | size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, unsigned char *out, 68 | size_t len, const void *key, 69 | unsigned char ivec[16], block128_f block); 70 | size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, 71 | size_t len, const void *key, 72 | unsigned char ivec[16], cbc128_f cbc); 73 | 74 | size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, unsigned char *out, 75 | size_t len, const void *key, 76 | unsigned char ivec[16], block128_f block); 77 | size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, 78 | size_t len, const void *key, 79 | unsigned char ivec[16], cbc128_f cbc); 80 | size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, unsigned char *out, 81 | size_t len, const void *key, 82 | unsigned char ivec[16], block128_f block); 83 | size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, 84 | size_t len, const void *key, 85 | unsigned char ivec[16], cbc128_f cbc); 86 | 87 | typedef struct gcm128_context GCM128_CONTEXT; 88 | 89 | GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); 90 | void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx,void *key,block128_f block); 91 | void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, 92 | size_t len); 93 | int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, 94 | size_t len); 95 | int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, 96 | const unsigned char *in, unsigned char *out, 97 | size_t len); 98 | int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, 99 | const unsigned char *in, unsigned char *out, 100 | size_t len); 101 | int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, 102 | const unsigned char *in, unsigned char *out, 103 | size_t len, ctr128_f stream); 104 | int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, 105 | const unsigned char *in, unsigned char *out, 106 | size_t len, ctr128_f stream); 107 | int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx,const unsigned char *tag, 108 | size_t len); 109 | void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 110 | void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); 111 | 112 | typedef struct ccm128_context CCM128_CONTEXT; 113 | 114 | void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, 115 | unsigned int M, unsigned int L, void *key,block128_f block); 116 | int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, 117 | const unsigned char *nonce, size_t nlen, size_t mlen); 118 | void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, 119 | const unsigned char *aad, size_t alen); 120 | int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, 121 | const unsigned char *inp, unsigned char *out, size_t len); 122 | int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, 123 | const unsigned char *inp, unsigned char *out, size_t len); 124 | int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, 125 | const unsigned char *inp, unsigned char *out, size_t len, 126 | ccm128_f stream); 127 | int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, 128 | const unsigned char *inp, unsigned char *out, size_t len, 129 | ccm128_f stream); 130 | size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); 131 | 132 | typedef struct xts128_context XTS128_CONTEXT; 133 | 134 | int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], 135 | const unsigned char *inp, unsigned char *out, size_t len, int enc); 136 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/opensslv.h: -------------------------------------------------------------------------------- 1 | #ifndef HEADER_OPENSSLV_H 2 | #define HEADER_OPENSSLV_H 3 | 4 | /* Numeric release version identifier: 5 | * MNNFFPPS: major minor fix patch status 6 | * The status nibble has one of the values 0 for development, 1 to e for betas 7 | * 1 to 14, and f for release. The patch level is exactly that. 8 | * For example: 9 | * 0.9.3-dev 0x00903000 10 | * 0.9.3-beta1 0x00903001 11 | * 0.9.3-beta2-dev 0x00903002 12 | * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) 13 | * 0.9.3 0x0090300f 14 | * 0.9.3a 0x0090301f 15 | * 0.9.4 0x0090400f 16 | * 1.2.3z 0x102031af 17 | * 18 | * For continuity reasons (because 0.9.5 is already out, and is coded 19 | * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level 20 | * part is slightly different, by setting the highest bit. This means 21 | * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start 22 | * with 0x0090600S... 23 | * 24 | * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for 26 | * major minor fix final patch/beta) 27 | */ 28 | #define OPENSSL_VERSION_NUMBER 0x1000108fL 29 | #ifdef OPENSSL_FIPS 30 | #define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1h-fips 5 Jun 2014" 31 | #else 32 | #define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1h 5 Jun 2014" 33 | #endif 34 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT 35 | 36 | 37 | /* The macros below are to be used for shared library (.so, .dll, ...) 38 | * versioning. That kind of versioning works a bit differently between 39 | * operating systems. The most usual scheme is to set a major and a minor 40 | * number, and have the runtime loader check that the major number is equal 41 | * to what it was at application link time, while the minor number has to 42 | * be greater or equal to what it was at application link time. With this 43 | * scheme, the version number is usually part of the file name, like this: 44 | * 45 | * libcrypto.so.0.9 46 | * 47 | * Some unixen also make a softlink with the major verson number only: 48 | * 49 | * libcrypto.so.0 50 | * 51 | * On Tru64 and IRIX 6.x it works a little bit differently. There, the 52 | * shared library version is stored in the file, and is actually a series 53 | * of versions, separated by colons. The rightmost version present in the 54 | * library when linking an application is stored in the application to be 55 | * matched at run time. When the application is run, a check is done to 56 | * see if the library version stored in the application matches any of the 57 | * versions in the version string of the library itself. 58 | * This version string can be constructed in any way, depending on what 59 | * kind of matching is desired. However, to implement the same scheme as 60 | * the one used in the other unixen, all compatible versions, from lowest 61 | * to highest, should be part of the string. Consecutive builds would 62 | * give the following versions strings: 63 | * 64 | * 3.0 65 | * 3.0:3.1 66 | * 3.0:3.1:3.2 67 | * 4.0 68 | * 4.0:4.1 69 | * 70 | * Notice how version 4 is completely incompatible with version, and 71 | * therefore give the breach you can see. 72 | * 73 | * There may be other schemes as well that I haven't yet discovered. 74 | * 75 | * So, here's the way it works here: first of all, the library version 76 | * number doesn't need at all to match the overall OpenSSL version. 77 | * However, it's nice and more understandable if it actually does. 78 | * The current library version is stored in the macro SHLIB_VERSION_NUMBER, 79 | * which is just a piece of text in the format "M.m.e" (Major, minor, edit). 80 | * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, 81 | * we need to keep a history of version numbers, which is done in the 82 | * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and 83 | * should only keep the versions that are binary compatible with the current. 84 | */ 85 | #define SHLIB_VERSION_HISTORY "" 86 | #define SHLIB_VERSION_NUMBER "1.0.0" 87 | 88 | 89 | #endif /* HEADER_OPENSSLV_H */ 90 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/pem2.h: -------------------------------------------------------------------------------- 1 | /* ==================================================================== 2 | * Copyright (c) 1999 The OpenSSL 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 OpenSSL Project 19 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 20 | * 21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 22 | * endorse or promote products derived from this software without 23 | * prior written permission. For written permission, please contact 24 | * licensing@OpenSSL.org. 25 | * 26 | * 5. Products derived from this software may not be called "OpenSSL" 27 | * nor may "OpenSSL" appear in their names without prior written 28 | * permission of the OpenSSL Project. 29 | * 30 | * 6. Redistributions of any form whatsoever must retain the following 31 | * acknowledgment: 32 | * "This product includes software developed by the OpenSSL Project 33 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 34 | * 35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL 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 OpenSSL 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 | * This product includes cryptographic software written by Eric Young 50 | * (eay@cryptsoft.com). This product includes software written by Tim 51 | * Hudson (tjh@cryptsoft.com). 52 | * 53 | */ 54 | 55 | /* 56 | * This header only exists to break a circular dependency between pem and err 57 | * Ben 30 Jan 1999. 58 | */ 59 | 60 | #ifdef __cplusplus 61 | extern "C" { 62 | #endif 63 | 64 | #ifndef HEADER_PEM_H 65 | void ERR_load_PEM_strings(void); 66 | #endif 67 | 68 | #ifdef __cplusplus 69 | } 70 | #endif 71 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/pqueue.h: -------------------------------------------------------------------------------- 1 | /* crypto/pqueue/pqueue.h */ 2 | /* 3 | * DTLS implementation written by Nagendra Modadugu 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 5 | */ 6 | /* ==================================================================== 7 | * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * 1. Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * 16 | * 2. Redistributions in binary form must reproduce the above copyright 17 | * notice, this list of conditions and the following disclaimer in 18 | * the documentation and/or other materials provided with the 19 | * distribution. 20 | * 21 | * 3. All advertising materials mentioning features or use of this 22 | * software must display the following acknowledgment: 23 | * "This product includes software developed by the OpenSSL Project 24 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 25 | * 26 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 27 | * endorse or promote products derived from this software without 28 | * prior written permission. For written permission, please contact 29 | * openssl-core@OpenSSL.org. 30 | * 31 | * 5. Products derived from this software may not be called "OpenSSL" 32 | * nor may "OpenSSL" appear in their names without prior written 33 | * permission of the OpenSSL Project. 34 | * 35 | * 6. Redistributions of any form whatsoever must retain the following 36 | * acknowledgment: 37 | * "This product includes software developed by the OpenSSL Project 38 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 39 | * 40 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 41 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 43 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 44 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 46 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 47 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 49 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 50 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 51 | * OF THE POSSIBILITY OF SUCH DAMAGE. 52 | * ==================================================================== 53 | * 54 | * This product includes cryptographic software written by Eric Young 55 | * (eay@cryptsoft.com). This product includes software written by Tim 56 | * Hudson (tjh@cryptsoft.com). 57 | * 58 | */ 59 | 60 | #ifndef HEADER_PQUEUE_H 61 | #define HEADER_PQUEUE_H 62 | 63 | #include 64 | #include 65 | #include 66 | 67 | typedef struct _pqueue *pqueue; 68 | 69 | typedef struct _pitem 70 | { 71 | unsigned char priority[8]; /* 64-bit value in big-endian encoding */ 72 | void *data; 73 | struct _pitem *next; 74 | } pitem; 75 | 76 | typedef struct _pitem *piterator; 77 | 78 | pitem *pitem_new(unsigned char *prio64be, void *data); 79 | void pitem_free(pitem *item); 80 | 81 | pqueue pqueue_new(void); 82 | void pqueue_free(pqueue pq); 83 | 84 | pitem *pqueue_insert(pqueue pq, pitem *item); 85 | pitem *pqueue_peek(pqueue pq); 86 | pitem *pqueue_pop(pqueue pq); 87 | pitem *pqueue_find(pqueue pq, unsigned char *prio64be); 88 | pitem *pqueue_iterator(pqueue pq); 89 | pitem *pqueue_next(piterator *iter); 90 | 91 | void pqueue_print(pqueue pq); 92 | int pqueue_size(pqueue pq); 93 | 94 | #endif /* ! HEADER_PQUEUE_H */ 95 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/rand.h: -------------------------------------------------------------------------------- 1 | /* crypto/rand/rand.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_RAND_H 60 | #define HEADER_RAND_H 61 | 62 | #include 63 | #include 64 | #include 65 | 66 | #if defined(OPENSSL_SYS_WINDOWS) 67 | #include 68 | #endif 69 | 70 | #ifdef __cplusplus 71 | extern "C" { 72 | #endif 73 | 74 | #if defined(OPENSSL_FIPS) 75 | #define FIPS_RAND_SIZE_T size_t 76 | #endif 77 | 78 | /* Already defined in ossl_typ.h */ 79 | /* typedef struct rand_meth_st RAND_METHOD; */ 80 | 81 | struct rand_meth_st 82 | { 83 | void (*seed)(const void *buf, int num); 84 | int (*bytes)(unsigned char *buf, int num); 85 | void (*cleanup)(void); 86 | void (*add)(const void *buf, int num, double entropy); 87 | int (*pseudorand)(unsigned char *buf, int num); 88 | int (*status)(void); 89 | }; 90 | 91 | #ifdef BN_DEBUG 92 | extern int rand_predictable; 93 | #endif 94 | 95 | int RAND_set_rand_method(const RAND_METHOD *meth); 96 | const RAND_METHOD *RAND_get_rand_method(void); 97 | #ifndef OPENSSL_NO_ENGINE 98 | int RAND_set_rand_engine(ENGINE *engine); 99 | #endif 100 | RAND_METHOD *RAND_SSLeay(void); 101 | void RAND_cleanup(void ); 102 | int RAND_bytes(unsigned char *buf,int num); 103 | int RAND_pseudo_bytes(unsigned char *buf,int num); 104 | void RAND_seed(const void *buf,int num); 105 | void RAND_add(const void *buf,int num,double entropy); 106 | int RAND_load_file(const char *file,long max_bytes); 107 | int RAND_write_file(const char *file); 108 | const char *RAND_file_name(char *file,size_t num); 109 | int RAND_status(void); 110 | int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); 111 | int RAND_egd(const char *path); 112 | int RAND_egd_bytes(const char *path,int bytes); 113 | int RAND_poll(void); 114 | 115 | #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) 116 | 117 | void RAND_screen(void); 118 | int RAND_event(UINT, WPARAM, LPARAM); 119 | 120 | #endif 121 | 122 | #ifdef OPENSSL_FIPS 123 | void RAND_set_fips_drbg_type(int type, int flags); 124 | int RAND_init_fips(void); 125 | #endif 126 | 127 | /* BEGIN ERROR CODES */ 128 | /* The following lines are auto generated by the script mkerr.pl. Any changes 129 | * made after this point may be overwritten when the script is next run. 130 | */ 131 | void ERR_load_RAND_strings(void); 132 | 133 | /* Error codes for the RAND functions. */ 134 | 135 | /* Function codes. */ 136 | #define RAND_F_RAND_GET_RAND_METHOD 101 137 | #define RAND_F_RAND_INIT_FIPS 102 138 | #define RAND_F_SSLEAY_RAND_BYTES 100 139 | 140 | /* Reason codes. */ 141 | #define RAND_R_DUAL_EC_DRBG_DISABLED 104 142 | #define RAND_R_ERROR_INITIALISING_DRBG 102 143 | #define RAND_R_ERROR_INSTANTIATING_DRBG 103 144 | #define RAND_R_NO_FIPS_RANDOM_METHOD_SET 101 145 | #define RAND_R_PRNG_NOT_SEEDED 100 146 | 147 | #ifdef __cplusplus 148 | } 149 | #endif 150 | #endif 151 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/rc2.h: -------------------------------------------------------------------------------- 1 | /* crypto/rc2/rc2.h */ 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_RC2_H 60 | #define HEADER_RC2_H 61 | 62 | #include /* OPENSSL_NO_RC2, RC2_INT */ 63 | #ifdef OPENSSL_NO_RC2 64 | #error RC2 is disabled. 65 | #endif 66 | 67 | #define RC2_ENCRYPT 1 68 | #define RC2_DECRYPT 0 69 | 70 | #define RC2_BLOCK 8 71 | #define RC2_KEY_LENGTH 16 72 | 73 | #ifdef __cplusplus 74 | extern "C" { 75 | #endif 76 | 77 | typedef struct rc2_key_st 78 | { 79 | RC2_INT data[64]; 80 | } RC2_KEY; 81 | 82 | #ifdef OPENSSL_FIPS 83 | void private_RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits); 84 | #endif 85 | void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits); 86 | void RC2_ecb_encrypt(const unsigned char *in,unsigned char *out,RC2_KEY *key, 87 | int enc); 88 | void RC2_encrypt(unsigned long *data,RC2_KEY *key); 89 | void RC2_decrypt(unsigned long *data,RC2_KEY *key); 90 | void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 91 | RC2_KEY *ks, unsigned char *iv, int enc); 92 | void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, 93 | long length, RC2_KEY *schedule, unsigned char *ivec, 94 | int *num, int enc); 95 | void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, 96 | long length, RC2_KEY *schedule, unsigned char *ivec, 97 | int *num); 98 | 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif 104 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/rc4.h: -------------------------------------------------------------------------------- 1 | /* crypto/rc4/rc4.h */ 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_RC4_H 60 | #define HEADER_RC4_H 61 | 62 | #include /* OPENSSL_NO_RC4, RC4_INT */ 63 | #ifdef OPENSSL_NO_RC4 64 | #error RC4 is disabled. 65 | #endif 66 | 67 | #include 68 | 69 | #ifdef __cplusplus 70 | extern "C" { 71 | #endif 72 | 73 | typedef struct rc4_key_st 74 | { 75 | RC4_INT x,y; 76 | RC4_INT data[256]; 77 | } RC4_KEY; 78 | 79 | 80 | const char *RC4_options(void); 81 | void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); 82 | void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); 83 | void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, 84 | unsigned char *outdata); 85 | 86 | #ifdef __cplusplus 87 | } 88 | #endif 89 | 90 | #endif 91 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/ripemd.h: -------------------------------------------------------------------------------- 1 | /* crypto/ripemd/ripemd.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_RIPEMD_H 60 | #define HEADER_RIPEMD_H 61 | 62 | #include 63 | #include 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | #ifdef OPENSSL_NO_RIPEMD 70 | #error RIPEMD is disabled. 71 | #endif 72 | 73 | #if defined(__LP32__) 74 | #define RIPEMD160_LONG unsigned long 75 | #elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 76 | #define RIPEMD160_LONG unsigned long 77 | #define RIPEMD160_LONG_LOG2 3 78 | #else 79 | #define RIPEMD160_LONG unsigned int 80 | #endif 81 | 82 | #define RIPEMD160_CBLOCK 64 83 | #define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) 84 | #define RIPEMD160_DIGEST_LENGTH 20 85 | 86 | typedef struct RIPEMD160state_st 87 | { 88 | RIPEMD160_LONG A,B,C,D,E; 89 | RIPEMD160_LONG Nl,Nh; 90 | RIPEMD160_LONG data[RIPEMD160_LBLOCK]; 91 | unsigned int num; 92 | } RIPEMD160_CTX; 93 | 94 | #ifdef OPENSSL_FIPS 95 | int private_RIPEMD160_Init(RIPEMD160_CTX *c); 96 | #endif 97 | int RIPEMD160_Init(RIPEMD160_CTX *c); 98 | int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); 99 | int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); 100 | unsigned char *RIPEMD160(const unsigned char *d, size_t n, 101 | unsigned char *md); 102 | void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); 103 | #ifdef __cplusplus 104 | } 105 | #endif 106 | 107 | #endif 108 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/seed.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2007 KISA(Korea Information Security Agency). 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 | * 1. Redistributions of source code must retain the above copyright 8 | * notice, this list of conditions and the following disclaimer. 9 | * 2. Neither the name of author nor the names of its contributors may 10 | * be used to endorse or promote products derived from this software 11 | * without specific prior written permission. 12 | * 13 | * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 | * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 17 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 | * SUCH DAMAGE. 24 | * 25 | */ 26 | /* ==================================================================== 27 | * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. 28 | * 29 | * Redistribution and use in source and binary forms, with or without 30 | * modification, are permitted provided that the following conditions 31 | * are met: 32 | * 33 | * 1. Redistributions of source code must retain the above copyright 34 | * notice, this list of conditions and the following disclaimer. 35 | * 36 | * 2. Redistributions in binary form must reproduce the above copyright 37 | * notice, this list of conditions and the following disclaimer in 38 | * the documentation and/or other materials provided with the 39 | * distribution. 40 | * 41 | * 3. All advertising materials mentioning features or use of this 42 | * software must display the following acknowledgment: 43 | * "This product includes software developed by the OpenSSL Project 44 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 45 | * 46 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 47 | * endorse or promote products derived from this software without 48 | * prior written permission. For written permission, please contact 49 | * openssl-core@openssl.org. 50 | * 51 | * 5. Products derived from this software may not be called "OpenSSL" 52 | * nor may "OpenSSL" appear in their names without prior written 53 | * permission of the OpenSSL Project. 54 | * 55 | * 6. Redistributions of any form whatsoever must retain the following 56 | * acknowledgment: 57 | * "This product includes software developed by the OpenSSL Project 58 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 59 | * 60 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 61 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 62 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 63 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 64 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 65 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 66 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 67 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 68 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 69 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 70 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 71 | * OF THE POSSIBILITY OF SUCH DAMAGE. 72 | * ==================================================================== 73 | * 74 | * This product includes cryptographic software written by Eric Young 75 | * (eay@cryptsoft.com). This product includes software written by Tim 76 | * Hudson (tjh@cryptsoft.com). 77 | * 78 | */ 79 | 80 | 81 | #ifndef HEADER_SEED_H 82 | #define HEADER_SEED_H 83 | 84 | #include 85 | #include 86 | #include 87 | 88 | #ifdef OPENSSL_NO_SEED 89 | #error SEED is disabled. 90 | #endif 91 | 92 | #ifdef AES_LONG /* look whether we need 'long' to get 32 bits */ 93 | # ifndef SEED_LONG 94 | # define SEED_LONG 1 95 | # endif 96 | #endif 97 | 98 | #if !defined(NO_SYS_TYPES_H) 99 | # include 100 | #endif 101 | 102 | #define SEED_BLOCK_SIZE 16 103 | #define SEED_KEY_LENGTH 16 104 | 105 | 106 | #ifdef __cplusplus 107 | extern "C" { 108 | #endif 109 | 110 | 111 | typedef struct seed_key_st { 112 | #ifdef SEED_LONG 113 | unsigned long data[32]; 114 | #else 115 | unsigned int data[32]; 116 | #endif 117 | } SEED_KEY_SCHEDULE; 118 | 119 | #ifdef OPENSSL_FIPS 120 | void private_SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks); 121 | #endif 122 | void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks); 123 | 124 | void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_BLOCK_SIZE], const SEED_KEY_SCHEDULE *ks); 125 | void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_BLOCK_SIZE], const SEED_KEY_SCHEDULE *ks); 126 | 127 | void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, const SEED_KEY_SCHEDULE *ks, int enc); 128 | void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, 129 | size_t len, const SEED_KEY_SCHEDULE *ks, unsigned char ivec[SEED_BLOCK_SIZE], int enc); 130 | void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, 131 | size_t len, const SEED_KEY_SCHEDULE *ks, unsigned char ivec[SEED_BLOCK_SIZE], int *num, int enc); 132 | void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, 133 | size_t len, const SEED_KEY_SCHEDULE *ks, unsigned char ivec[SEED_BLOCK_SIZE], int *num); 134 | 135 | #ifdef __cplusplus 136 | } 137 | #endif 138 | 139 | #endif /* HEADER_SEED_H */ 140 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/srp.h: -------------------------------------------------------------------------------- 1 | /* crypto/srp/srp.h */ 2 | /* Written by Christophe Renou (christophe.renou@edelweb.fr) with 3 | * the precious help of Peter Sylvester (peter.sylvester@edelweb.fr) 4 | * for the EdelKey project and contributed to the OpenSSL project 2004. 5 | */ 6 | /* ==================================================================== 7 | * Copyright (c) 2004 The OpenSSL Project. All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * 1. Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * 16 | * 2. Redistributions in binary form must reproduce the above copyright 17 | * notice, this list of conditions and the following disclaimer in 18 | * the documentation and/or other materials provided with the 19 | * distribution. 20 | * 21 | * 3. All advertising materials mentioning features or use of this 22 | * software must display the following acknowledgment: 23 | * "This product includes software developed by the OpenSSL Project 24 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 25 | * 26 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 27 | * endorse or promote products derived from this software without 28 | * prior written permission. For written permission, please contact 29 | * licensing@OpenSSL.org. 30 | * 31 | * 5. Products derived from this software may not be called "OpenSSL" 32 | * nor may "OpenSSL" appear in their names without prior written 33 | * permission of the OpenSSL Project. 34 | * 35 | * 6. Redistributions of any form whatsoever must retain the following 36 | * acknowledgment: 37 | * "This product includes software developed by the OpenSSL Project 38 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 39 | * 40 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 41 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 43 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 44 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 46 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 47 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 49 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 50 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 51 | * OF THE POSSIBILITY OF SUCH DAMAGE. 52 | * ==================================================================== 53 | * 54 | * This product includes cryptographic software written by Eric Young 55 | * (eay@cryptsoft.com). This product includes software written by Tim 56 | * Hudson (tjh@cryptsoft.com). 57 | * 58 | */ 59 | #ifndef __SRP_H__ 60 | #define __SRP_H__ 61 | 62 | #ifndef OPENSSL_NO_SRP 63 | 64 | #include 65 | #include 66 | 67 | #ifdef __cplusplus 68 | extern "C" { 69 | #endif 70 | 71 | #include 72 | #include 73 | #include 74 | 75 | typedef struct SRP_gN_cache_st 76 | { 77 | char *b64_bn; 78 | BIGNUM *bn; 79 | } SRP_gN_cache; 80 | 81 | 82 | DECLARE_STACK_OF(SRP_gN_cache) 83 | 84 | typedef struct SRP_user_pwd_st 85 | { 86 | char *id; 87 | BIGNUM *s; 88 | BIGNUM *v; 89 | const BIGNUM *g; 90 | const BIGNUM *N; 91 | char *info; 92 | } SRP_user_pwd; 93 | 94 | DECLARE_STACK_OF(SRP_user_pwd) 95 | 96 | typedef struct SRP_VBASE_st 97 | { 98 | STACK_OF(SRP_user_pwd) *users_pwd; 99 | STACK_OF(SRP_gN_cache) *gN_cache; 100 | /* to simulate a user */ 101 | char *seed_key; 102 | BIGNUM *default_g; 103 | BIGNUM *default_N; 104 | } SRP_VBASE; 105 | 106 | 107 | /*Structure interne pour retenir les couples N et g*/ 108 | typedef struct SRP_gN_st 109 | { 110 | char *id; 111 | BIGNUM *g; 112 | BIGNUM *N; 113 | } SRP_gN; 114 | 115 | DECLARE_STACK_OF(SRP_gN) 116 | 117 | SRP_VBASE *SRP_VBASE_new(char *seed_key); 118 | int SRP_VBASE_free(SRP_VBASE *vb); 119 | int SRP_VBASE_init(SRP_VBASE *vb, char * verifier_file); 120 | SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); 121 | char *SRP_create_verifier(const char *user, const char *pass, char **salt, 122 | char **verifier, const char *N, const char *g); 123 | int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, BIGNUM **verifier, BIGNUM *N, BIGNUM *g); 124 | 125 | 126 | #define SRP_NO_ERROR 0 127 | #define SRP_ERR_VBASE_INCOMPLETE_FILE 1 128 | #define SRP_ERR_VBASE_BN_LIB 2 129 | #define SRP_ERR_OPEN_FILE 3 130 | #define SRP_ERR_MEMORY 4 131 | 132 | #define DB_srptype 0 133 | #define DB_srpverifier 1 134 | #define DB_srpsalt 2 135 | #define DB_srpid 3 136 | #define DB_srpgN 4 137 | #define DB_srpinfo 5 138 | #undef DB_NUMBER 139 | #define DB_NUMBER 6 140 | 141 | #define DB_SRP_INDEX 'I' 142 | #define DB_SRP_VALID 'V' 143 | #define DB_SRP_REVOKED 'R' 144 | #define DB_SRP_MODIF 'v' 145 | 146 | 147 | /* see srp.c */ 148 | char * SRP_check_known_gN_param(BIGNUM* g, BIGNUM* N); 149 | SRP_gN *SRP_get_default_gN(const char * id) ; 150 | 151 | /* server side .... */ 152 | BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b, BIGNUM *N); 153 | BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v); 154 | int SRP_Verify_A_mod_N(BIGNUM *A, BIGNUM *N); 155 | BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N) ; 156 | 157 | 158 | 159 | /* client side .... */ 160 | BIGNUM *SRP_Calc_x(BIGNUM *s, const char *user, const char *pass); 161 | BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g); 162 | BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x, BIGNUM *a, BIGNUM *u); 163 | int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N); 164 | 165 | #define SRP_MINIMAL_N 1024 166 | 167 | #ifdef __cplusplus 168 | } 169 | #endif 170 | 171 | #endif 172 | #endif 173 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/srtp.h: -------------------------------------------------------------------------------- 1 | /* ssl/tls1.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | /* ==================================================================== 59 | * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 60 | * 61 | * Redistribution and use in source and binary forms, with or without 62 | * modification, are permitted provided that the following conditions 63 | * are met: 64 | * 65 | * 1. Redistributions of source code must retain the above copyright 66 | * notice, this list of conditions and the following disclaimer. 67 | * 68 | * 2. Redistributions in binary form must reproduce the above copyright 69 | * notice, this list of conditions and the following disclaimer in 70 | * the documentation and/or other materials provided with the 71 | * distribution. 72 | * 73 | * 3. All advertising materials mentioning features or use of this 74 | * software must display the following acknowledgment: 75 | * "This product includes software developed by the OpenSSL Project 76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 77 | * 78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 79 | * endorse or promote products derived from this software without 80 | * prior written permission. For written permission, please contact 81 | * openssl-core@openssl.org. 82 | * 83 | * 5. Products derived from this software may not be called "OpenSSL" 84 | * nor may "OpenSSL" appear in their names without prior written 85 | * permission of the OpenSSL Project. 86 | * 87 | * 6. Redistributions of any form whatsoever must retain the following 88 | * acknowledgment: 89 | * "This product includes software developed by the OpenSSL Project 90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 91 | * 92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 103 | * OF THE POSSIBILITY OF SUCH DAMAGE. 104 | * ==================================================================== 105 | * 106 | * This product includes cryptographic software written by Eric Young 107 | * (eay@cryptsoft.com). This product includes software written by Tim 108 | * Hudson (tjh@cryptsoft.com). 109 | * 110 | */ 111 | /* 112 | DTLS code by Eric Rescorla 113 | 114 | Copyright (C) 2006, Network Resonance, Inc. 115 | Copyright (C) 2011, RTFM, Inc. 116 | */ 117 | 118 | #ifndef HEADER_D1_SRTP_H 119 | #define HEADER_D1_SRTP_H 120 | 121 | #ifdef __cplusplus 122 | extern "C" { 123 | #endif 124 | 125 | 126 | #define SRTP_AES128_CM_SHA1_80 0x0001 127 | #define SRTP_AES128_CM_SHA1_32 0x0002 128 | #define SRTP_AES128_F8_SHA1_80 0x0003 129 | #define SRTP_AES128_F8_SHA1_32 0x0004 130 | #define SRTP_NULL_SHA1_80 0x0005 131 | #define SRTP_NULL_SHA1_32 0x0006 132 | 133 | int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); 134 | int SSL_set_tlsext_use_srtp(SSL *ctx, const char *profiles); 135 | SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); 136 | 137 | STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); 138 | SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); 139 | 140 | #ifdef __cplusplus 141 | } 142 | #endif 143 | 144 | #endif 145 | 146 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/ssl23.h: -------------------------------------------------------------------------------- 1 | /* ssl/ssl23.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_SSL23_H 60 | #define HEADER_SSL23_H 61 | 62 | #ifdef __cplusplus 63 | extern "C" { 64 | #endif 65 | 66 | /*client */ 67 | /* write to server */ 68 | #define SSL23_ST_CW_CLNT_HELLO_A (0x210|SSL_ST_CONNECT) 69 | #define SSL23_ST_CW_CLNT_HELLO_B (0x211|SSL_ST_CONNECT) 70 | /* read from server */ 71 | #define SSL23_ST_CR_SRVR_HELLO_A (0x220|SSL_ST_CONNECT) 72 | #define SSL23_ST_CR_SRVR_HELLO_B (0x221|SSL_ST_CONNECT) 73 | 74 | /* server */ 75 | /* read from client */ 76 | #define SSL23_ST_SR_CLNT_HELLO_A (0x210|SSL_ST_ACCEPT) 77 | #define SSL23_ST_SR_CLNT_HELLO_B (0x211|SSL_ST_ACCEPT) 78 | 79 | #ifdef __cplusplus 80 | } 81 | #endif 82 | #endif 83 | 84 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/stack.h: -------------------------------------------------------------------------------- 1 | /* crypto/stack/stack.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_STACK_H 60 | #define HEADER_STACK_H 61 | 62 | #ifdef __cplusplus 63 | extern "C" { 64 | #endif 65 | 66 | typedef struct stack_st 67 | { 68 | int num; 69 | char **data; 70 | int sorted; 71 | 72 | int num_alloc; 73 | int (*comp)(const void *, const void *); 74 | } _STACK; /* Use STACK_OF(...) instead */ 75 | 76 | #define M_sk_num(sk) ((sk) ? (sk)->num:-1) 77 | #define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) 78 | 79 | int sk_num(const _STACK *); 80 | void *sk_value(const _STACK *, int); 81 | 82 | void *sk_set(_STACK *, int, void *); 83 | 84 | _STACK *sk_new(int (*cmp)(const void *, const void *)); 85 | _STACK *sk_new_null(void); 86 | void sk_free(_STACK *); 87 | void sk_pop_free(_STACK *st, void (*func)(void *)); 88 | int sk_insert(_STACK *sk, void *data, int where); 89 | void *sk_delete(_STACK *st, int loc); 90 | void *sk_delete_ptr(_STACK *st, void *p); 91 | int sk_find(_STACK *st, void *data); 92 | int sk_find_ex(_STACK *st, void *data); 93 | int sk_push(_STACK *st, void *data); 94 | int sk_unshift(_STACK *st, void *data); 95 | void *sk_shift(_STACK *st); 96 | void *sk_pop(_STACK *st); 97 | void sk_zero(_STACK *st); 98 | int (*sk_set_cmp_func(_STACK *sk, int (*c)(const void *, const void *))) 99 | (const void *, const void *); 100 | _STACK *sk_dup(_STACK *st); 101 | void sk_sort(_STACK *st); 102 | int sk_is_sorted(const _STACK *st); 103 | 104 | #ifdef __cplusplus 105 | } 106 | #endif 107 | 108 | #endif 109 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/txt_db.h: -------------------------------------------------------------------------------- 1 | /* crypto/txt_db/txt_db.h */ 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 | * All rights reserved. 4 | * 5 | * This package is an SSL implementation written 6 | * by Eric Young (eay@cryptsoft.com). 7 | * The implementation was written so as to conform with Netscapes SSL. 8 | * 9 | * This library is free for commercial and non-commercial use as long as 10 | * the following conditions are aheared to. The following conditions 11 | * apply to all code found in this distribution, be it the RC4, RSA, 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 | * included with this distribution is covered by the same copyright terms 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 | * 16 | * Copyright remains Eric Young's, and as such any Copyright notices in 17 | * the code are not to be removed. 18 | * If this package is used in a product, Eric Young should be given attribution 19 | * as the author of the parts of the library used. 20 | * This can be in the form of a textual message at program startup or 21 | * in documentation (online or textual) provided with the package. 22 | * 23 | * Redistribution and use in source and binary forms, with or without 24 | * modification, are permitted provided that the following conditions 25 | * are met: 26 | * 1. Redistributions of source code must retain the copyright 27 | * notice, this list of conditions and the following disclaimer. 28 | * 2. Redistributions in binary form must reproduce the above copyright 29 | * notice, this list of conditions and the following disclaimer in the 30 | * documentation and/or other materials provided with the distribution. 31 | * 3. All advertising materials mentioning features or use of this software 32 | * must display the following acknowledgement: 33 | * "This product includes cryptographic software written by 34 | * Eric Young (eay@cryptsoft.com)" 35 | * The word 'cryptographic' can be left out if the rouines from the library 36 | * being used are not cryptographic related :-). 37 | * 4. If you include any Windows specific code (or a derivative thereof) from 38 | * the apps directory (application code) you must include an acknowledgement: 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 | * 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 | * SUCH DAMAGE. 52 | * 53 | * The licence and distribution terms for any publically available version or 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be 55 | * copied and put under another distribution licence 56 | * [including the GNU Public Licence.] 57 | */ 58 | 59 | #ifndef HEADER_TXT_DB_H 60 | #define HEADER_TXT_DB_H 61 | 62 | #include 63 | #ifndef OPENSSL_NO_BIO 64 | #include 65 | #endif 66 | #include 67 | #include 68 | 69 | #define DB_ERROR_OK 0 70 | #define DB_ERROR_MALLOC 1 71 | #define DB_ERROR_INDEX_CLASH 2 72 | #define DB_ERROR_INDEX_OUT_OF_RANGE 3 73 | #define DB_ERROR_NO_INDEX 4 74 | #define DB_ERROR_INSERT_INDEX_CLASH 5 75 | 76 | #ifdef __cplusplus 77 | extern "C" { 78 | #endif 79 | 80 | typedef OPENSSL_STRING *OPENSSL_PSTRING; 81 | DECLARE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) 82 | 83 | typedef struct txt_db_st 84 | { 85 | int num_fields; 86 | STACK_OF(OPENSSL_PSTRING) *data; 87 | LHASH_OF(OPENSSL_STRING) **index; 88 | int (**qual)(OPENSSL_STRING *); 89 | long error; 90 | long arg1; 91 | long arg2; 92 | OPENSSL_STRING *arg_row; 93 | } TXT_DB; 94 | 95 | #ifndef OPENSSL_NO_BIO 96 | TXT_DB *TXT_DB_read(BIO *in, int num); 97 | long TXT_DB_write(BIO *out, TXT_DB *db); 98 | #else 99 | TXT_DB *TXT_DB_read(char *in, int num); 100 | long TXT_DB_write(char *out, TXT_DB *db); 101 | #endif 102 | int TXT_DB_create_index(TXT_DB *db,int field,int (*qual)(OPENSSL_STRING *), 103 | LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp); 104 | void TXT_DB_free(TXT_DB *db); 105 | OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, OPENSSL_STRING *value); 106 | int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); 107 | 108 | #ifdef __cplusplus 109 | } 110 | #endif 111 | 112 | #endif 113 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/ui_compat.h: -------------------------------------------------------------------------------- 1 | /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */ 2 | /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL 3 | * project 2001. 4 | */ 5 | /* ==================================================================== 6 | * Copyright (c) 2001 The OpenSSL Project. All rights reserved. 7 | * 8 | * Redistribution and use in source and binary forms, with or without 9 | * modification, are permitted provided that the following conditions 10 | * are met: 11 | * 12 | * 1. Redistributions of source code must retain the above copyright 13 | * notice, this list of conditions and the following disclaimer. 14 | * 15 | * 2. Redistributions in binary form must reproduce the above copyright 16 | * notice, this list of conditions and the following disclaimer in 17 | * the documentation and/or other materials provided with the 18 | * distribution. 19 | * 20 | * 3. All advertising materials mentioning features or use of this 21 | * software must display the following acknowledgment: 22 | * "This product includes software developed by the OpenSSL Project 23 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 24 | * 25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26 | * endorse or promote products derived from this software without 27 | * prior written permission. For written permission, please contact 28 | * openssl-core@openssl.org. 29 | * 30 | * 5. Products derived from this software may not be called "OpenSSL" 31 | * nor may "OpenSSL" appear in their names without prior written 32 | * permission of the OpenSSL Project. 33 | * 34 | * 6. Redistributions of any form whatsoever must retain the following 35 | * acknowledgment: 36 | * "This product includes software developed by the OpenSSL Project 37 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 38 | * 39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50 | * OF THE POSSIBILITY OF SUCH DAMAGE. 51 | * ==================================================================== 52 | * 53 | * This product includes cryptographic software written by Eric Young 54 | * (eay@cryptsoft.com). This product includes software written by Tim 55 | * Hudson (tjh@cryptsoft.com). 56 | * 57 | */ 58 | 59 | #ifndef HEADER_UI_COMPAT_H 60 | #define HEADER_UI_COMPAT_H 61 | 62 | #include 63 | #include 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | /* The following functions were previously part of the DES section, 70 | and are provided here for backward compatibility reasons. */ 71 | 72 | #define des_read_pw_string(b,l,p,v) \ 73 | _ossl_old_des_read_pw_string((b),(l),(p),(v)) 74 | #define des_read_pw(b,bf,s,p,v) \ 75 | _ossl_old_des_read_pw((b),(bf),(s),(p),(v)) 76 | 77 | int _ossl_old_des_read_pw_string(char *buf,int length,const char *prompt,int verify); 78 | int _ossl_old_des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify); 79 | 80 | #ifdef __cplusplus 81 | } 82 | #endif 83 | #endif 84 | -------------------------------------------------------------------------------- /src/ios/alipayUtil/openssl/whrlpool.h: -------------------------------------------------------------------------------- 1 | #ifndef HEADER_WHRLPOOL_H 2 | #define HEADER_WHRLPOOL_H 3 | 4 | #include 5 | #include 6 | 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | 11 | #define WHIRLPOOL_DIGEST_LENGTH (512/8) 12 | #define WHIRLPOOL_BBLOCK 512 13 | #define WHIRLPOOL_COUNTER (256/8) 14 | 15 | typedef struct { 16 | union { 17 | unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; 18 | /* double q is here to ensure 64-bit alignment */ 19 | double q[WHIRLPOOL_DIGEST_LENGTH/sizeof(double)]; 20 | } H; 21 | unsigned char data[WHIRLPOOL_BBLOCK/8]; 22 | unsigned int bitoff; 23 | size_t bitlen[WHIRLPOOL_COUNTER/sizeof(size_t)]; 24 | } WHIRLPOOL_CTX; 25 | 26 | #ifndef OPENSSL_NO_WHIRLPOOL 27 | #ifdef OPENSSL_FIPS 28 | int private_WHIRLPOOL_Init(WHIRLPOOL_CTX *c); 29 | #endif 30 | int WHIRLPOOL_Init (WHIRLPOOL_CTX *c); 31 | int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes); 32 | void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits); 33 | int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c); 34 | unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md); 35 | #endif 36 | 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.bundle/bar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.bundle/bar@2x.png -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.bundle/refresh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.bundle/refresh@2x.png -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.bundle/refresh_click@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.bundle/refresh_click@2x.png -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.bundle/shutdown@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.bundle/shutdown@2x.png -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.bundle/shutdown_click@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.bundle/shutdown_click@2x.png -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.framework/AlipaySDK: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.framework/AlipaySDK -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.framework/Headers/APayAuthInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // APAuthInfo.h 3 | // AliSDKDemo 4 | // 5 | // Created by 方彬 on 14-7-18. 6 | // Copyright (c) 2014年 Alipay.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface APayAuthInfo : NSObject 12 | 13 | @property(nonatomic, copy)NSString *appID; 14 | @property(nonatomic, copy)NSString *pid; 15 | @property(nonatomic, copy)NSString *redirectUri; 16 | 17 | /** 18 | * 初始化AuthInfo 19 | * 20 | * @param appIDStr 应用ID 21 | * @param productIDStr 产品码 该商户在aboss签约的产品,用户获取pid获取的参数 22 | * @param pidStr 商户ID 可不填 23 | * @param uriStr 授权的应用回调地址 比如:alidemo://auth 24 | * 25 | * @return authinfo实例 26 | */ 27 | - (id)initWithAppID:(NSString *)appIDStr 28 | pid:(NSString *)pidStr 29 | redirectUri:(NSString *)uriStr; 30 | 31 | - (NSString *)description; 32 | - (NSString *)wapDescription; 33 | @end 34 | -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.framework/Headers/AlipaySDK.h: -------------------------------------------------------------------------------- 1 | // 2 | // AlipaySDK.h 3 | // AlipaySDK 4 | // 5 | // Created by 方彬 on 14-4-28. 6 | // Copyright (c) 2014年 Alipay. All rights reserved. 7 | // 8 | 9 | 10 | //////////////////////////////////////////////////////// 11 | ////////////////version:2.1 motify:2014.12.24////////// 12 | ///////////////////Merry Christmas=。=////////////////// 13 | //////////////////////////////////////////////////////// 14 | 15 | 16 | #import "APayAuthInfo.h" 17 | 18 | typedef void(^CompletionBlock)(NSDictionary *resultDic); 19 | 20 | @interface AlipaySDK : NSObject 21 | 22 | /** 23 | * 创建支付单例服务 24 | * 25 | * @return 返回单例对象 26 | */ 27 | + (AlipaySDK *)defaultService; 28 | 29 | /** 30 | * 支付接口 31 | * 32 | * @param orderStr 订单信息 33 | * @param schemeStr 调用支付的app注册在info.plist中的scheme 34 | * @param compltionBlock 支付结果回调Block 35 | */ 36 | - (void)payOrder:(NSString *)orderStr 37 | fromScheme:(NSString *)schemeStr 38 | callback:(CompletionBlock)completionBlock; 39 | 40 | /** 41 | * 处理钱包或者独立快捷app支付跳回商户app携带的支付结果Url 42 | * 43 | * @param resultUrl 支付结果url,传入后由SDK解析,统一在上面的pay方法的callback中回调 44 | * @param completionBlock 跳钱包支付结果回调,保证跳转钱包支付过程中,即使调用方app被系统kill时,能通过这个回调取到支付结果。 45 | */ 46 | - (void)processOrderWithPaymentResult:(NSURL *)resultUrl 47 | standbyCallback:(CompletionBlock)completionBlock; 48 | 49 | /** 50 | * 是否已经使用过 51 | * 52 | * @return YES为已经使用过,NO反之 53 | */ 54 | - (BOOL)isLogined; 55 | 56 | /** 57 | * 当前版本号 58 | * 59 | * @return 当前版本字符串 60 | */ 61 | - (NSString *)currentVersion; 62 | 63 | /** 64 | * 測試所用,realse包无效 65 | * 66 | * @param url 测试环境 67 | */ 68 | - (void)setUrl:(NSString *)url; 69 | 70 | 71 | ////////////////////////////////////////////////////////////////////////////////////////////// 72 | //////////////////////////授权1.0////////////////////////////////////////////////////////////// 73 | ////////////////////////////////////////////////////////////////////////////////////////////// 74 | 75 | /** 76 | * 快登授权 77 | * @param authInfo 需授权信息 78 | * @param completionBlock 授权结果回调 79 | */ 80 | - (void)authWithInfo:(APayAuthInfo *)authInfo 81 | callback:(CompletionBlock)completionBlock; 82 | 83 | 84 | /** 85 | * 处理授权信息Url 86 | * 87 | * @param resultUrl 钱包返回的授权结果url 88 | * @param completionBlock 跳授权结果回调,保证跳转钱包授权过程中,即使调用方app被系统kill时,能通过这个回调取到支付结果。 89 | */ 90 | - (void)processAuthResult:(NSURL *)resultUrl 91 | standbyCallback:(CompletionBlock)completionBlock; 92 | 93 | ////////////////////////////////////////////////////////////////////////////////////////////// 94 | //////////////////////////授权2.0////////////////////////////////////////////////////////////// 95 | ////////////////////////////////////////////////////////////////////////////////////////////// 96 | 97 | /** 98 | * 快登授权2.0 99 | * 100 | * @param infoStr 授权请求信息字符串 101 | * @param schemeStr 调用授权的app注册在info.plist中的scheme 102 | * @param completionBlock 授权结果回调 103 | */ 104 | - (void)auth_V2WithInfo:(NSString *)infoStr 105 | fromScheme:(NSString *)schemeStr 106 | callback:(CompletionBlock)completionBlock; 107 | 108 | /** 109 | * 处理授权信息Url 110 | * 111 | * @param resultUrl 钱包返回的授权结果url 112 | * @param completionBlock 跳授权结果回调,保证跳转钱包授权过程中,即使调用方app被系统kill时,能通过这个回调取到支付结果。 113 | */ 114 | - (void)processAuth_V2Result:(NSURL *)resultUrl 115 | standbyCallback:(CompletionBlock)completionBlock; 116 | 117 | @end 118 | -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.framework/Info.plist -------------------------------------------------------------------------------- /src/ios/libs/AlipaySDK.framework/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/AlipaySDK.framework/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /src/ios/libs/libcrypto.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/libcrypto.a -------------------------------------------------------------------------------- /src/ios/libs/libssl.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chen4342024/cordova-plugin-alipay/f304fc142cc648ad5d7f608389af05437ffd9f64/src/ios/libs/libssl.a -------------------------------------------------------------------------------- /www/AlipayPlugin.js: -------------------------------------------------------------------------------- 1 | var exec = require('cordova/exec'); 2 | 3 | 4 | var Alipay = function() {}; 5 | 6 | Alipay.prototype.alipay = function(out_trade_no, subject, bodtxt, total_fee, successCallback, errorCallback, callbackUrl) { 7 | if (errorCallback == null) { 8 | errorCallback = function() {} 9 | } 10 | 11 | if (typeof errorCallback != "function") { 12 | console.log("errorCallback failure: failure parameter not a function"); 13 | return; 14 | } 15 | 16 | if (typeof successCallback != "function") { 17 | console.log("psuccessCallback failure: success callback parameter must be a function"); 18 | return; 19 | } 20 | 21 | if (!callbackUrl) { 22 | errorCallback('参数错误!'); 23 | return; 24 | } 25 | //{"out_trade_no":out_trade_no, "subject": subject,"bodtxt":bodtxt, "total_fee": total_fee, "callbackUrl": callbackUrl} 26 | exec(successCallback, errorCallback, 'AlipayPlugin', 'pay', [out_trade_no, subject, bodtxt, total_fee, callbackUrl]); 27 | }; 28 | 29 | var alipay = new Alipay(); 30 | module.exports = alipay; 31 | 32 | 33 | 34 | /***************************使用demo****************************/ 35 | //cordova.plugins.AlipayPlugin.alipay(); 36 | 37 | function testAlipay() { 38 | var subject = "测试的商品"; 39 | var body = "该测试商品的详细描述"; 40 | var price = "0.01"; 41 | var out_trade_no = getOutTradeNo(); 42 | var callbackUrl = "http://host:port/path/Alipay/notify_url.aspx"; 43 | var successCallback = function(msg) { 44 | console.log("successCallback"); 45 | if(typeof msg == "object"){ 46 | console.log("success--->" + msg.memo); 47 | console.log("success--->" + msg.result); 48 | console.log("success--->" + msg.resultStatus); 49 | alert("success--->" + msg.resultStatus + " : "+msg.result + " : " + msg.memo); 50 | }else{ 51 | alert("success--->" + msg); 52 | 53 | } 54 | 55 | }; 56 | 57 | 58 | /** 59 | * 错误代码: 60 | * 9000 订单支付成功 61 | * 8000 正在处理中 62 | * 4000 订单支付失败 63 | * 6001 用户中途取消 64 | * 6002 网络连接出错 65 | */ 66 | var errorCallback = function(msg) { 67 | console.log("errorCallback"); 68 | alert("error--->" + msg); 69 | }; 70 | cordova.plugins.AlipayPlugin.alipay(out_trade_no, subject, body, price, successCallback, errorCallback, callbackUrl); 71 | } 72 | 73 | 74 | function getOutTradeNo() { 75 | return "082215222612710"; 76 | } -------------------------------------------------------------------------------- /支付宝插件使用.txt: -------------------------------------------------------------------------------- 1 | 2 | 添加插件 cordova plugin add 插件目录路径 3 | 4 | 5 | 配置ios端: 6 | 7 | 1.启动IDE(如Xcode),plugin下 libs的库,并导入到项目工程中。 8 | AlipaySDK.bundle 9 | AlipaySDK.framework 10 | libcrypto.a 11 | libssl.a 12 | 13 | 2.将alipayUtil 文件夹放到plugin目录下,并在xcode中添加,记得选中group。即在xcode中显示为黄色文件夹 14 | 15 | 3.点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索, 16 | 对“Header Search Paths”增加头文件路径:$(SRCROOT)/项目名称,后面选择recursive 。 17 | 如果头文件信息已增加,可不必再增加。 (如果不添加,会报头文件找不到错误) 18 | 19 | 4.点击项目名称,点击“Build Phases”选项卡,在“Link Binary with Librarles”选项中,新增“AlipaySDK.framework”,“SystemConfiguration.framework”, security.framework 系统库文件。 20 | 如果项目中已有这几个库文件,可不必再增加。(如果不添加,会报link arm64 等错误) 21 | 22 | 5.配置url Scheme(点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“XXXXXX”。“XXXXXX”来自于文件Keys.h) (用于支付结束后的回调),需于代码中的Keys.h 中 urlSceheme一样 23 | 24 | 6.appdelegate中添加 25 | if ([url.host isEqualToString:@"safepay"]) { 26 | 27 | [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { 28 | NSLog(@"result = %@",resultDic); 29 | }]; 30 | } 31 | 32 | 7.修改程序中 33 | PARTNER(合作身份者id)、 34 | SELLER(收款支付宝账号)、 35 | RSA_PRIVATE(商户私钥)**如何生成商户私钥请自行查看支付宝官方文档。** 36 | 37 | 配置Android端: 38 | 39 | 添加插件 cordova plugin add 插件目录路径 40 | 修改Keys 中的PARTNER SELLER RSA_PRIVATE 41 | 42 | 43 | 最后: 44 | 调用方法请参看插件目录下www/index.js 中的testAlipay方法 45 | 46 | 47 | 如果想删除插件,Android端的只需要运行cordova命令就可以了,ios端的除了运行cordova命令,还需要按照安装时的步奏,手动删除库、文件以及代码 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | --------------------------------------------------------------------------------