macOS 26 系统如何在聚焦搜索中不显示 iPhone App

在 macOS 26 系统中,Apple 增强了「聚焦搜索」(Spotlight)的功能。如果你启用了 iPhone 镜像,系统会自动将 iPhone 上的应用程序同步到 Mac 的聚焦搜索结果中,方便直接在 Mac 上快速启动或查找。

如下图:

继续阅读macOS 26 系统如何在聚焦搜索中不显示 iPhone App

商用密码32款认证产品、功能及认证依据详细介绍

为贯彻落实《中华人民共和国密码法》,建立完善商用密码产品认证体系,市场监管总局、国家密码管理局根据《国家密码管理局  市场监管总局关于调整商用密码产品管理方式的公告》(第39号)分别于2020年、2022年及2025年连续发布三次商用密码产品目录,相关商用密码认证检测均依据此目录进行产品检测、认证。

以下是截止2025年3月27日,全量商用密码产品门类/目录,看看哪些是大家所了解和擅长的密码产品,具体如下:

第一批商用密码产品名录

市场监管总局 国家密码管理局于2020年5月11日发布《商用密码产品认证目录(第一批)》,具体如下:

1、智能密码钥匙  

  • 产品名称:智能密码钥匙  
  • 功能描述:实现密码运算、密钥管理功能的终端密码设备,一般使用 USB 接口形态。  
  • 认证依据:  

1)GM/T 0027《智能密码钥匙技术规范》  

2)GM/T 0028《密码模块安全技术要求》

2、智能 IC 卡

  • 产品名称:智能 IC 卡  
  • 功能描述:实现密码运算和密钥管理功能的含 CPU 的集成电路卡,包括应用于金融等行业领域的智能 IC 卡。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0041《智能 IC 卡密码检测规范》

3、POS/ATM/多功能/互联网终端密码应用系统  

  • 产品名称:POS 密码应用系统、ATM 密码应用系统、多功能密码应用系统、互联网终端  
  • 功能描述:为金融终端设备提供密码服务的密码应用系统。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)JR/T 0025-2018《中国金融集成电路 (IC) 卡规范 第 7 部分:借记贷记应用安全规范》

4、PCI-E/PCI 密码卡  

  • 产品名称:PCI-E/PCI 密码卡  
  • 功能描述:具有密码运算功能和自身安全保护功能的 PCI 硬件板卡设备。  
  • 认证依据:  

1)GM/T 0018《密码设备应用接口规范》  

2)GM/T 0028《密码模块安全技术要求》  

3)《PCI 密码卡技术规范》

5、IPSec VPN 产品 / 安全网关  

  • 产品名称:IPSec VPN 产品 / IPSec VPN 安全网关  
  • 功能描述:基于 IPSec 协议,在通信网络中构建安全通道的设备。  
  • 认证依据:  

1)GM/T 0022《IPSec VPN 技术规范》

2)GM/T 0023《IPSec VPN 网关产品规范》

3)GM/T 0028《密码模块安全技术要求》  

6、SSL VPN 产品 / 安全网关  

  • 产品名称:SSL VPN 产品 / SSL VPN 安全网关  
  • 功能描述:基于 SSL/TLS 协议,在通信网络中构建安全通道的设备。  
  • 认证依据:    

  1)GM/T 0024《SSL VPN 技术规范》  

2)GM/T 0025《SSL VPN 网关产品规范》

3)GM/T 0028《密码模块安全技术要求》  

7. 安全认证网关  

  • 产品名称:安全认证网关  
  • 功能描述:采用数字证书为应用系统提供用户管理、身份鉴别、单点登录、传输加密、访问控制和安全审计服务的设备。  
  • 认证依据:  

1)GM/T 0026《安全认证网关产品规范》  

2)GM/T 0028《密码模块安全技术要求》

8、密码键盘  

  • 产品名称:密码键盘  
  • 功能描述:用于保护 PIN 输入安全并对 PIN 进行加密的独立式密码模块。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0049《密码键盘密码检测规范》

9、金融数据密码机  

  • 产品名称:金融数据密码机  
  • 功能描述:用于确保金融数据安全,实现 PIN 加密、MAC 产生与校验、签名验证等密码服务功能的设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0045《金融数据密码机技术规范》

10、服务器密码机  

  • 产品名称:服务器密码机  
  • 功能描述:能独立或并行为多个应用实体提供密码运算、密钥管理等功能的设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0030《服务器密码机技术规范》

11、签名验签服务器  

  • 产品名称:签名验签服务器  
  • 功能描述:为应用实体提供基于 PKI 体系的数字签名、验证签名等运算功能的服务器。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0029《签名验签服务器技术规范》

12、时间戳服务器  

  • 产品名称:时间戳服务器  
  • 功能描述:基于公钥密码基础设施应用技术体系框架内的时间戳服务相关设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0033《时间戳接口规范》

13、安全门禁系统  

  • 产品名称:安全门禁系统  
  • 功能描述:采用密码技术,确定用户身份和用户权限的门禁控制系统。  
  • 认证依:  

GM/T 0036《采用非接触卡的门禁系统密码应用技术指南》

14、动态令牌 / 动态令牌认证系统  

  • 产品名称:动态令牌 / 动态令牌认证系统  
  • 功能描述:生成并验证动态口令的载体与系统。  
  • 认证依据:  

1)GM/T 0021《动态口令密码应用技术规范》  

2)GM/T 0028《密码模块安全技术要求》(仅适用于动态令牌)

15、安全电子签章系统  

  • 产品名称:安全电子签章系统  
  • 功能描述:提供电子印章管理、电子签章/验章等功能的密码应用系统。  
  • 认证依据:  

1)GM/T 0031《安全电子签章密码技术规范》  

2)GM/T 0055《电子文件密码应用技术规范》

16、电子文件密码应用系统  

  • 产品名称:电子文件密码应用系统  
  • 功能描述:在电子文件全生命周期中提供密码运算、密钥管理等功能的应用系统。  
  • 认证依据:  

GM/T 0055《电子文件密码应用技术规范》

17、可信计算密码支撑平台  

  • 产品名称:可信计算密码支撑平台  
  • 功能描述:为可信计算平台提供完整性、身份可信性和数据安全性密码支持。  
  • 认证依据:  

1)GM/T 0011《可信计算密码支撑平台功能与接口规范》  

2)GM/T 0012《可信计算可信密码模块接口规范》  

3)GM/T 0028《密码模块安全技术要求》  

4)GM/T 0058《可信计算 TCM 服务模块接口规范》

18、证书认证系统 / 证书认证密钥管理系统  

  • 产品名称:证书认证系统 / 证书认证密钥管理系统  
  • 功能描述:用于数字证书全生命周期管理与密钥对全过程管理的系统。  
  • 认证依据:  

GM/T 0034《基于 SM2 密码算法的证书认证系统密码及其相关安全技术规范》

19、对称密钥管理产品  

  • 产品名称:对称密钥管理产品  
  • 功能描述:为密码应用系统生产、分发和管理对称密钥的系统及设备。  
  • 认证依据:  

GM/T 0051《密码设备管理 对称密钥管理技术规范》

20、安全芯片

  • 产品名称:安全芯片  
  • 功能描述:含密码算法、安全功能,可实现密钥管理机制的集成电路芯片。  
  • 认证依据:  

GM/T 0008《安全芯片密码检测准则》

21、电子标签芯片

  • 产品名称:电子标签芯片  
  • 功能描述:采用密码技术,用于射频识别的电子识别信息芯片。  
  • 认证依据:  

GM/T 0035.2《射频识别系统密码应用技术要求 第 2 部分:电子标签芯片密码应用技术要求》

22、其他密码模块

  • 产品名称:其他密码模块  
  • 功能描述:实现密码运算、密钥管理等功能的软件、硬件、固件及其组合。  
  • 认证依据:  

GM/T 0028《密码模块安全技术要求》

//第二批商用密码产品名录

市场监管总局 国家密码管理局于2022年7月14日发布《商用密码产品认证目录(第二批)》,具体如下:

23、可信密码模块  

  • 产品名称:可信密码模块  
  • 功能描述:为可信计算平台提供密码运算功能,具有受保护存储空间的硬件模块。  
  • 认证依据:  

1)GM/T 0012《可信计算可信密码模块接口规范》  

2)GM/T 0028《密码模块安全技术要求》

24、智能 IC 卡密钥管理系统

  • 产品名称:智能 IC 卡密钥管理系统  
  • 功能描述:统一管理智能 IC 卡应用的密钥生命周期,为业务系统提供密钥服务。 
  • 认证依据:  

GM/T 0107《智能 IC 卡密钥管理系统基本技术要求》

25、云服务器密码机

  • 产品名称:云服务器密码机  
  • 功能描述:通过虚拟化技术为多租户提供密码服务的云形态服务器密码机。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0104《云服务器密码机技术规范》

26、随机数发生器

  • 产品名称:随机数发生器(软件 / 硬件)  
  • 功能描述:生成随机二元序列的程序或器件。  
  • 认证依据:  

- 软件:  

  1)GM/T 0028《密码模块安全技术要求》 

  2)GM/T 0103《随机数发生器总体框架》 

  3)GM/T 0105《软件随机数发生器设计指南》  

- 硬件:

  1)GM/T 0028《密码模块安全技术要求》 

  2)GM/T 0078《密码随机数生成模块设计指南》  

  3)GM/T 0103《随机数发生器总体框架》

27、区块链密码模块

  • 产品:区块链密码模块  
  • 功能描述:提供用户安全、共识安全、账本保护、隐私保护、身份认证等密码功能。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0111《区块链密码应用技术要求》

28、安全浏览器密码模块

  • 产品名称:安全浏览器密码模块  
  • 功能描述:集成浏览器内核与密码协议逻辑,保障浏览器场景下的密码安全。  
  • 认证依据:  

1)GB/T 38636《信息安全技术 传输层密码协议(TLCP)》  

2)GM/T 0028《密码模块安全技术要求》  

3)GM/T 0086《基于 SM9 标识密码算法的密钥管理系统技术规范》  

4)GM/T 0087《浏览器密码应用接口规范》

//第三批商用密码产品名录

市场监管总局 国家密码管理局于2025年3月27日发布《商用密码产品认证目录(第三批)》,具体如下:

29、基于 SM9 标识密码算法的密钥管理系统  

  • 产品名称:基于 SM9 标识密码算法的密钥管理系统  
  • 功能描述:实现标识密钥注册、生成、管理、发布的信息系统。  
  • 认证依据:  

GM/T 0086《基于 SM9 标识密码算法的密钥管理系统技术规范》

30、PLC 控制器密码模块  

  • 产品名称:PLC 控制器密码模块  
  • 功能描述:为 PLC 控制器提供密钥存储、密码安全服务及与后台安全管理服务器交互功能的设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0119《PLC 控制系统及 PLC 控制器密码应用技术规范》

31、DTLCP 密码模块  

  • 产品名称:DTLCP 密码模块  
  • 功能描述:基于数据报传输层密码协议(DTLCP),构建安全通信通道的设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0128《数据报传输层密码协议规范》

32、SSH 客户端密码模块 / SSH 服务端密码模块  

  • 产品名称:SSH 客户端密码模块 / SSH 服务端密码模块  
  • 功能描述:基于 SSH 协议,提供安全远程登录和网络服务的设备。  
  • 认证依据:  

1)GM/T 0028《密码模块安全技术要求》  

2)GM/T 0129《SSH 密码协议规范》

参考链接


商用密码32款认证产品、功能及认证依据详细介绍

Flutter桌面端-应用启动后占满屏幕

前置条件

  • MacBook Pro M2 macOS Tahoe (26.0) / Windows 11 24H2
  • Flutter 3.35.3

功能需求

以目前的情况来看,Flutter 的桌面端软件其实跟移动端软件很像,因为 Flutter 桌面端目前默认只有一个窗口,而不是像原生的桌面端软件一样,经常会有很多个窗口。 比较不一样的是,移动端是直接全屏显示,桌面端的软件是以窗口的形式存在的。

而桌面端窗口大小可以设置,还可以由用户自由放大缩小。

所以一般桌面端软件都需要对窗口做一些配置,比如设置启动时的默认窗口大小以达到最佳的界面显示,设置最小的窗口大小来避免界面变形严重或者遮盖了重要界面等等。

我们希望应用启动后就占据整个屏幕,但是不是最大化,顶部状态栏,底部不要进行覆盖,类似 Chrome 浏览器的行为。

解决方法

可以使用 window_manager 插件来实现,但是发现达不到想要的效果。

后面发现 learnFlutter 还有一个开源库是 screen_retriever ,这个插件允许 Flutter 桌面 应用检索关于屏幕大小,显示,光标位置等信息。

试了下确实可以获取到屏幕的高度,可行的实现方式是使用 screen_retriever 获取到屏幕的高度之后再使用window_manager 设置窗口大小。

但是,上述的代码由于需要 Flutter 引擎初始化之后才能执行,因此会短暂先出现小窗口,然后窗口才会变大。整个过程中有明显的延迟,用户体验不好。

因此,还是需要从底层API层面进行窗口大小的调整,应用启动后,窗口大小立即调整完成,用户体验较好。

macOS 解决方案

方案一:

通过调用 NSWindowzoom 函数,实现窗口的放大。代码如下:

方案二:

通过调整 NSWindowvisibleFrame ,实现窗口的放大。代码如下:

方案三(推荐):

调整 MainFlutterWindow 的代码,直接设置窗口大小:

Windows 解决方案

Windows 系统下的解决方案比较简单,直接修改 ShowWindow 函数的参数,设置为 SW_MAXIMIZE 即可。代码如下:

Linux 解决方案

Linux 系统下的使用的是 GTK,因此可以通过在初始化窗口之前调用 gtk_window_maximize 函数即可(此函数支持窗口显示之前调用)。代码如下:

参考链接


Android页面内嵌入FlutterView

随着 Flutter 的流行,越来越多的开发者希望在现有的 Android 应用中引入 Flutter 的功能。本文将介绍如何在Android 应用中嵌入 Flutter View,并提供示例代码来帮助开发者快速上手。

1. 环境准备

在开始之前,请确保您已安装以下工具:

  • Android Studio
  • Flutter SDK

首先,您需要在您的 Android 应用中添加 Flutter 依赖。在 build.gradle 文件中添加 Flutter 相关的依赖:

2. 创建Flutter Module

接下来,您需要创建一个 Flutter 模块。在命令行中运行以下命令:

这将创建一个名为 flutter_moduleFlutter 模块。

3. 在Android中集成Flutter

3.1 修改Android原生代码

在您的 Android 项目中,首先需要设置 Flutter 引擎。在 ActicityonCreate 方法中,添加如下代码来初始化 Flutter

3.2 在XML布局中添加FlutterView

接下来,您可以在 XML 布局中添加 FlutterView。这里是一个示例布局:

3.3 Flutter View的显示

在设置好布局后,您需要在 Java 代码中加载 FlutterView 并显示它:

3.4 生命周期绑定

Android Acvitity 的生命周期中调用 appIsResumed()appIsInactiveappIsPausedappIsDetached以通知 Flutter 界面进入相应状态,否则页面会出现绘制异常。

参考链接


mbedtls tls 客户端应用详解

介绍 mbedtls 的 tls client 的使用方法,常见的功能参数配置和含义。 当前使用的 mbedtls 版本是: mbedtls-3.4.0。

功能参数配置

需要配置的功能选项

  • 设置 tls 协议版本: 配置 tls 1.2, tls 1.3, 还是二者都支持。
  • 认证方式设置:单向认证、双向认证、还是 psk。
  • 握手时的校验等级设置:不校验证书合法性,仅加密;校验,但如果失败也继续执行后面的握手流程;校验不通过则终止握手流程。
  • 服务器ca证书设置
  • 客户端证书和密钥设置
  • 预定义共享密钥设置

编译配置

使用 mbedtls_config.h 配置文件,tls 1.2 默认打开,不需要修改,但 tls 1.3 未开启,需要特别设置。

解决 mps_common.h 中的编译问题,替换 MBEDTLS_MPS_STORED_SIZE_MAX 和 MBEDTLS_MPS_SIZE_MAX 宏定义。

API 设计和实现

接口处理的事情,主要是连接参数配置、打开和关闭连接,接收和发送数据。

数据结构定义:

连接参数配置说明:

  • auth_mode:认证方式设置。

    一是通过证书认证,另一个是通过预定义密钥 PSK。

  • verify_mode:握手的校验等级。

    推荐配置为 QTF_TLS_VERIFY_MODE_REQUIRED。如果只是想加密而不校验,可以配置 QTF_TLS_VERIFY_MODE_NONE 或 QTF_TLS_VERIFY_MODE_OPTIONAL。

  • tls_version:tls 协议版本。

    推荐配置成 tls 1.2 或 tls 1.3,tls 1.2 以下的版本不安全,tls 1.3 版本 mbedtls 没有完整支持。

  • debug_level:日志等级。

    推荐设置 QTF_TLS_DEBUG_LEVEL_NONE 关闭日志输出。排查问题时可以将日志打开 QTF_TLS_DEBUG_LEVEL_VERBOSE(注意会打印密钥和收发数据的明文内容)。

  • max_frag_len: 数据分片大小设置。

    在客户端侧设置,用于协商数据分片大小,设置这个参数应该是出于对使用内存大小和带宽的考虑。

    设置太小,可能会出现服务器证书接收不完整导致握手失败问题,但最大值也不能设置超过接收缓冲区的大小。

  • hanshake_timeout_ms:握手超时时间。

  • ca_cert:服务器的 ca 证书。

    如果要求校验证书,则必须设置。客户端校验服务器是否合法,单向认证。

  • client_cert:客户端证书。

    要求双向认证的时候必须设置,用于服务器校验客户端是否合法。同时还要设置 client_key。

  • psk :预定义共享密钥。

    psk 不需要证书认证,减少握手数据交互流程,但需要指定 psk_id 身份标识和指定加密套件。

接口定义:

接口实现:

测试例子

测试代码,连接 https 测试服务器 httpbin.org,发送一个 get 请求,并接收服务器回复。

测试日志:

继续阅读mbedtls tls 客户端应用详解

Xcode 16 调整 Provisioning Profiles 目录导致证书查不到

cronet demo 使用的 ninja 打包,查找 Provisioning Profiles 路径是 ~/Library/MobileDevice/Provisioning Profiles,但 Xcode 16 把该路径改为了 ~/Library/Developer/Xcode/UserData/Provisioning Profiles,导致在编译 cronetdemo 时找不到证书。

解决办法是把 Xcode 16 的路径下的证书拷贝一份到老的路径 ~/Library/MobileDevice/Provisioning Profiles 即可。

参考链接


Xcode16 调整 Provisioning Profiles 目录导致证书查不到

Mac应用第三方渠道发布指南

1.申请证书

Mac 应用有多种证书,主要包含以下几种:

Apple证书类型
Apple证书类型

  • Apple Development: Xcode 11之后Apple全平台开发证书
  • Apple Distribution: Xcode 11之后Apple全平台发布
  • Mac Development:用来开发和Debug的证书
  • Mac App Distribution:用来给APP文件签名后上传到Mac App Store
  • Mac Installer Distribution:用来给PKG文件签名后上传到Mac App Store
  • Developer ID Installer:用于给PKG文件签名,在非Mac App Store场景使用
  • Developer ID Application:用于给APP文件签名,在非Mac App Store场景使用

继续阅读Mac应用第三方渠道发布指南

Flutter编写HTTPS服务器

从磁盘加载证书:

从内存加载证书:

参考链接