openssl在哪里存储它';s oid';s

openssl在哪里存储它';s oid';s,openssl,asn.1,Openssl,Asn.1,所以我有一个CMS签名的消息: MIIF3QYJKoZIhvcNAQcCoIIFzjCCBcoCAQExDzANBglghkgBZQMEAgEFADASBgkq hkiG9w0BBwGgBQQDYWFhoIIDAzCCAv8wggHnoAMCAQICAQEwDQYJKoZIhvcNAQEF BQAwGjELMAkGA1UEBhMCVVMxCzAJBgNVBAoMAlo0MB4XDTEzMDgyODE4MjgzNFoX DTIzMDgyODE4MjgzNFowGjELMAkGA1UEBhMC

所以我有一个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包含上述内容)运行它,您将看到它具有表示sha256等内容的OID。对应于sha256的OID在其中为2.16.840.1.101.3.4.2.1

我的问题是。。。在OpenSSL源代码中,这种关联是在哪里建立的

这是:

这似乎定义了一堆OID,但sha256不在其中,所以我不清楚它是在哪里定义的


有什么想法吗?

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
文件前面定义了
前缀

!Alias csor 2 16 840 1 101 3
!Alias nistAlgorithms csor 4
结合起来,它们给出了SHA-256的完整OID,该OID出现在您发布的ASN.1中:
2.16.840.1.101.3.4.2.1