在 openssl 中,我们有 get0 函数,例如 X
509_get0_subject_key_id
、GENERAL_NAME_get0_value
、SSL_CTX_set1_client_cert_type
、SSL_CTX_set1_server_cert_type
等。这里有get0,set1,这里的0和1这些数字代表什么?
参见OpenSSL指南中对库的介绍(3.2版本中的新增内容,但内容也大多适用于旧版本):
https://www.openssl.org/docs/man3.2/man7/ossl-guide-libraries-introduction.html
特别请参阅“图书馆约定”部分,其中对此进行了描述。
总而言之,0 表示对象的所有权传递给父对象(对于 set0/add0 调用)或由父对象保留(对于 get0 调用)。
A 1 表示所有权未传递/保留。相反,会创建对象的副本(或“向上引用”)。