默认openwrt并没有sqlcipher的package包,网上介绍的都是单独编译很麻烦,这里给出openwrt环境下的快速编译方案,关于sqlcipher的介绍参考官方仓库地址
- 先创建openwrt/package/libs/sqlcipher目录,同时在.config新增CONFIG_PACKAGE_sqlcipher=y选项
- 再创建对应Makefile,内容如下
#
# Copyright (C) 2006-2020 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlcipher
PKG_VERSION:=4.4.3
PKG_RELEASE:=1
PKG_INSTALL:=1
PKG_SOURCE:=v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/sqlcipher/sqlcipher/archive/refs/tags
PKG_MD5SUM:=47a2a4c0fbbf4c46891b1678e893c4a3
include $(INCLUDE_DIR)/package.mk
define Package/sqlcipher
SUBMENU:=database
SECTION:=libs
CATEGORY:=Libraries
TITLE:=SQLCipher extends the SQLite database library
URL:=https://github.com/sqlcipher/sqlcipher
DEPENDS:=+libopenssl +libpthread +zlib
endef
EXTRA_CFLAGS+= \
-DSQLITE_HAS_CODEC -DPBKDF2_ITER=1000
EXTRA_LDFLAGS+= \
-lcrypto
CONFIGURE_ARGS += \
--enable-tempstore=yes \
CONFIGURE_ARGS+= \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
define Package/sqlcipher/description
SQLCipher extends the SQLite database library to add security enhancements
endef
define Build/Prepare
$(call Build/Prepare/Default)
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/sqlcipher $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlcipher.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/sqlcipher.pc $(1)/usr/lib/pkgconfig/
endef
define Package/sqlcipher/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlcipher.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlcipher.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,sqlcipher))
- 修改默认PBKDF2_ITER宏加速数据库打开速度,由于默认的246000次iterator,导致在arm linux平台首次打开速度非常慢,
和Makefile同一目录,创建patches目录,并在里面添加001-reduce-iterator-faster-con.patch文件,内容如下
Index: sqlcipher-4.4.3/src/crypto.h
===================================================================
--- sqlcipher-4.4.3.orig/src/crypto.h
+++ sqlcipher-4.4.3/src/crypto.h
@@ -72,6 +72,7 @@ void sqlite3pager_reset(Pager *pPager);
#define CIPHER_READ_CTX 0
#define CIPHER_WRITE_CTX 1
#define CIPHER_READWRITE_CTX 2
+#define PBKDF2_ITER 1000
#ifndef PBKDF2_ITER
#define PBKDF2_ITER 256000
- 之后可以单独编译sqlcipher包:
make package/libs/sqlcipher/compile V=s
本文介绍如何在OpenWrt环境中便捷地为SQLite添加安全模块SQLCipher,通过自定义Makefile和配置文件,降低首次打开速度并提供加密支持。
853

被折叠的 条评论
为什么被折叠?



