openssl在哪里存储它的oid's?

时间:2015-07-25 18:48:26

标签: openssl asn.1

所以我有一条CMS签名消息:

MIIF3QYJKoZIhvcNAQcCoIIFzjCCBcoCAQExDzANBglghkgBZQMEAgEFADASBgkq 
hkiG9w0BBwGgBQQDYWFhoIIDAzCCAv8wggHnoAMCAQICAQEwDQYJKoZIhvcNAQEF 
BQAwGjELMAkGA1UEBhMCVVMxCzAJBgNVBAoMAlo0MB4XDTEzMDgyODE4MjgzNFoX 
DTIzMDgyODE4MjgzNFowGjELMAkGA1UEBhMCVVMxCzAJBgNVBAoMAlo0MIIBIjAN 
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA33TqqLR3eeUmDtHS89qF3p4MP7Wf 
qt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFG 
Af+kDQiNSe2ZtqC7bnIc8+KSG/qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0 
JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5+ 
UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3/Q0 
auBkdbDR/ES2PbgKTJdkjc/rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSwIDAQAB 
o1AwTjAdBgNVHQ4EFgQUB2T0xMkFbv9CP90FoZU8lu1qE80wHwYDVR0jBBgwFoAU 
B2T0xMkFbv9CP90FoZU8lu1qE80wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUF 
AAOCAQEAx8aifcvGpUx+2oFTFmX4nP0W63bx8MqviDq4A06KsqNMPiGegQp/b47+ 
YroaruBaKzlgwBaUCmVtAywSREMv+/9PvaZNgz4StV83TqL5Uq5EbfhnBKRp1F58 
wAlwwWztPlq5PoXIxJEEUStW1tq5JwESBCRvRkvqUoT/Qav9AZjbDHqXTXAWtM92 
uQdH8xcgkKFJV+kU6sUcNYdULeRdNKX7Ke0o11SL2HHsB2jQEm7aNZ+Ya0s9VWPY 
S22tdYry9TeFqFm5swC+gVmm7Atg/zHp0k9v1+oUyshl6YNxINod4i71LcHDZ8tI 
USrLXO9yZfcUd6l31yiR9E4U5atIKjGCApcwggKTAgEBMB8wGjELMAkGA1UEBhMC 
VVMxCzAJBgNVBAoMAlo0AgEBMA0GCWCGSAFlAwQCAQUAoIIBSTAYBgkqhkiG9w0B 
CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNTA3MjIwMjUyMzVaMC8G 
CSqGSIb3DQEJBDEiBCCYNIdtz7BcsWelwklT66WMSsibGt9X8o8vnQmvEH7o8DA6 
BgsqhkiG9w0BCRACDzErMCkGBCoDBAUwITAJBgUrDgMCGgUABBShoqOkpaanqKmg 
oaKjpKWmp6ipoDBKBgsqhkiG9w0BCRACDDE7MDkwNwQUdsGdeHdBva92yrHELRZs 
tTaqg/gwHzAaMQswCQYDVQQGEwJVUzELMAkGA1UECgwCWjQCAQEwVgYLKoZIhvcN 
AQkQAi8xRzBFMEMEIMNV3E7h3KKpUFPtkNJ/8TAlyIeCTafXzIM0irKg6URCMB8w 
GjELMAkGA1UEBhMCVVMxCzAJBgNVBAoMAlo0AgEBMA0GCSqGSIb3DQEBCwUABIIB 
ANW+XgUsuYk1rul2Ws6m9PSrvQeWcK+b8Rg8tvsYN3k4rGrI4i/Vzl880oX3vIX7 
r8Q8v4WZ+QxmgnBD+0PFqET/wkHBWYPRx6KthiKnz8dY3cakK5UorJebAkaamBB0 
LUIFsTQlNB+bw1N9jHwGg9pdGgsBMB0ZGJkv9qfzfeNaIIo2TkOWHOHEGp+iQ+4V 
J10wYE72K16Z5ylNKS980azGLdWSA2B1NlRsf0DrxZNLH6jFDAGrQtiuhcYs7/+R 
8Rx+ISPa3YC/E813LKBjNdTMvGnxoPUrsc22MPRUb4Sj3+NthZO42aUqXwGfLLE/ 
zpbC9FnUYduAn/1XrFpv4sw=

如果你通过openssl asn1parse -in cms.txt(其中cms.txt包含上面的内容)运行它,你会发现它有OID代表sha256这样的东西。与sha256对应的OID为2.16.840.1.101.3.4.2.1。

我的问题是......在OpenSSL来源中,这种关联的来源是什么?

就是这样:

https://android.googlesource.com/platform/external/openssl/+/master/crypto/objects/objects.h

这似乎定义了一堆OID,但sha256不在其中,因此我不清楚它的定义位置。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

OID在 crypto/objects/objects.txt 中定义。此文件的语法在crypto/objects/objects.README中定义,并由crypto/objects/objects.pl脚本转换为头文件。

因此定义了NIST SHA-2 OID:

# OIDs for SHA224, SHA256, SHA385 and SHA512, according to x9.84.
!Alias nist_hashalgs nistAlgorithms 2
nist_hashalgs 1         : SHA256                : sha256
nist_hashalgs 2         : SHA384                : sha384
nist_hashalgs 3         : SHA512                : sha512
nist_hashalgs 4         : SHA224                : sha224

nistAlgorithms前缀在文件前面定义:

!Alias csor 2 16 840 1 101 3
!Alias nistAlgorithms csor 4

组合,这些为您发布的ASN.1中显示的SHA-256提供了完整的OID:2.16.840.1.101.3.4.2.1