-
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BACK-2165] [BACK-2164] [BACK-2163] Add app attestation and assertion api documentation. #58
base: master
Are you sure you want to change the base?
Changes from 5 commits
f500172
32c274b
952bc61
548cbce
eb24cf9
fb66302
00c3f30
f5ca75c
b1fa3a1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,3 +2,4 @@ | |
dist | ||
build | ||
.idea/ | ||
.DS_Store |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
title: Challenge | ||
description: Challenge generated by server. | ||
type: object | ||
properties: | ||
challenge: | ||
type: string | ||
minLength: 1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
title: AssertionSecret | ||
description: Data sent back upon successful app assertion. This will include X.509 certificates. | ||
type: object | ||
properties: | ||
certificates: | ||
description: X.509 certificates to be used for client authentication. | ||
type: array | ||
items: | ||
type: object | ||
properties: | ||
content: | ||
$ref: '../../common/models/base64.v1.yaml' | ||
description: base64 encoded X.509 certificate in DER format. | ||
ttlInDays: | ||
type: integer | ||
type: | ||
type: string | ||
enum: | ||
- CONSTRAINED | ||
- WILDCARD |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,31 @@ | ||||||
title: Assertion Verify | ||||||
description: Request body for verifying an assertion. | ||||||
type: object | ||||||
properties: | ||||||
assertion: | ||||||
$ref: '../../common/models/base64.v1.yaml' | ||||||
description: Base64 encoded data received from Apple App Attest API. User must base64 encode the binary data received from Apple. | ||||||
clientData: | ||||||
type: object | ||||||
properties: | ||||||
challenge: | ||||||
description: The previously returned assertion challenge. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is what a client receives after posting to /v1/(assertions|attestations)/challenges right? The body of that call is a JSON object, but this property is defined as a string, so probably that means it's base64 encoded? If so, that should be called out here. Or does the endpoint expect the original JSON object supplied, in which case this isn't a strong really at all, but rather an object as defined in Or if it's a string, but not base64 encoded, well, that'd be bad, it should be base64 encoded, else you run into a lot of quote-escaping issues and things get really ugly. |
||||||
type: string | ||||||
minLength: 1 | ||||||
partner: | ||||||
description: Code name of partner to retrieve certificate from. | ||||||
type: string | ||||||
minLength: 1 | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If this is an enum, then
Suggested change
|
||||||
enum: | ||||||
lostlevels marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
- Coastal | ||||||
partnerData: | ||||||
lostlevels marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
description: Actual data to send to partner API. | ||||||
$ref: './coastaldata.v1.yaml' | ||||||
description: Actual data requested by client. Must include the previously requested challenge. | ||||||
keyId: | ||||||
$ref: './keyid.v1.yaml' | ||||||
description: Base64 encoded key Id received from Apple App Attest API. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This property will be dropped, as you used a $ref as a sibling. So the description field in the |
||||||
required: | ||||||
- attestation | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Based on the filename and line 5 of this file, I assume this was a typo? |
||||||
- clientData | ||||||
- keyId |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
title: Attestation Verify | ||
description: Request body for verifying an attestation. | ||
type: object | ||
properties: | ||
attestation: | ||
$ref: '../../common/models/base64.v1.yaml' | ||
description: Base64 encoded data received from Apple App Attest API. User must base64 encode the binary data received from Apple. | ||
lostlevels marked this conversation as resolved.
Show resolved
Hide resolved
|
||
challenge: | ||
type: string | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See my comment on the challenge field of assertionverify.v1.yaml. |
||
minLength: 1 | ||
description: The previously returned attestation challenge. | ||
keyId: | ||
$ref: './keyid.v1.yaml' | ||
description: Base64 encoded key Id received from Apple App Attest API. | ||
required: | ||
- attestation | ||
- challenge | ||
- keyId |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
title: CoastalData | ||
description: Data to send to Coastal's API. | ||
type: object | ||
properties: | ||
rcTypeId: | ||
type: string | ||
minLength: 1 | ||
rcInstanceId: | ||
type: string | ||
minLength: 1 | ||
rcHWVersions: | ||
type: array | ||
items: | ||
type: string | ||
rcSWVersions: | ||
type: array | ||
items: | ||
type: string | ||
phdTypeId: | ||
type: string | ||
minLength: 1 | ||
phdInstanceId: | ||
type: string | ||
minLength: 1 | ||
csr: | ||
$ref: '../../common/models/base64.v1.yaml' | ||
description: Base64 encoded string of the PEM formatted certificate signing request to the partner API. | ||
minLength: 1 | ||
rcbMac: | ||
type: string | ||
description: Deprecated field that will be removed in the future but currently required by partner. Value can be any non empty string. | ||
minLength: 1 |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,3 @@ | ||||||
title: Key Id | ||||||
description: Base64 encoded key identifier received from apple. The Key Id is some shortened data, usually a hash, used to identify the longer actual key. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit
Suggested change
As it's used here "opaque" is understood to indicate that whatever data we receive, we shouldn't try to decode it or understand it or anything. This is commonly done because its creator is reserving the right to change its structure or meaning at any time. |
||||||
$ref: '../../common/models/base64.v1.yaml' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
title: New App Challenge | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: I wouldn't bother putting "new" in the filename or title... It isn't important, and can only confuse people (was there an older one?) |
||
description: Information needed when generating an attestation or assertion challenge. | ||
type: object | ||
properties: | ||
keyId: | ||
$ref: '../../common/models/base64.v1.yaml' | ||
description: Base64 encoded key Id received from Apple App Attest API. | ||
required: | ||
- keyId |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
title: Base64 | ||
type: string | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could use the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I'm not against the explicit pattern at all, but I would like to see a $ref to his used in more places, so that I don't have to squint at the regexp in so many different places and try to double-check that there wasn't a cut and paste error made. :) |
||
description: Base64 encoded data. | ||
pattern: '^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider a re-wording?