forked from TrueCloudLab/certificates
iOS 16 beta 2 support
This commit is contained in:
parent
7e1b0bebd9
commit
274f6ccb41
1 changed files with 18 additions and 1 deletions
|
@ -326,6 +326,15 @@ type AttestationObject struct {
|
||||||
// TODO(bweeks): move attestation verification to a shared package.
|
// TODO(bweeks): move attestation verification to a shared package.
|
||||||
// TODO(bweeks): define new error type for failed attestation validation.
|
// TODO(bweeks): define new error type for failed attestation validation.
|
||||||
func deviceAttest01Validate(ctx context.Context, ch *Challenge, db DB, jwk *jose.JSONWebKey, payload []byte) error {
|
func deviceAttest01Validate(ctx context.Context, ch *Challenge, db DB, jwk *jose.JSONWebKey, payload []byte) error {
|
||||||
|
// TODO(bweeks): investigate if the iOS implementation allows for proper
|
||||||
|
// platform detection.
|
||||||
|
{
|
||||||
|
var p ApplePayload
|
||||||
|
if err := json.Unmarshal(payload, &p); err == nil {
|
||||||
|
return appleAttest01Validate(ctx, ch, db, jwk, payload)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var p Payload
|
var p Payload
|
||||||
if err := json.Unmarshal(payload, &p); err != nil {
|
if err := json.Unmarshal(payload, &p); err != nil {
|
||||||
return WrapErrorISE(err, "error unmarshalling JSON")
|
return WrapErrorISE(err, "error unmarshalling JSON")
|
||||||
|
@ -432,7 +441,10 @@ func appleAttest01Validate(ctx context.Context, ch *Challenge, db DB, jwk *jose.
|
||||||
return WrapErrorISE(err, "error unmarshalling JSON")
|
return WrapErrorISE(err, "error unmarshalling JSON")
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(os.Stderr, "p.AttObj: %v\n", p.AttObj)
|
if p.Error != "" {
|
||||||
|
return storeError(ctx, db, ch, true, NewError(ErrorRejectedIdentifierType,
|
||||||
|
"payload contained error: %v", p.Error))
|
||||||
|
}
|
||||||
|
|
||||||
attObj, err := base64.RawURLEncoding.DecodeString(p.AttObj)
|
attObj, err := base64.RawURLEncoding.DecodeString(p.AttObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -455,6 +467,11 @@ func appleAttest01Validate(ctx context.Context, ch *Challenge, db DB, jwk *jose.
|
||||||
"x5c not present"))
|
"x5c not present"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(x5c) == 0 {
|
||||||
|
return storeError(ctx, db, ch, true, NewError(ErrorRejectedIdentifierType,
|
||||||
|
"x5c is empty"))
|
||||||
|
}
|
||||||
|
|
||||||
attCertBytes, valid := x5c[0].([]byte)
|
attCertBytes, valid := x5c[0].([]byte)
|
||||||
if !valid {
|
if !valid {
|
||||||
return storeError(ctx, db, ch, true, NewError(ErrorRejectedIdentifierType,
|
return storeError(ctx, db, ch, true, NewError(ErrorRejectedIdentifierType,
|
||||||
|
|
Loading…
Reference in a new issue