Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EOS签名与EOS4J的签名结果不一样 #33

Closed
jopinfly opened this issue Nov 9, 2018 · 8 comments
Closed

EOS签名与EOS4J的签名结果不一样 #33

jopinfly opened this issue Nov 9, 2018 · 8 comments

Comments

@jopinfly
Copy link

jopinfly commented Nov 9, 2018

你好,我们在使用过程中,使用了tokencore里面的测试用例,iOS上跑出来的结果符合测试用例,但是与用EOS4J库或Go库签名出来的结果不一致,请问是什么原因呢。。。

@XuNeal
Copy link
Contributor

XuNeal commented Nov 21, 2018

石墨烯类的链本身对签名有一个canonical的要求,但是如果不满足这个要求直接使用普通的rfc 6979也可以正常签名。详细的讨论可以参见EOSIO/eosjs-ecc#20

@foonsun
Copy link

foonsun commented Nov 21, 2018

石墨烯类的链本身对签名有一个canonical的要求,但是如果不满足这个要求直接使用普通的rfc 6979也可以正常签名。详细的讨论可以参见EOSIO/eosjs-ecc#20

@XuNeal
您好,我也是类似的问题。我想问的是:我用EOSJS-ECC库生成的签名,是否在EOS自己恢复公钥,是否能正常恢复?我看了您的原始帖子,也想试试那段您的C++代码,只是编译头文件一直出错,如果您能公开最好,所以向您求解。或者说您对EOSJS-ECC的提交的代码是和EOS生成的签名一样吗?我测试的结果和EOS的签名不一致,您的分支是不是没有融入到主分支?

public void assert_recover_key(const checksum256 * digest,const char * sig,size_t siglen,const char * pub,size_t publen) 

@XuNeal
Copy link
Contributor

XuNeal commented Dec 7, 2018

是的,我的PR对方并没有引入进去,他当时是想找eos-cpp组的人帮忙review之后再考虑并入。不过后来他的签名结果也一直能用就不了了之了。我只是想说明EOS在这部分是如何考量的。
现在来看石墨烯是考量了canonical的情况,并且在具体的实现中(BitShare和Steem等其实都用的是同一段代码)也这么实现了。但是在验签的时候他并未强制要求你的签名结果是canonical的。所以正常的RFC 6979的方案也可以正常签名交易。

现在token-core的代码签名的结果是和eos-cpp签名出来的结果保持一致的。并且签名结果eosjs-ecc也可以正常recover

@foonsun
Copy link

foonsun commented Dec 7, 2018 via email

@foonsun
Copy link

foonsun commented Dec 17, 2018 via email

@foonsun
Copy link

foonsun commented Dec 18, 2018

@foonsun 老哥 能留个联系方式,问个问题吗

什么问题?

@foonsun
Copy link

foonsun commented Dec 18, 2018

刚看到,我的处理是直接使用eosjs-ecc的库,直接可以经过EOS的校验的,你是什么问题? NAKUPENDA [email protected] 于2018年12月17日周一 下午3:51写道:

  • (ECDSA_SIG*) eosSignForHash:(NSData*)hash 这里是不是需要判断r点和s点 高位不能为0 请问iOS 端要修改什么

你的意思是来签名这块吗?签名的代码可以参照eosjs-ecc的过程来实现,具体这块我没涉及到,可以去看看开源的钱包比如TP等的实现。你是在IOS端的钱包吗?为什么不用eosjs-ecc库去做?不论你使用原版的eosjs-ecc库或者是 xuneal修改过的eosjs-ecc ,eosio里面的 recover都可以正常校验通过。

@XuNeal
Copy link
Contributor

XuNeal commented Jan 17, 2019

This issue will be closed as it has not update for a long time. You can reopen it if you have any other problem

@XuNeal XuNeal closed this as completed Jan 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants