Method: vdc.provisionMobileSecurityObjects

用於佈建憑證的端點。

HTTP 要求

POST https://example.issuer.com/api/v1/vdc/provisionMobileSecurityObjects

要求主體

要求主體會包含結構如下的資料:

JSON 表示法
{
  "requestMetadata": {
    object (RequestMetadata)
  },
  "deviceReferenceId": string,
  "credentialId": string,
  "authKeys": [
    {
      object (AuthKey)
    }
  ],
  "proofOfProvisioning": {
    object (ProofOfProvisioning)
  },
  "deviceEncryptionKey": {
    object (DeviceEncryptionKey)
  },
  "credentialVersionId": string
}
欄位
requestMetadata

object (RequestMetadata)

所有要求都必須提供的要求中繼資料。

deviceReferenceId

string

與裝置和裝置相關聯的身分識別金鑰相應的 ID。這並非裝置 ID,也就是說,如果使用者在同一部裝置上擁有兩組不同的憑證,這兩個憑證的 ID 就會不同。

所有要求都會提供這個 ID,可用於建立要求之間的關聯。

credentialId

string

不透明 ID,代表提供給裝置的特定憑證。

例如:UUID

authKeys[]

object (AuthKey)

需要認證的 x509 憑證清單,以便做為行動安全物件。每張憑證都會由裝置憑證金鑰簽署。

proofOfProvisioning

object (ProofOfProvisioning)

裝置傳送的物件,可證明憑證已正確佈建。如要進一步瞭解這個結構,請參閱物件定義。

注意:只有在憑證佈建後首次佈建行動安全物件時,系統才會提供這個物件。如果使用這個方法重新整理 MSO,系統不會提供這項資訊。

deviceEncryptionKey

object (DeviceEncryptionKey)

這個物件包含裝置的暫時性加密金鑰和相關聯的中繼資料。這個金鑰用於將值加密回裝置。在導入期間,沙箱環境可能不會提供這個物件,表示發卡機構應傳回純文字資料。實際工作環境中一律應設定這個值。

credentialVersionId

string

裝置目前擁有的憑證版本 ID。請勿使用這項功能,為舊版憑證佈建行動安全物件。如果這與發行者記錄中佈建的最新版本不符,則應改為傳回含有 InvalidState 的 ErrorResponse。

回應主體

回應,其中包含佈建行動裝置安全物件的結果。

如果成功,回應主體會含有以下結構的資料:

JSON 表示法
{
  "responseMetadata": {
    object (ResponseMetadata)
  },
  "mobileSecurityObjects": [
    {
      object (MobileSecurityObject)
    }
  ]
}
欄位
responseMetadata

object (ResponseMetadata)

回應的中繼資料,所有回應都必須提供。

mobileSecurityObjects[]

object (MobileSecurityObject)

已準備就緒的 MobileSecurityObject 清單。如果目前沒有可用的 MobileSecurityObject,這份清單可能會是空白的。

AuthKey

由裝置憑證金鑰簽署的 x509 憑證,將由簽發者驗證。

這些金鑰是由錢包從 Android Identity Credential API 擷取,詳情請參閱 https://developer.android.com/reference/android/security/identity/IdentityCredential#getAuthKeysNeedingCertification()

JSON 表示法
{

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
欄位
聯集欄位 presencetype。指出如何呈現 AuthKey 的 oneof。presencetype 只能是下列其中一項:
encryptedData

object (EncryptedData)

解密值所需的加密值和加密中繼資料。

unencryptedValue

string

AuthKey 的 Base64 編碼值。

ProofOfProvisioning

COSE_Sign1 結構,由裝置憑證金鑰簽署,可證明相關憑證已正確佈建至裝置上的安全儲存空間。

這個結構是由 Android Identity Credential API 定義,詳情請參閱 https://developer.android.com/reference/android/security/identity/WritableIdentityCredential#personalize(android.security.identity.PersonalizationData

JSON 表示法
{

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
欄位
聯集欄位 presencetype。指出如何呈現 ProofOfProvisioning 的 oneof。presencetype 只能是下列其中一項:
encryptedData

object (EncryptedData)

解密值所需的加密值和加密中繼資料。

unencryptedValue

string

ProofOfProvisioning 的 Base64 編碼值。

MobileSecurityObject

這個物件會封裝從憑證中每個資料元素計算出的摘要。這會以靜態驗證資料表示,這是 Android Identity Credential 程式庫的必要格式。如要進一步瞭解如何建構靜態驗證資料,請參閱這篇文章

JSON 表示法
{
  "expirationTimeMillis": string,

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
欄位
expirationTimeMillis

string (int64 format)

代表行動裝置安全物件到期時間的時間戳記。時間戳記以 Unix 紀元時間起算的毫秒數表示。

聯集欄位 presencetype。這個 oneof 會指出憑證的呈現方式。presencetype 只能是下列其中一項:
encryptedData

object (EncryptedData)

解密值所需的加密值和加密中繼資料。

unencryptedValue

string

憑證的 Base64 編碼值。