CertNameToStrA 函式 (wincrypt.h)
CertNameToStr 函式會將 CERT_NAME_BLOB 結構中的編碼名稱轉換為以 Null 結尾的字元字串。
字串表示遵循 RFC 1779 中的辨別名稱規格。 此規則的例外狀況列在下方的一節中。
語法
DWORD CertNameToStrA(
[in] DWORD dwCertEncodingType,
[in] PCERT_NAME_BLOB pName,
[in] DWORD dwStrType,
[out] LPSTR psz,
[in] DWORD csz
);
參數
[in] dwCertEncodingType
用來編碼名稱的 憑證編碼類型。 此函式會忽略 訊息編碼類型 標識碼,包含在此值的高 WORD 中。
此參數可以是下列目前定義的憑證編碼類型。
價值 | 意義 |
---|---|
|
指定 X.509 憑證編碼。 |
[in] pName
要轉換之 CERT_NAME_BLOB 結構的指標。
[in] dwStrType
此參數會指定輸出字串的格式。 此參數也會指定字串內容的其他選項。
此參數可以是下列其中一個值。
價值 | 意義 |
---|---|
|
會捨棄所有 物件標識碼 (OID)。 CERT_RDN 專案會以逗號分隔,後面接著空格 (, 。 CERT_RDN 中的多個屬性是以空格 (+) 括住的加號分隔,例如,Microsoft、Kim Abercrombie + Programmer。 |
|
OID 隨附於其屬性值的等號 (=) 分隔符。 CERT_RDN 專案會以逗號分隔,後面接著空格 (, 。 CERT_RDN 中的多個屬性會以加號分隔,後面接著空格 (+ )。 |
|
OID 會轉換成其 X.500 索引鍵名稱;否則,它們與 CERT_OID_NAME_STR相同。 如果 OID 沒有對應的 X.500 名稱,OID 會搭配 OID 前置詞使用。
如果 RDN 值包含開頭或尾端空格元或下列其中一個字元,則會加上引號:
|
下列選項也可以與上述值結合,以指定字串的其他選項。
價值 | 意義 |
---|---|
|
將逗號後面接著空格 (, ) 分隔符取代為分號,後面接著空格 (; ) 分隔符。 |
|
將逗號後面接著空格 (, ) 分隔符取代為反斜杠,後面接著字母 r,後面接著反斜杠,後面接著字母 n (\r\n) 分隔符。 |
|
以單一空格分隔符取代以空格 (+) 分隔符括住的加號。 |
|
停用引號。 |
|
辨別名稱字串中的 RDN 順序會在譯碼之後反轉。 預設不會設定此旗標。 |
|
根據預設,CERT_RDN_T61_STRING X.500 金鑰字串會譯碼為 UTF8。 如果UTF8譯碼失敗,X.500機碼會譯碼為8位字元。 使用CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG略過將初始嘗試譯碼為UTF8。 |
|
如果 pName 參數所指向的名稱包含電子郵件 RDN,且電子郵件位址的主機名部分包含以 Punycode 編碼 IA5String,則會將名稱轉換成 Unicode 對等專案。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支援此值。 |
[out] psz
接收傳回字串之字元緩衝區的指標。 這個緩衝區的大小是在 csz 參數中指定。
[in] csz
psz 緩衝區的大小,以字元為單位。 大小必須包含終止的 Null 字元。
傳回值
傳回已轉換的字元數,包括終止的 Null 字元。
如果 pszNULL 或 csz 為零,則會傳回目的地字串所需的大小。
言論
如果 psz不是 NULL,且 csz 不是零,則傳回的 psz psz 一律為 null 終止字符串。
建議您不要使用多元件 RDN(例如 CN=James+O=Microsoft),以避免譯碼發生時可能發生的順序問題。 相反地,請考慮使用單一值 RDN(例如 CN=James、O=Microsoft)。
字串表示會遵循 RFC 1779
- 包含引號的名稱會以雙引號括住。
- 空字串會以雙引號括住。
- 包含連續空格的字串不會以引號括住。
- CERT_RDN_ENCODED_BLOB 或 CERT_RDN_OCTET_STRING 類型的相對辨別名稱 (RDN) 值會以十六進位格式格式化。
- 如果 OID 沒有對應的 X.500 名稱,則會在 OID 之前使用 「OID」 前置詞。
- 如果 RDN 值包含前置空格符、尾端空格符或下列其中一個字元,則 RDN 值會以雙引弧括住(而不是 “\” :
- 逗號 (,)
- 加號 (+)
- 等號 (=)
- 英吋標記 (“)
- 反斜杠 (/)
- 小於符號 (<)
- 大於符號 (>)
- 數字符號 (#)
- 分號 (;)
- stateOrProvinceName (2.5.4.8) OID 的 X.500 機碼名稱為 “S”。 此值與 RFC 1779 X.500 機碼名稱(“ST”) 不同。
鑰匙 | 物件識別符字串 |
---|---|
E | 1.2.840.113549.1.9.1 |
T | 2.5.4.12 |
G | 2.5.4.42 |
我 | 2.5.4.43 |
錫 | 2.5.4.4 |
例子
如需使用此函式的範例,請參閱
注意
wincrypt.h 標頭會根據 UNICODE 預處理器常數的定義,將 CertNameToStr 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |
連結庫 | Crypt32.lib |
DLL | Crypt32.dll |