CCC 數(shù)字鑰匙學(xué)習(xí)筆記 - 車主配對命令

整理了一下CCC組織的汽車數(shù)字鑰匙Release 3中關(guān)于車主配對Owner Paring馒胆,過程的APDU指令和數(shù)據(jù)說明卡儒√锇螅基本可以算是在車端的角度進(jìn)行車主配對操作鳍徽。里面的章節(jié)表格編號沿量,都按照CCC數(shù)字鑰匙Release 3文檔中的編號走傍衡,方便將來檢索對照词渤。

車主配對命令

5.1 車主配對的指令

表5-1:車主配對命令集

命令 Ins Byte(HEX) 實(shí)現(xiàn)方
SELECT A4 Digital Key Framework
SPAKE2+REQUEST 30 Digital Key Framework
SPAKE2+VERIFY 32 Digital Key Framework
WRITE DATA D4 Digital Key Framework
GET DATA CA Digital Key Framework
GET RESPONSE C0 Digital Key Framework
OP CONTROL FLOW 3C Digital Key Framework
參見表15-1 5.3.2 Digital Key Applet

表5-2 基本狀態(tài)字

SW1SW2 描述
6700 長度錯
6A80 數(shù)據(jù)域的參數(shù)錯
6A82 文件找不到
6B00 P1 P2錯
6C00 Le錯
6D00 INS錯
6E00 CLA錯
9000 成功

5.1.1 SELECT指令

汽車向鑰匙設(shè)備發(fā)送SELECT AID指令猫妙。Digital Key framework AID為 A000000809434343444B467631

當(dāng)Digital Key framework被選中考蕾,設(shè)備應(yīng)當(dāng)按照表5-3返回?cái)?shù)據(jù)祸憋。

鑰匙設(shè)備應(yīng)當(dāng)向車輛指示當(dāng)前配對狀態(tài),可能狀態(tài)有:

  • 未配對
  • 配對模式開始且配對口令已經(jīng)輸入

SELECT指令用來選擇Digital Key applet實(shí)例(使用實(shí)例AID)在15.3.2.1定義肖卧。

C-APDU: 00 A4 04 00 Lc [Digital_Key_Framework_AID] 00

R-APDU: [表 5-3]90 00

表 5-3 SELECT指令響應(yīng)

Tag 長度(bytes) 描述 是否必須
5A 2*n n支持SPAKE2+協(xié)議版本(ver.high|ver.low) 必須
5C 2*m m支持的Digital Key applet協(xié)議版本(ver.high|ver.low) 必須
D4 1 00 = 未配對
02 = 配對模式開始且配對口令已經(jīng)輸入
必須

鑰匙設(shè)備應(yīng)當(dāng)返回所有支持的的SPAKE2+和支持的Digital Key applet協(xié)議版本蚯窥,每個版本使用2字節(jié)大端編碼的數(shù)據(jù)。

在CCC Release 3的規(guī)范里塞帐,鑰匙設(shè)備應(yīng)當(dāng)支持SPAKE2+協(xié)議版本1.0(編碼0100)和Digital Key applet協(xié)議1.0(編碼0100)拦赠。車輛應(yīng)當(dāng)依據(jù)6.3.3.8來匹配支持的版本。

鑰匙設(shè)備是否處于配對模式時會發(fā)出信號葵姥,如果鑰匙設(shè)備是“未配對”模式荷鼠,車輛只有在自己處于已配對模式時才能繼續(xù)(行駛)。

5.2.1 SPAKE2+REQUEST指令

在這個指令中榔幸,車輛應(yīng)當(dāng)發(fā)送所選擇的SPAKE2+版本允乐,所有支持的Digital Key applet協(xié)議版本和SPAKE2+的Scrypt參數(shù)。車輛應(yīng)當(dāng)在響應(yīng)中獲取SPAKE2+協(xié)議的曲線點(diǎn)X削咆。SPAKE2+REQUEST指令使用的參數(shù)見18節(jié)牍疏。

C-APDU:80 30 00 00 Lc [表 5-4] 00

R-APDU:[表 5-5] 90 00

表5-4 SPAKE2+REQUEST指令

Tag 長度(bytes) 描述 是否強(qiáng)制
5B 2 同意的SPAKE2+協(xié)議版本 強(qiáng)制
5C 2*m m支持的Digital Key applet協(xié)議版本(ver.high|ver.low) 強(qiáng)制
7F50 32 Scrypt配置參數(shù) 強(qiáng)制
- C0 16 密碼鹽值 s 強(qiáng)制
- C1 4 Scrypt cost參數(shù), N_{scrypt} 強(qiáng)制
- C2 2 塊大小參數(shù) r 強(qiáng)制
- C3 2 平行化參數(shù) p 強(qiáng)制
D6 2 車輛品牌(見表2-1)包含這個Tag拨齐,包括只支持NFC的的車輛 強(qiáng)制

表5-5 SPAKE2+REQUEST 響應(yīng)

Tag 長度(bytes) 描述 是否強(qiáng)制
50 65 SPAKE2+協(xié)議的曲線點(diǎn)X鳞陨,prepended with 04 h as per Listing 18-3 強(qiáng)制

在發(fā)送SPAKE2+REQUEST指令前,車輛應(yīng)當(dāng)先檢查SPAKE2+配對計(jì)數(shù)器瞻惋。如果計(jì)數(shù)器指示已經(jīng)配對7次厦滤,車輛應(yīng)當(dāng)不再發(fā)送配對指令。相反的歼狼,車輛應(yīng)當(dāng)發(fā)送一個OP CONTROL FLOW來中止(超過錯誤計(jì)數(shù)器次數(shù)掏导、需要新的配對口令或者沒有明確原因)。當(dāng)新的配對口令產(chǎn)生羽峰,計(jì)數(shù)器將被復(fù)位碘菜。

車輛應(yīng)當(dāng)發(fā)送所選的2字節(jié)的SPAKE2+協(xié)議版本。

車輛也應(yīng)當(dāng)發(fā)送支持的Digital Key applet 協(xié)議版本列表限寞,借此第一個被列出的版本應(yīng)當(dāng)被車主設(shè)備使用。整個Digital Key applet協(xié)議版本列表(Tag 5C)應(yīng)當(dāng)被包含在Key Creation Request(見11.8.1仰坦,DIGITAL_KEY_APPLET_PROTOCOL_VERSION)履植。這個允許在分享鑰匙到好友設(shè)備時選擇最好的版本使用。

SPAKE2+協(xié)議所有的曲線點(diǎn)的定義遵守X9.63標(biāo)準(zhǔn)悄晃,格式為 0x04||<x>||<y>的字節(jié)流玫霎,x和y為32字節(jié)的大端表示(見18.1)凿滤。

如果返回的X值在無窮遠(yuǎn)或者不是一個在橢圓曲線上定義的合法的點(diǎn),車輛應(yīng)當(dāng)中止流程庶近,并發(fā)送OP CONTROL FLOW指令翁脆,按照5.1.7的描述P2值設(shè)置為0C。

Scrypt的迭代次數(shù)(cost參數(shù))是一個4字節(jié)的無符號整數(shù)鼻种,用來配置Scrypt功能(見18.4)在主機(jī)廠服務(wù)器和鑰匙設(shè)備上來派生校驗(yàn)者的值反番。其他傳輸?shù)腟crypt參數(shù)還有塊大小和平行化參數(shù)(見18.1.2)。Scrypt cost參數(shù)叉钥、塊大小參數(shù)罢缸、平行化參數(shù)的TLV值部分都是編碼為大端格式。

如果車輛沒有找到雙方支持的SPAKE2+或者Digital Key applet協(xié)議版本投队,車輛應(yīng)當(dāng)發(fā)送一個OP_FLOW_CONTROL(Owner Paring
FLow Control)指令包含表5-24中定義的原因代碼枫疆,代替SPAKE2+REQUEST指令。

如果SPAKE2+REQUEST指令被成功處理敷鸦,車輛和鑰匙設(shè)備應(yīng)當(dāng)計(jì)算共享密鑰K息楔,分別為Listing 18-4和Listing 18-5。

表5-6 SPAKE2+REQUEST響應(yīng)錯誤狀態(tài)字

SW1SW2 描述
6985 指令使用順序不對
6A88 收到的數(shù)據(jù)不合法或者為0
9484 設(shè)備配對還未準(zhǔn)備就緒

5.1.3 SPAKE2+VERIFY 指令

這個指令相互交換證據(jù)來證明雙方計(jì)算出來的共享密鑰是相同的扒披。

C-APDU: 80 32 00 00 Lc [表 5-7] 00

R-APDU: [表 5-8] 90 00

表5-7 SPAKE2+VERIFY指令

Tag 長度(bytes) 描述 是否強(qiáng)制
52 65 SPAKE2+協(xié)議的曲線點(diǎn)Y值依,prepended with 04 h as per Listing 18-2 強(qiáng)制
57 16 車輛證據(jù)M[1] 強(qiáng)制

表5-8 SPAKE2+VERIFY響應(yīng)

Tag 長度(bytes) 描述 是否強(qiáng)制
58 16 鑰匙設(shè)備證據(jù) M[2] 強(qiáng)制

在發(fā)送SPAKE2+VERIFY指令之前,汽車應(yīng)當(dāng)先給SPAKE2+配對嘗試計(jì)數(shù)器加1谎碍。

汽車應(yīng)當(dāng)計(jì)算證據(jù)M[1](描述在Listing 18-7)并發(fā)送它給鑰匙設(shè)備鳞滨,一起發(fā)送的還有曲線點(diǎn)Y。

鑰匙設(shè)備應(yīng)當(dāng)驗(yàn)證下面的內(nèi)容:

    1. 收到的曲線點(diǎn)Y是否是定義在橢圓曲線上的合法的點(diǎn)
    1. 收到M[1]

如果都驗(yàn)證成功蟆淀,鑰匙設(shè)備應(yīng)當(dāng)計(jì)算證據(jù)M[2](描述Listing 18-8)拯啦,并在SPAKE2+響應(yīng)中將M[2]給車輛返回。

只有車輛成功驗(yàn)證了收到的M[2]熔任,車輛才能繼續(xù)車主配對流程褒链。

如果上面任何驗(yàn)證失敗,比如鑰匙不能計(jì)算M[2]且不能返回M[2]或者返回其他除了狀態(tài)字之外的響應(yīng)疑苔。這種情況車輛應(yīng)當(dāng)發(fā)送一個OP_CONTROL_FLOW指令按照5.1.7中的描述將P2設(shè)置未09去中止車主配對.

表5-9 SPAKE2+VERIFY響應(yīng)狀態(tài)字

SW1SW2 描述
6985 指令使用順序不對
6A88 驗(yàn)證證據(jù)失敗

SPAKE2+VERIFY步驟引出用于建立鑰匙框架和車輛交換后續(xù)指令的SCP03通道的安全通道密鑰甫匹。建立SCP03通道的遵守Listing 18-10和Listing 18-11。創(chuàng)建安全通道的密鑰在下列情況應(yīng)當(dāng)被復(fù)位:

  • 在成功配對之后
  • 當(dāng)鑰匙設(shè)備響應(yīng)的狀態(tài)字不是9000或者6100時
  • SPAKE2+REQUEST指令已經(jīng)發(fā)送
  • 當(dāng)出現(xiàn)通信中斷時
  • 車主配對沒有終止惦费,但時間超過最大允許的時間

車輛需要再重新開始SPAKE2+建立新密鑰兵迅。注意這種情況配對口令還是原來的。車輛應(yīng)當(dāng)在7次嘗試失敗后更換口令薪贫。

5.1.4 WRITE DATA指令

這個指令向鑰匙設(shè)備發(fā)送生成數(shù)字鑰匙所需要的所有數(shù)據(jù)恍箭。它也用于提供證明車輛的密鑰追蹤用途的設(shè)備公鑰。(好蹩腳瞧省,湊合看)

C-APDU: 84 D4 P1 00 Lc [command_data] [command_mac] 00
R-APDU: [response_mac] 90 00

除了發(fā)最后一次WRITE DATA指令時P1應(yīng)當(dāng)設(shè)置為80外扯夭,其他情況下參數(shù)P1和P2永遠(yuǎn)設(shè)置為0鳍贾。

這個指令只允許在安全通道內(nèi)發(fā)送。

表5-10 WRITE DATA響應(yīng)狀態(tài)字

SW1SW2 描述
6985 指令使用順序不對
6A84 內(nèi)存不夠

一個或者多個WRITE DATA指令可以用來向鑰匙設(shè)備寫入請求的數(shù)據(jù)對象交洗。

表5-11 數(shù)字鑰匙創(chuàng)建數(shù)據(jù)對象

Tag 長度(bytes) 數(shù)據(jù)內(nèi)容 是否強(qiáng)制
7F4A var 端點(diǎn)創(chuàng)建數(shù)據(jù)骑科,元素來自表15-13 強(qiáng)制
7F4B var 車輛公鑰證書K,Der編碼X509證書构拳,Listing 15-3 強(qiáng)制
7F4C var 中間證書咆爽, Der編碼的X509證書 可選
7F4D var 郵箱映射 表5-13 強(qiáng)制
7F4E var 設(shè)備配置 表5-14 強(qiáng)制
5F5F 0 數(shù)字鑰匙數(shù)據(jù)發(fā)送完成 強(qiáng)制

表5-12 設(shè)備數(shù)字鑰匙證書的對象

Tag 長度(bytes) 數(shù)據(jù)內(nèi)容 是否強(qiáng)制
5F5A var 車輛對設(shè)備的認(rèn)證公鑰(不透明) 可選
5F5F 0 數(shù)字鑰匙證書發(fā)送完成 強(qiáng)制

表5-11中所有要求的的對象應(yīng)當(dāng)按照表格順序被寫入設(shè)備。

一個或者多個TLV允許被寫在每個WRITE DATA指令中隐圾。

TLV 5F5F應(yīng)當(dāng)在最后被寫入標(biāo)記數(shù)據(jù)寫入結(jié)束伍掀。最后一個WRITE DATA指令應(yīng)當(dāng)通過設(shè)置P1=80指示包含TLV 5F5F。

當(dāng)車輛已經(jīng)接受了設(shè)備公鑰暇藏,表5-12中所有要求的對象應(yīng)當(dāng)被寫入鑰匙設(shè)備蜜笤。最后一個WRITE DATA指令應(yīng)當(dāng)通過設(shè)置P1=80來指示。

5F5F 應(yīng)當(dāng)為最后一個被寫入的TLV盐碱,標(biāo)記傳輸數(shù)據(jù)結(jié)束把兔。

Tag 7F4A應(yīng)當(dāng)包含表15-13中所有數(shù)據(jù)元素,除了下面的元素:

  • 端點(diǎn)標(biāo)識符(設(shè)備定義)
  • Instance CA標(biāo)識符 (設(shè)備定義)
  • 計(jì)數(shù)器限制(棄用瓮顽,不使用)

如果車輛標(biāo)識符作為7F4A的一部分提供县好,設(shè)備應(yīng)當(dāng)比較它的值和車輛公鑰葉子證書K的值,如果檢查失敗車主配對應(yīng)當(dāng)中止暖混。

最大指令數(shù)據(jù)長度應(yīng)道為239字節(jié):len=[command_data] + [padding] + [command_mac]

len = 239 + 1 + 8 <= 255(ok)

len = 240 + 16 + 8 255(not ok)

[command_data]+[padding]應(yīng)道是AES分組16字節(jié)的整數(shù)倍缕贡。填充方案描述在9.至少填充1字節(jié)的80。最大響應(yīng)數(shù)據(jù)長度應(yīng)當(dāng)為239字節(jié)拣播。

車輛公鑰應(yīng)當(dāng)以被主機(jī)廠CA簽發(fā)的一個X509證書形式提供晾咪,描述在Listing 5-3。

Listing 5-1 車輛證書擴(kuò)展方案

VehicleCertificateExtensionSchema ::= SEQUENCE
{
 extension_version INTEGER (1..255)
}

Listing 5-2 車輛證書擴(kuò)展數(shù)據(jù)

vehicle-cert-extension-data VehicleCertificateExtensionSchema ::=
{
 extension_version 1 --value shall be 1
}

車輛公鑰證書數(shù)據(jù)描述在Listing 5-3贮配。

Listing 5-3 車輛公鑰證書數(shù)據(jù)

vehicle-key-cert-data Certificate ::=
 {
 tbsCertificate
 {
 version v3, --shall be v3--
 serialNumber ..., --a random integer chosen by the certificate issuer,
 Signature
 {
 algorithm {1 2 840 10045 4 3 2} --OID for ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA-256)
 },
 issuer rdnSequence:
 {
 {
 {
 type {2 5 4 3}, --OID for CommonName
 value "..." --shall match the subject of the issuing certificate, shall use PrintableString or UTF8String format

 }
 }
 },
 validity
 {
 notBefore Time: "..." --shall use UTCTime or GeneralizedTime as defined in [3]
 notAfter Time: "..." --shall use UTCTime or GeneralizedTime as defined in [3]
 },
 subject rdnSequence:
 {
 {
 {
 type {2 5 4 3}, --OID for CommonName
 value "Vehicle OEM Identifier" --contains the subject of the certificate, as per Appendix B.2.6
 shall use PrintableString or UTF8String format
 }
 }
 },
 subjectPublicKeyInfo
 {
 algorithm
 {
 algorithm {1 2 840 10045 2 1} --OID for ecPublicKey (ANSI X9.62 public key type)
 parameters {1 2 840 10045 3 1 7} --OID for prime256v1(ANSI X9.62 named elliptic curve)
 },
 subjectPublicKey '04...'H --the public key pre-pended with 04 h to indicate uncompressed format
 },
 extensions
{
{
extnID {1.3.6.1.4.1.41577.5.1}, --OID for Vehicle Public Key Certificate (see Appendix B.2.2)
critical TRUE,
extnValue ‘…’H --DER encoding for VehicleCertificateExtensionSchema extension as per Listing 5-1
},
 {
 extnID {2 5 29 15}, --KeyUsage standard extension
 critical TRUE,
 extnValue '03020780'H --DER encoding for KeyUsage, digitalSignature only
 },
 {
 extnID {2 5 29 19}, --BasicConstraints standard extension
 critical TRUE,
 extnValue '3000'H -- DER encoding for cA=FALSE
 },
 {
 extnID {2 5 29 35}, --OID for AuthorityKeyIdentifier standard extension
 critical FALSE,
 extnValue '...'H- DER encoding of an AuthorityKeyIdentifier sequence, containing only a KeyIdentifier element.
 -- The KeyIdentifier is an OCTET STRING containing the 160-bit SHA-1 hash of the value of the BIT STRING
subjectPublicKey
 --from the issuer certificate (excluding the tag, length, and number of unused bits)
 },
 {
 extnID {2 5 29 14}, -- OID for SubjectKeyIdentifier standard extension
 critical FALSE,
 extnValue ‘…’H --160-bit SHA1 hash of the value of the BIT STRING subjectPublicKey
--(excluding the tag, length, and number of unused bits)
}
 }
 },
 signatureAlgorithm
 {
 algorithm {1 2 840 10045 4 3 2}
 },
 signatureValue '...'H --the certificate signature computed as per [3]
 --ECDSA signature
 }

5.1.5 GET DATA指令

這個指令應(yīng)當(dāng)繼續(xù)使用已經(jīng)建立的會話密鑰去檢索所有需要的所有數(shù)據(jù)谍倦,驗(yàn)證Digital Key framework創(chuàng)建在Digital Key applet 實(shí)例中的數(shù)字鑰匙。

C-APDU: 84 CA 00 00 Lc [encrypted_tag] [command_mac] 00

R-APDU: [response_payload] [response_mac] 90 00 or 61XX

每個GET DATA指令一次只能請求一個Tag 泪勒。---->這個地方跟EMV或者其他應(yīng)用一樣昼蛀。

X509證書不應(yīng)當(dāng)在封裝成TLV結(jié)構(gòu)

5.1.6 GET RESPONSE指令

跟ISO 14443規(guī)定的一個樣,這里就不寫了圆存。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叼旋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沦辙,更是在濱河造成了極大的恐慌夫植,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕轿,死亡現(xiàn)場離奇詭異偷崩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撞羽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門阐斜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诀紊,你說我怎么就攤上這事谒出。” “怎么了邻奠?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵笤喳,是天一觀的道長。 經(jīng)常有香客問我碌宴,道長杀狡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任贰镣,我火速辦了婚禮呜象,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碑隆。我一直安慰自己恭陡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布上煤。 她就那樣靜靜地躺著休玩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劫狠。 梳的紋絲不亂的頭發(fā)上拴疤,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音嘉熊,去河邊找鬼遥赚。 笑死,一個胖子當(dāng)著我的面吹牛阐肤,可吹牛的內(nèi)容都是我干的凫佛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼孕惜,長吁一口氣:“原來是場噩夢啊……” “哼愧薛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衫画,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤毫炉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后削罩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞄勾,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费奸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了进陡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愿阐。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖趾疚,靈堂內(nèi)的尸體忽然破棺而出缨历,到底是詐尸還是另有隱情,我是刑警寧澤糙麦,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布辛孵,位于F島的核電站,受9級特大地震影響赡磅,放射性物質(zhì)發(fā)生泄漏魄缚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一仆邓、第九天 我趴在偏房一處隱蔽的房頂上張望鲜滩。 院中可真熱鬧,春花似錦节值、人聲如沸徙硅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匿乃,卻和暖如春桩皿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幢炸。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工泄隔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宛徊。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓佛嬉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闸天。 傳聞我的和親對象是個殘疾皇子暖呕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容