This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2642R:超长消息的 EdDSA 签名验证

Guru**** 2343770 points
Other Parts Discussed in Thread: CC2652RB
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1434187/cc2642r-eddsa-signature-verification-of-a-very-long-message

器件型号:CC2652R

工具与软件:

正在尝试使用 EDDSA.h 驱动程序来验证签名、但是"message"是一个存储在外部闪存上的文件、由于此文件太大而无法存储在 RAM 缓冲区中、因此需要分块读取此文件。  是否有办法单独执行哈希运算、然后将其提供给驱动程序、而不是指向预哈希运算消息的指针?  我找到了 但它已经3年了。  是否有驱动程序更新、链接的参考的有效示例、或者至少有一项保证、说明我自己应该仍然正常工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!

    我正在调查你的问题,我会联系该线程的作者!  

    谢谢!
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!

    通过查看 F2 SDK 并将7_10 SDK 与7_40 SDK 进行比较、可以看到、EDDSACC26X2.c 文件与这两个版本相隔一年、是相同的(未更改)。 内部查看、我目前找不到链接引用的确切示例、但我会看看是否有。  

    谢谢!
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还有一个新的附加问题...

    在等待相关反馈的同时、我深入研究了 EdDSA 规范、并开始尝试 对驱动程序进行稍微简单的修改、以开始使用、尝试实现 Ed25519ph。  然后我找到了 这是克莱门特提出的类似建议。

    然而、在进行这些修改后、在构建项目时似乎并未实际使用我的代码。  我只在哪里添加了头文件、甚至试图从 SDK 中删除源代码文件、但它仍然运行现有版本的函数、而不是我更改后的函数。  接下来我尝试更改 EDDSA_VERIFY ()和 EDDSA_runVerifyFSM ()函数的名称,以确保  它是我被调用的,然后我甚至无法构建项目,因为链接器错误;不是在这些函数上,而是在名称没有更改的所有其他函数上,因为现在它实际上在使用我的文件,它看到所有预编译函数与符号库有冲突:

    #10056符号"EDDSA_INIT"重新定义:首先在".DNS"中定义/Drivers/EdDSA/EDDSACC26X2.o;在"C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/source/ti/drivers/lib/ticlang/m4f/drivers_cc26x2.a 中重新定义 "

    所以我的问题是:如何告知项目不要使用库的预编译版本?  使用较旧的编译器和较早版本的 SDK 时、就像将源文件从 SDK 复制到本地工程、在本地工程中更改和编译一样简单、如中建议的那样 .  这显然不再起作用了、那么我现在该怎么做呢?

    (如果你从其他地方找到它、我会分享这个信息、但我确实在使用7.10版本的 SDK。  但是、我在此线程的标题中显然输入了错误的处理器、因为我们实际上是在使用 CC2652R1F 和 CC2652RB。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!

    对于您的新问题、我将看到 Clement 是否可以在此处提供一些额外的反馈来帮助您。

    所以我的问题是:如何告知项目不要使用库的预编译版本?  使用较旧的编译器和较早版本的 SDK 时、就像将源文件从 SDK 复制到本地工程、在本地工程中更改和编译一样简单、如中建议的那样 .  这显然不再起作用、那么我现在该怎么做呢?

    -通常,如果我们想修改一个库文件,我们会把它拖到本地项目中,并告诉项目引用本地版本,而不是这里的库版本,从我可以告诉你已经在做这件事,但收到了错误。 我们可以尝试在此处修改库项目本身(*制作原始内容的副本以以防万一地替换)。

    谢谢!
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    和告诉工程引用本地版本而不是此处的库版本

    您如何实现这部分?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!

    例如、我所做的是采用#include 并更改为#include "IEEE-h"、这样工程就知道需要查看"本地"版本、而不是 SDK 版本。  

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哦、是的、我完成了所有这些工作、而且还在尝试使用预编译版本。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!  

    有时 syscfg 可能会拉入一个 makefile 或库。  

    我会向 Clement 询问他能否就您的上一个问题提供反馈!  

    谢谢!
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、你有我的错误消息、会发生什么情况吗?  我如何防止这种情况呢?  值得注意的是、我们在多年前禁用了 syscfg、因此不应该是新的拉扯。  我必须手动添加 ti_drivers_config.c/.h 条目、而且这些条目还仅引用我的本地头文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Alex 和 Chris、  

    阅读你的交换,我相信你应该首先确保项目是用修改的驱动程序文件建立的。  

    除非以不同的配置、否则工程将使用预编译/编译的库进行构建-修改 EdDSA 代码后、肯定没有重建这些库。  

    然后、您有两个选择(我个人更喜欢第一个):

    -选项1 :复制项目中修改的文件

    -选项2:按此处所述重新编译库: https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/7.41.00.17/exports/docs/simplelink_mcu_sdk/Users_Guide .html#rebuild-the-libraries 

    我希望这将有所帮助、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    还有一条评论-在代码中我认为我几年前提出的建议应该仍然适用。  

    此致、  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="370266" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1434187/cc2642r-eddsa-signature-verification-of-a-very-long-message/5512761 #5512761"]我相信您应首先确保使用修改后的驱动程序文件构建该项目。  [/报价][报价用户 id="370266" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1434187/cc2642r-eddsa-signature-verification-of-a-very-long-message/5512761 #5512761"]

    然后、您有两个选择(我个人更喜欢第一个):

    -选项1 :复制项目中修改的文件

    [报价]

    如前所述、如果我在项目中复制修改后的文件、会发生以下两件事之一、具体取决于修改的方式:1)我不更改修改后的函数的名称、项目生成、但在项目运行时、显然修改后的版本不是被调用的版本、因为它们不执行我修改后的操作、 或2)我更改了修改后的函数的名称、以确保它是唯一被调用的函数、然后由于上面显示的链接器错误、工程无法构建、我被告知我正在重新定义 其余 未 重命名的函数、因为它仍然尝试使用它们的预编译版本。

    除非配置不同、否则项目将使用预编译库构建

    那么、 如何以不同的方式对其进行配置、以便不使用预编译库?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chris Hunt、

    我们可以在调试模式下进行快速测试:

    1) 1)在本地项目中创建修改后的驱动程序的本地副本。  

    2)更改#includee. 至#include 完全免费的。  

    3) 3)在应用程序代码中的函数调用上放置两个断点、在应调用的函数中修改后的驱动程序中放置一个断点。

    4) 4)进入调试模式、并在应用程序代码函数中的断点处停止

    5)进入函数和发生什么:

    A)是否输入修改后的驱动程序

    B)进入 SDK 驱动程序

    谢谢!
    Alex F