《GM-T 0087-2020 浏览器密码应用接口规范.pdf》由会员分享,可在线阅读,更多相关《GM-T 0087-2020 浏览器密码应用接口规范.pdf(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、书 书 书犐 犆犛 犆犆犛犔 中华人民共和国密码行业标准犌犕犜 浏览器密码应用接口规范犅 狉 狅狑 狊 犲 狉犮 狉 狔 狆 狋 狅 犵 狉 犪 狆 犺 狔犃犘 犐狊 狆 犲 犮 犻 犳 犻 犮 犪 狋 犻 狅 狀 发布 实施国家密码管理局发 布书 书 书目次前言范围规范性引用文件术语、定义和缩略语 术语和定义 缩略语概述数据结构 大整数 密钥对字典 字典 算法字典 密码接口 密钥算法 密钥接口 密码接口 接口定义 加密方法 解密方法 签名方法 验证签名方法 杂凑方法 生成密钥方法 派生密钥方法 派生比特方法 导入密钥方法 导出密钥方法 封装密钥方法 解封密钥方法 异常 算法流程 算法 加密算
2、法 签名算法 算法 算法 犌犕犜 前言本文件按照 标准化工作导则第部分:标准化文件的结构和起草规则的规定起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。本文件由密码行业标准化技术委员会提出并归口。本文件起草单位:北京海泰方圆科技股份有限公司、无锡江南信息安全工程技术中心、格尔软件股份有限公司、成都卫士通信息产业股份有限公司、吉大正元信息技术股份有限公司。本文件主要起草人:柳增寿、蒋红宇、徐明翼、郑强、罗俊、赵丽丽。犌犕犜 浏览器密码应用接口规范范围本文件定义了浏览器执行网页中的密码操作的 ,包括加密、解密、杂凑、签名、签名验证和随机数生成等操作。本文件定义的 适
3、用于浏览器中用户或服务的认证、文档或代码的签名、通信的机密性与完整性保证等。规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。(所有部分)信息安全技术椭圆曲线公钥密码算法 信息安全技术密码杂凑算法 信息安全技术分组密码算法术语、定义和缩略语 术语和定义下列术语和定义适用于本文件。字典一种使用键值对作为元素的集合。承诺一种 范式,承诺()代表一个任务结果。通过本范式可以实现浏览器脚本程序的异步功能。缩略语下列缩略语适用于本文件。接口描述语言()概述本
4、文件用于为网络应用中浏览器 脚本提供密码操作能力。网络应用可以让用户利用浏览器内置密码能力在浏览器端来保护其身份数据和隐私数据。直接使用 实现密码功能的方式会导致安全缺陷和性能问题。因此有必要在浏览器上原生实现密码功能,并向 程序提供犌犕犜 密码支撑。安全接口 提供了 的通用加密功能的接口。该接口定义一个 对象开放给浏览器,在 中可以全局访问。对象包含生成随机数的方法和一个 对象。对象实现了 接口。接口提供了对若干具体的密码计算的访问接口。用户 程序可以使用的密码资源的层次关系见图。图密码资源的层次关系数据结构 大整数:;大整数 定义为 类型,保存任意长度的无符号整数,高字节在前。从 读取的数
5、值应有最小的类型化数组的长度(即除了之外,至多个前导比特)。应接受任意数目的前导比特。密钥对字典:;密钥对字典表示一对非对称密钥对,该密钥对由私钥和公钥两部分组成。犑 狊 狅 狀犠犲 犫犓犲 狔字典:犌犕犜 ;字典提供了一种表示和交换表示为 网页密钥机构的密钥的方法,同时允许在浏览器密码 应用中进行本地的高效调用。算法字典犃 犾 犵 狅 狉 犻 狋 犺犿算法对象是一个网页 字典对象,它用于为特定操作来指定算法和附加参数。:();其中 为待用的已注册算法的名字。密码接口犆 狉 狔 狆 狋 狅:;犌犕犜 ;(,);();密码接口提供了通用密码功能的接口,其中包含了一个使用真随机值作为种子的密码学强
6、伪随机数生成器。其中,方法用于生成随机数。该方法应遵循:)若 不为整数类型(如 ,或 ),则抛出 异常并结束计算。)若数组的 大于 ,则抛出 异常并结束算法。)用适当类型的密码学随机数对数组的所有元素覆盖。)返回 。属性提供了 接口的一个实例,该接口提供了底层的密码功能和算法。密钥算法犓犲 狔犃 犾 犵 狅 狉 犻 狋 犺犿 字典表示与一个给定的 对象的内容相关信息。:;字典用于将 的固定公开属性进行归档。实际字典的类型并不向应用进行开放。其中,字段成员 为用于生成 对象的算法的名字。密钥接口犆 狉 狔 狆 狋 狅犓犲 狔:,;,;(,);其中,犌犕犜 为密钥的类型。可识别的密钥类型值为“”“
7、”和“”。非透明密钥包括对称算法密钥用“”表示,非对称算法密钥由公和私钥组成,分别由“”或“”表示。为密钥的操作类型。可识别的密钥用法包括“”“”“”“”“”“”“”和“”。每个 对象有一个内部组成集合,用于存储密钥相关的信息。这些组成部分不作为标准的一部分而暴露。他们表示具体实现本规范时的内部状态。内部组成通过双方括号 内的名字进行表述。对象内部包括 ,和 。内部组成应为、或者继承自 。内部组成的内容应为 类型。反映了 内部组成,它包含了依赖密钥的类型。反映了 内部组成,它指明了密钥是否可以导出至应用。返回与 内部组成相关的缓冲脚本对象。返回与 内部组成相关的缓冲脚本对象,指明该密钥允许哪些
8、密码操作。密码接口 接口定义:“”,“”,“”,“”;(,)犛狌 犫 狋 犾 犲 犆 狉 狔狆 狋 狅 (,);(,);(,);(,);(,);(,);(,);(,);(,(),);(,);(,);(,);犌犕犜 ;其中,指定密钥串行化的格式。可识别的密钥格式取值为:“”非格式化字节序列。用于秘密密钥。“”符合 格式的私钥信息格式的编码。“”密钥作为 对象并为 对象。加密方法 加密方法返回一个新的承诺对象,该对象使用指定的 和所提供的 来加密数据。它应执行如下步骤:)将算法和密钥分别作为 和 参数传递至加密方法;)将数据作为 参数的克隆数据结果传递至加密算法;)将 作为正规化算法的结果,将 设
9、置为 ,将 设置为“”;)若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)若 的 成员不同于密钥的 内部组织的 属性,抛出 ;)若密钥的 内部组织不包含“”条目,抛出 ;)将 设置为加密操作的结果,该操作过程指定了 加密操作、密钥和明文;)用 作为 对象返回。解密方法 解密方法返回一个新的承诺对象,该对象使用 和提供的 对密文进行解密。它应执行下列步骤:)将算法和密钥分别作为 和 参数传递至解密方法;)将数据作为 参数的克隆数据结果传递至解密算法;)将 作为正规化算法的结果,将 设置为 ,将 设置为“
10、”;)若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)若 的 成员不同于密钥的 内部组织的 属性,抛出 ;)若密钥的 内部组织不包含“”条目,抛出 ;)将 设置为解密操作的结果,该操作过程指定了特定密钥、算法和密文下的 解密操作;)用 作为 对象返回。犌犕犜 签名方法 签名方法返回一个新的承诺对象,该对象使用 和提供的 对数据进行签名。它应遵循下列步骤:)将算法和密钥分别作为 和 参数传递至签名方法;)将数据作为 参数的克隆数据结果传递至签名算法;)将 作为正规化算法的结果,将 设置为 ,将 设置为“
11、”;)若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)若 的 成员不同于密钥的 内部组织的 属性,抛出 ;)若密钥的 内部组织不包含“”条目,抛出 ;)将 设置为解密操作的结果,该操作过程指定了特定密钥、算法和消息数据下的 签名操作;)将 对象返回。验证签名方法 验证签名方法返回一个新的承诺对象,该对象使用 和提供的 对数据进行验签。它应遵循下列步骤:)将算法和密钥分别作为 和 参数传递至验签方法;)将签名数据作为签名参数的 克隆数据结果传递至验签算法;)将 作为正规化算法的结果,将 设置为 ,将 设
12、置为“”;)若出错,返回带有 的承诺拒绝;)将数据作为数据参数的数据克隆结果传递至验签方法;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)若 的 成员不同于密钥的 内部组织的 属性,抛出 ;)若密钥的 内部组织不包含“”条目,抛出 ;)将 设置为验签操作的结果,该操作过程指定了特定密钥、算法、签名和消息数据下的 验签操作;)将 作为 对象返回。杂凑方法 散列方法返回一个新的承诺对象,该对象使用 对数据进行散列操作。它应遵循下列步骤:)将算法参数传递至散列方法;)将数据作为数据参数的 克隆数据结果传递至散列方法;)将 作为正规化算
13、法的结果,将 设置为 ,将 设置为“”;犌犕犜 )若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)将 设置为散列操作的结果,该操作过程指定了算法和消息数据下的 验签操作;)将 作为 对象返回。生成密钥方法调用 方法时,应执行如下步骤:)将算法、可提取性和用法分别作为 、和 参数传递至生成密钥方法;)将 作为正规化算法的结果,将 设置为 ,将 设置为“”;)若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;)将 设
14、置为生成密钥操作的结果,该操作过程指定了算法和可提取性和用法下的 验签操作;)若结果为 对象;)且结果的 内部组成为“”或“”、同时用法 为空,则抛出 ;)若结果为 对象;)且结果的私钥属性的 内部组成为空序列,则抛出 ;)将 作为 对象返回。派生密钥方法调用 派生密钥方法时,应完成如下步骤:)将 ,和 分别作为 ,和 参数传递至 方法;)将 置为正规化算法的结果,同时 置为 ,置为“”;)若出错,返回带有 的承诺拒绝;)将 作为正规化算法的结果,将 设置为 ,将 设置为“”;)若出错,返回带有 的承诺拒绝;)设置 为新的 ;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或
15、者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法承诺,则结束算法;)若 的 成员不同于支持派生操作的注册算法,抛出 ;)若 的 成员不同于支持取得密钥长度操作的一个注册算法,抛出 ;犌犕犜 )若 的 成员不同于 的 内部组成的 属性,抛出 ;)若 的 内部组成不包含“”条目,抛出 ;)将 设置为调用取得密钥长度操作的结果,该操作使用 作为参数调用 ;)将 设置为执行派生比特操作的结果,该操作在 ,和 参数下调用 ;)将 置为执行导入密钥操作的结果。该操作使用“”为 ,为 ,调用 ;)若 的 内部组成是“”或者“”,同时 为空,则抛出 ;)将 作为 对象返回。派生比特方法调
16、用 派生比特方法时,应完成如下步骤:)将 ,和 分别设置为传递至 方法的 ,和 参数;)将 设置为正规化算法的结果,调用时 设置为 ,设置为“”;)若出错,返回带有 的承诺拒绝;)将 设置为新的 对象;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法承诺,则结束算法;)若 的 成员不同于 的 的 属性,抛出 ;)若 的 内部组成不包含“”条目,抛出 ;)将 置为新的 ,其中包含了执行派生比特操作的结果,其中的 使用了 ,和 参数;)将 作为 对象返回。导入密钥方法调用 导入密钥方法时,应执行下列步骤:)将
17、 ,和 分别设置为传递至 方法的 ,和 参数;)将 置为正规化算法的结果,其中 设置为 且 设置为“”;)若出错,返回带有 的承诺拒绝;)将 设置为新的 对象;)返回 并异步完成余下的步骤;)若 等于字符串“”,“”,或者“”:)若传递至 方法的 参数是一个 字典,抛出 ;)将 置为传递至 方法的 参数克隆数据的结果。若 等于字符串“”:犌犕犜 )若传递至 方法的 参数不是一个 字典,抛出 ;)将 置为传递至 方法的 参数。)若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法承诺,则结束算法;)将 置为 对象,该对象是使用 ,和 指定 导
18、入密钥操作的结果;)若 的 内部组成是“”或“”同时 为空,则抛出 ;)设置 的 内部组成为 ;)设置 的 内部组成为 的正规值;)将 作为 对象返回。导出密钥方法调用 导出密钥方法时,应执行下列步骤:)将 和 分别设置为传递至 方法的 和 参数;)将 设置为新的 对象;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法;)若 的 内部组成的 成员不同于支持导出密钥操作的注册算法,则抛出 ;)若 的 内部组成为否,则抛出 ;)设置 为导出密钥操作的结果。该操作由 的 内部组成通过使用密钥值和格式来指定;)将
19、 作为 对象返回。封装密钥方法调用 封装密钥方法时,应执行下列步骤:)将 ,和 分别设置为传递至 方法的 ,和 的参数;)将 设置为正规化算法的结果,将 设置为 同时将 设置为“”;)若出错,将 设置为正规化算法的结果,将 设置为 同时将 设置为“”;)若出错,返回带有 的承诺拒绝;)将 设置为新的 对象;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法;)若 的 成员不同于支持加密和封装操作的已注册算法,抛出 ;)若 的 成员不同于 的 内部组成的 属性,抛出 ;)若 的 内部组成不包含“”条目,抛出
20、;)若 的 内部组成所确定的 不支持导出密钥的操作,抛出 犌犕犜 ;)若 的 的内部组成为否,抛出 ;)将 设置为导出密钥操作的的结果,该操作由 和 指定的 内部组成来确定;若 不同于字符串“”“”或者“”:设置 为 值。若 等于字符串“”:)将 转换为 对象。)将 设置为符合 语法的表达密钥的 字符串。)将 设置为转换 得到的字节序列,为一个 字符串。)若 支持封装密钥操作:设置 为封装密钥操作的结果,该操作由 ,密钥和 明文等数据项所指定的 的确定。否则,若 支持加密操作:将 设置为加密操作的结果,该操作由 ,密钥和 明文等数据项指定的 来确定。否则:抛出 。)将 作为 对象返回。解封密钥
21、方法调用 封装密钥方法时,应执行下列步骤:)将 ,和 分别设置为传递至解封密钥方法的 ,和 的参数;)将 设置为传递至 方法数据参数的数据克隆结果;)将 设置为正规化算法的结果,其中 设置为 同时 设置为“”;)若出错,将 设置为正规化算法的结果,其中 设置为 同时 设置为“”;)若出错,返回带有 的承诺拒绝;)将 设置为正规化算法的结果,其中 设置为 同时将 设置为“”;)若出错,返回带有 的承诺拒绝;)将 设置为新的 对象;)返回 并异步完成余下的步骤;)若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法;)若 的 成员不同于 的 内
22、部组成的 属性,则抛出 ;)若 的 内部组成不包含“”条目,则抛出 ;)若 支持解封密钥操作:犌犕犜 将 设置为执行解封密钥操作的结果,该过程由 ,密钥和 密文指定的 来确定。否则,若 支持解密操作:将 设置为解密操作的结果,该操作使用 ,密钥和 密文指定的 来确定。否则:抛出 。)若 为字符串“”“”或者“”:设置 为 值。若 为字符串“”:将 设置为 算法执行的结果,其中 作为 进行解析。)将 设置为执行导入密钥操作的结果,该操作使用 算法,和 ,并使用 作为密钥数据对 进行指定;)若 的 内部组成为“”或者“”并且 为空,抛出 ;)设置 的 内部组成为 ;)设置 的 内部组成为 的正规化
23、值;)将 作为 对象返回。异常 接口的方法可以返回错误,抛出预定义的异常而拒绝返回承诺。预定义的异常如表所示。表预定义的异常类型消息 算法不支持 缺失所需参数或参数超出范围 密钥当前状态下不支持请求的操作 提供的密钥不支持请求的操作 未知原因导致的操作失败(例如内存溢出)提供给操作的数据不符合要求 操作失败算法流程 犛犕算法可识别算法名称为“”,对应接口为杂凑功能 。算法在 中定义和规范。)如果 的 成员与”字符大小写不敏感匹配的话,令 作为输入消息 的哈希算法()的结果。)如果在操作过程中出现了错误,则抛出 异常。)返回一个包含 的新的 。犌犕犜 犛犕加密算法 描述可识别算法名称为“”,对应
24、接口包括 ,。生成密钥生成密钥内容如下。)如果 包含了不是“”或“”的条目,抛出 异常。)生成椭圆曲线密钥对。)如果在操作过程中出现了错误,抛出 异常。)令 为新的 对象。)设置 的 属性为“”。)设置 的内部接口 为 。)令 是与全局对象 相关的新的 ,表示了生成密钥对的公钥。)设置 的内部接口 为“”。)设置 的内部接口 为 。)设置 的内部接口 为 。)设置 的内部接口 为空列表。)令 是与全局对象 相关的新的 ,表示了生成密钥对的私钥。)设置 的内部接口 为“”。)设置 的内部接口 为 。)设置 的内部接口 为 。)设置 的内部接口 为 与“”的交集。)令 为新的 字典。)设置 的 属
25、性为 。)设置 的 属性为 。)根据 中的定义,将 转换成 对象。派生密钥派生密钥内容如下。)如果 的内部接口 不是“”,抛出 异常。)令 为 的 成员。)如果 的内部接口 不是“”,抛出 异常。)如果 的内部接口 的 属性不等于 的内部接口 的 属性,抛出 异常。)将 为做私钥,的内部接口 作为公钥,执行密钥派生操作。)令 为密钥派生输出的结果。)如果操作过程中出现了错误,抛出 异常。)返回 。导入密钥导入密钥内容如下。犌犕犜 )令 为要导入的密钥数据。)如果 为“”:如果 不为空,抛出 异常。令 是对 运行解析 算法的结果。如果解析阶段发生了错误,抛出 异常。如果 的算法标识符域 的 对象
26、标识符不是“”,抛出 异常。如果 的算法标识符域 的 域不存在,抛出 异常。令 为使用 的 域执行转换步骤时确定的椭圆曲线的公钥。(非压缩的点格式必须要支持)。如果实现不能支持压缩点格式,同时提供了压缩点,抛出 异常。如果解析错误发生或者发现了单位点,抛出 异常。令 为与全局对象 相关的新的 ,表示 。如果公钥的值不是所规定的椭圆曲线上的合法的点,抛出 异常。设置 的内部接口 为“”。令 为一个新的 。设置 的 属性为“”。设置 为 的内部接口 。)如果 是“”:如果 包含了不是“”或“”的条目,抛出 异常。令 是对 运行解析 算法的结果。如果解析阶段发生了错误,抛出 异常。如果 的私钥算法域
27、 的 对象标识符不是“”,抛出 异常。如果 的私钥算法标识符域 的 域不存在,抛出 异常。令 为执行解析 结构体算法的结果,其中 为 的 域,为 结构。如果解析过程中发生了错误,抛出 异常。令 为与全局对象 相关的新的 ,表示了使用 的转换步骤中确定的椭圆曲线的私钥。如果私钥的值不是所规定的椭圆曲线上的合法的点,抛出 异常。设置 的内部接口 为“”。令 为一个新的 。设置 的 属性为“”。设置 为 的内部接口 。)如果 是“”:如果 是一个 字典,令 是 ,否则抛出 异常。如果 的“”域存在,并且 包含了不是“”或“”的条目,抛出 异常。如果 的域不存在,并且 不为空,抛出 异常。如果 的“”
28、域不是“”,抛出 异常。如果 不为空,并且 的“”域存在,不能字符大小写不敏感匹配于“”,抛出 异常。犌犕犜 如果 的“”域存在,并且不符合 的要求或者不包含规定的所有的 值,抛出 异常。如果 的“”域存在,并且值为 ,为 ,抛出 异常。如果 的“”域存在:如果 不满足 算法的 的需求,抛出 异常。令 表示根据 算法解析 所识别出的私钥。如果 不是合法的私钥,抛出 异常。令 是一个表示 的新的 对象。设置 的内部接口 为“”。否则:如果 不满足 算法的 的需求,抛出 异常。令 表示根据 算法解析 所识别出的公钥。如果 不是合法的公钥,抛出 异常。令 是一个表示 的新的 对象。设置 的内部接口
29、为“”。如果密钥值不是所规定的椭圆曲线上的合法的点,抛出 异常。令 为一个新的 字典。设置 的 属性为“”。设置 的内部接口 为 。)如果 是“”:如果 不为空,抛出 异常。令为在 上执行的转换步骤中确定的椭圆曲线点。(非压缩点格式必须要支持)。如果实现没有支持压缩点格式,但提供了压缩点,抛出 异常。如果解码错误或者发现了单位点,抛出 错误。令 是与全局对象 相关的新的 ,表示了。令 为 对象。设置 的 属性为“”。设置 的内部接口 为“”。设置 的内部接口 为 。)如果 是其他值,抛出 异常。)返回 。导出密钥导出密钥内容如下。)令 是要导出的 。)如果 的内部接口 表示的底层密钥资料不能访
30、问,抛出 异常。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 是 结构体 的一个实例。具有下列属性。设置 域为 类型 。设置 的 域为 类型 ,令其 是表示 的内部接口 的所代表的椭圆曲线公钥的字符串,使用了非压缩形式。设置 域为 。犌犕犜 令 是与全局对象 相关的新的 ,其中包含了 。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 是 类型 的实例,具有下列属性:设置 域为。设置 域为 类型 。设置 域为 类型 。令其 为表示 的内部接口 的所代表的椭圆曲线公钥的字符串的 结构体的编码的实例,并满足下列要求:)域存在,并且与该 类型 的 域的 域等价;)域存在,并且
31、与 的内部接口 代表的椭圆曲线私钥相关的椭圆曲线公钥等价。设置 域为 。令 是与全局对象 相关的新的 ,其中包含了 。)如果 是“”:令 是一个新的 字典设置 的 属性为字符串“”。根据 算法的 中的相应定义设置 的和属性。如果 的内部接口 为“”:根据 算法的 中的相应定义设置 的的属性。设置 的 属性为 的 属性。设置 的 属性为 的内部接口 。令 为根据 定义的将 转换成 对象的结果。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 为 的内部接口 代表的椭圆曲线点所表示的字符串,用了非压缩格式。令 为与全局对象 相关的新的 ,其中包含了 。)如果 是其他值,抛出 异常。)返回
32、 。犛犕签名算法 描述可识别算法名称是“”。支持的功能包括 ,。签名签名内容如下。)如果 中的内部接口 不是“”,抛出 异常。)令是使用算法对 进行摘要操作的结果。)令是与 相关的私钥。)令 是与 相关的域的参数。)执行的签名过程,为消息,为私钥。)令和为签名过程中生成的整数对。)令 为与全局对象 相关的新的 。犌犕犜 )令为使得比椭圆曲线的基点的序的以位底的对数大的最小的整数。)将转换成长度为的字节字符串,并附加到 后面。)将转换成长度为的字节字符串,并附加到 后面。)返回一个与全局对象 相关的新的 ,其中包含了 的字节数组。验签验签内容如下。)如果 中的内部接口 不是“”,抛出 异常。)令
33、是使用算法对 进行摘要操作的结果。)令为与 相关的公钥。)令 是与 相关的域的参数。)执行的验签过程,为收到的消息,为收到的签名,为公钥。)当签名为合法时,是布尔值 ,否则是 。)返回 。生成密钥生成密钥内容如下。)如果 包含了不是“”或“”的条目时,抛出 异常。)根据 的定义,生成的一个密钥对。)如果生成密钥对失败,则抛出 异常。)令 为一个新的 字典。)将 的 属性设置为“”。)令 是一个与全局对象 相关的新的 对象,表示了生成密钥对的公钥。)将 的内部接口 设置为“”。)将 的内部接口 设置为 。)将 的内部接口 设置为 。)将 的内部接口 设置为 和“”的交集。)令 是一个与全局对象
34、相关的新的 对象,表示了生成密钥对的私钥。)将 的内部接口 设置为“”。)将 的内部接口 设置为 。)将 的内部接口 设置为 。)将 的内部接口 设置为 和“”的交集。)令 为一个新的 字典。)将 的 属性设置为 。)将 的 属性设置为 。)将 转换成 的定义的 对象,返回 。导入密钥导入密钥内容如下。)令 是要导入的密钥数据。)如果 是“”:如果 包含了不是“”的条目,抛出 异常。犌犕犜 令 是运行解析 算法的结果。如果解析阶段发生了错误,抛出 异常。如果 的算法标识符域 的 对象标识符不是“”,抛出 异常。令 为使用 的 域执行转换步骤时确定的椭圆曲线的公钥。(非压缩的点格式必须要支持)。
35、如果实现不能支持压缩点格式,同时提供了压缩点,抛出 异常。如果解析错误发生或者发现了单位点,抛出 异常。令 为与全局对象 相关的新的 ,表示 。如果公钥的值不是所规定的椭圆曲线上的合法的点,抛出 异常。设置 的内部接口 为“”。令 为一个新的 。设置 的 属性为“”。设置 为 的内部接口 。)如果 是“”:如果 包含了不是“”的条目,抛出 异常。令 是对 运行解析 算法的结果。如果解析阶段发生了错误,抛出 异常。如果 的私钥算法域 的 对象标识符不是“”,抛出 异常。令说 为执行解析 结构体算法的结果,其中 为 的 域,为 结构,为 。如果解析过程中发生了错误,抛出 异常。令 为与全局对象 相
36、关的新的 ,表示了使用 的转换步骤中确定的椭圆曲线的私钥。如果私钥的值不是所规定的椭圆曲线上的合法的点,抛出 异常。设置 的内部接口 为“”。令 为一个新的 。设置 的 属性为“”。设置 为 的内部接口 。)如果 是“”:如果 是一个 字典,令 是 ,否则抛出 异常。如果 的“”域存在,并且 包含了不是“”的条目,或者,如果 的域不存在,并且 包含了额不是“”的条目,抛出 异常。如果 的“”域不能字符大小写不敏感匹配于“”,抛出 异常。如果 不为空,并且 的“”域存在,不能字符大小写不敏感匹配于“”,抛出 异常。如果 的“”域存在,并且不符合 的要求或者不包含规定的所有的 值,抛出 异常。如果
37、 的“”域存在,并且值为 ,为 ,抛出 异常。如果 的“”域存在:如果 不满足 算法的 节的需求,抛出 异常。令 表示根据 算法解析 所识别出的私钥。如果 不是合法的私钥,抛出 异常。犌犕犜 令 是一个表示 的新的 对象。设置 的内部接口 为“”。否则:如果 不满足 算法的 节的需求,抛出 异常。令 表示根据 算法解析 所识别出的公钥。如果 不是合法的公钥,抛出 异常。令 是一个表示 的新的 对象。设置 的内部接口 为“”。如果密钥值不是所规定的椭圆曲线上的合法的点,抛出 异常。令 为一个新的 字典。设置 的 属性为“”。设置 的内部接口 为 。)如果 是“”:如果 包含了不是“”的条目,抛出
38、 异常。令为在 上执行的转换步骤中确定的椭圆曲线点。(非压缩点格式必须要支持)。如果实现没有支持压缩点格式,但提供了压缩点,抛出 异常。解码错误或者发现了单位点,抛出 错误。令 是与全局对象 相关的新的 ,表示了。令 为 对象。设置 的 属性为“”。设置 的内部接口 为“”。设置 的内部接口 为 。)如果 是其他值,抛出 异常。)返回 。导出密钥导出密钥内容如下。)令 是要导出的 。)如果 的内部接口 表示的底层密钥资料不能访问,抛出 异常。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 是 结构体 的一个实例。设置 的 域为 类型 。设置 的 域为 类型 ,令其 是表示 的内部接
39、口 的所代表的椭圆曲线公钥的八字节字符串,使用了非压缩形式。令 是与全局对象 相关的新的 ,其中包含了 。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 是 类型 的实例,具有下列属性:设置 域为。设置 域为 类型 。设置 域为 类型 。令其 为表示 的内部接口 的所代表的椭圆曲线公钥的八字节字符串的 结构体 犌犕犜 的编码的实例,并满足下列要求:)域存在,并且与该 类型 的 域的 域等价;)域存在,并且与 的内部接口 代表的椭圆曲线私钥相关的椭圆曲线公钥等价。设置 域为 。令 是与全局对象 相关的新的 ,其中包含了 。)如果 是“”:令 是一个新的 字典。设置 的 属性为字符串“
40、”。根据 算法的 中的相应定义设置 的和属性。如果 的内部接口 为“”:根据 算法的 中的相应定义设置 的的属性。设置 的 属性为 的 属性。设置 的 属性为 的内部接口 。令 为根据 定义的将 转换成 对象的结果。)如果 是“”:如果 的内部接口 不是“”,抛出 异常。令 为 的内部接口 代表的椭圆曲线点所表示的八字节字符串,用了非压缩格式。令 为与全局对象 相关的新的 ,其中包含了 。)如果 是其他值,抛出 异常。)返回 。犛犕算法 描述“”算法标识符用来使用 规范的以模式进行加密和解密操作,当在模式执行时,不是块大小(字节)的整数倍的消息可以进行填充,在密码应用接口中,填充方式仅支持。该
41、算法的算法标识名称为“”。支持的操作为 ,。加密加密内容如下。)如果 的 成员不是 字节长,抛出 异常。)令 是添加了填充字节的 内容的结果。)令 是使用作为块密码算法执行了加密操作后的结果,的 成员的内容作为 参数,作为输入明文。)返回与全局对象 相关的新的 ,包含了 。解密解密内容如下。)如果 的 成员不是 字节长,抛出 异常。)令 是使用算法执行了解密操作的结果,的 成员的内容是输入参数,的内容为输入密文。)令为 的最后的字节。犌犕犜 )如果是或者大于,或者如果 的最后个字节任何一个值不是,抛出 异常。)令 是从 的末端删除个字节的结果。)返回与全局对象 相关的新的 ,包含了 。生成密钥
42、生成密钥内容如下。)如果 包含了不是“”“”“”或者“”的条目,抛出 。)如果 的 成员不等于 ,抛出 。)生成 位长的密钥。)如果密钥生成步骤失败,抛出 异常。)令 是新的代表生成的密钥的 对象。)令 是新的 。)设置 的 属性为“”。)设置 的 属性为 。)设置 的内部接口 为 。)设置 的内部接口 为 。)设置 的内部接口 为 。)返回 。导入密钥导入密钥内容如下。)如果 里面包含了不是“”“”“”或“”的条目,抛出 异常。)如果 是“”:令 是包含 的字符串。如果 的比特长度不是 ,抛出 异常。)如果 是“”:如果 是 字典,令 为 。否则抛出 异常。如果 的“”域不是“”,抛出 异常
43、。如果 不满足 算法的 的需求,抛出 异常。令 为 的“”域的解码后的结果的字符串。如果 的“”域存在,并且不是“”,抛出 异常。如果 不为空,并且 的“”域存在且不是“”,抛出 异常。如果 的“”域存在,并且根据 的需求不合法,或者不包含所有特定的 值,抛出 异常。如果 的“”域存在,值为 ,并且 为 ,抛出 异常。)如果 为其他值,抛出 异常。)令 为代表值为 的表示密钥的新的 对象。)令 为新的 。)设置 的 属性为“”。)设置 的 属性为 。犌犕犜 )设置 的内部接口 为 。)返回 。导出密钥导出密钥内容如下。)如果 的内部接口 所代表的底层密钥资料不可以访问,抛出 异常。)如果 是“
44、”:令 为 的内部接口 所代表的 的原始字节。令 为与全局对象 相关的新的 ,并包含 。)如果 是“”:如果 是 字典,令 为 。否则抛出 异常。设置 的 属性为“”。设置 的属性为包含 的内部接口 所代表的 的原始字节的字符串,根据 的 进行编码。设置 的 属性为“”。设置 的 属性为 的 属性设置 的 属性为 的内部接口 。令 为根据 定义的转换 为 对象的结果。)如果 为其他值,抛出 异常。)返回 。犛犕 犈犆犅算法 描述“”算法标识符用来使用 规范的以模式进行加密和解密操作,当在模式执行时,不是块大小(字节)的整数倍的消息可以进行填充,在密码应用接口中,填充方式仅支持。该算法的算法标识
45、名称为“”。支持的功能包括 ,。加密加密内容如下。)令 是添加了填充字节的 内容的结果。)令 是使用作为块密码算法执行了加密操作后的结果,作为输入明文。)返回与全局对象 相关的新的 ,包含了 。解密解密内容如下。)令 是使用算法执行了解密操作的结果,的内容为输入密文。)令为 的最后的字节。)如果是或者大于,或者如果 的最后个字节任何一个值不是,抛出 异常。犌犕犜 )令 是从 的末端删除个字节的结果。)返回与全局对象 相关的新的 ,包含了 。生成密钥生成密钥内容如下。)如果 包含了不是“”“”“”或者“”的条目,抛出 。)如果 的 成员不等于 ,抛出 。)生成 位长的密钥。)如果密钥生成步骤失败
46、,抛出 异常。)令 是新的代表生成的密钥的 对象。)令 是新的 。)设置 的 属性为“”。)设置 的 属性为 。)设置 的内部接口 为 。)设置 的内部接口 为 。)设置 的内部接口 为 。)返回 。导入密钥导入密钥内容如下。)如果 里面包含了不是“”“”“”或“”的条目,抛出 异常。)如果 是“”:令 是包含 的字符串。如果 的比特长度不是 ,抛出 异常。)如果 是“”:如果 是 字典,令 为 。否则抛出 异常。如果 的“”域不是“”,抛出 异常。如果 不满足 算法的 的需求,抛出 异常。令 为 的“”域的解码后的结果的字符串。如果 的“”域存在,并且不是“”,抛出 异常。如果 不为空,并且
47、 的“”域存在且不是“”,抛出 异常。如果 的“”域存在,并且根据 的需求不合法,或者不包含所有特定的 值,抛出 异常。如果 的“”域存在,值为 ,并且 为 ,抛出 异常。)如果 为其他值,抛出 异常。)令 为代表值为 的表示密钥的新的 对象。)令 为新的 。)设置 的 属性为“”。)设置 的 属性为 。)设置 的内部接口 为 。)返回 。犌犕犜 导出密钥导出密钥内容如下。)如果 的内部接口 所代表的底层密钥资料不可以访问,抛出 异常。)如果 是“”:令 为 的内部接口 所代表的 的原始字节。令 为与全局对象 相关的新的 ,并包含 。)如果 是“”:如果 是 字典,令 为 。否则抛出 异常。设
48、置 的 属性为“”设置 的属性为包含 的内部接口 所代表的 的原始字节的字符串,根据 的 进行编码。设置 的 属性为“”。设置 的 属性为 的 属性设置 的 属性为 的内部接口 。令 为根据 定义的转换 为 对象的结果。)如果 为其他值,抛出 异常。)返回 。犌犕犜 书 书 书 犜犕犌中 华 人 民 共 和 国 密 码行 业 标 准浏览器密码应用接口规范 中国标准出版社出版发行北京市朝阳区和平里西街甲号()北京市西城区三里河北街 号()网址 总编室:()发行中心:()读者服务部:()中国标准出版社秦皇岛印刷厂印刷各地新华书店经销开本 印张字数 千字 年月第一版 年月第一次印刷书号:定价 元如有印装差错由本社发行中心调换版权专有侵权必究举报电话:()