> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificatie (Verify)

> De verificatiefunctionaliteit van Bluesky / het AT Protocol. Hoe je de CID van posts, afbeeldingen en CAR-bestanden verifieert.

## Overzicht

Verifieerbaarheid is een belangrijk concept van Bluesky / het AT Protocol.

## Een post verifiëren

Je kunt verifiëren of de CID van postdata die je hebt opgehaald met [com.atproto.repo.getRecord](https://docs.bsky.app/docs/api/com-atproto-repo-get-record) overeenkomt met het record.

```php theme={null}
$block = [
    'uri' => 'at://did:plc:***/app.bsky.feed.post/***',
    'cid' => 'bafyreih5y47li4zuvvzevmq4xl7woqxchfc2pnfclv3kfz3zefb2qd3bzm',
    'value' => [
        'text' => 'Hello, Bluesky!',
        '$type' => 'app.bsky.feed.post',
        'createdAt' => '2025-01-01T00:00:00.000Z',
    ],
];
```

```php theme={null}
use Revolution\Bluesky\Core\CBOR;
use Revolution\Bluesky\Core\CID;

$cid = data_get($block, 'cid');
$record = data_get($block, 'value');

// Encoden naar DAG-CBOR
$cbor = CBOR::encode($record);

$bool = CID::verify($cbor, $cid);
```

Voorbeeldimplementatie: [DownloadRecordCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadRecordCommand.php)

## Afbeeldingsbestanden verifiëren

Bij posts met afbeeldingen is `$link` de CID van de afbeelding.

```php theme={null}
$block = [
    'uri' => 'at://did:plc:***/app.bsky.feed.post/***',
    'cid' => 'b+++',
    'value' => [
        'text' => 'Bericht met afbeelding',
        '$type' => 'app.bsky.feed.post',
        'embed' => [
            '$type' => 'app.bsky.embed.images',
            'images' => [
                [
                    'alt' => '',
                    'image' => [
                        'ref' => [
                            '$link' => 'b***image'
                        ],
                        'size' => 100000,
                        '$type' => 'blob',
                        'mimeType' => 'image/jpeg'
                    ],
                    'aspectRatio' => [
                        'width' => 1000,
                        'height' => 1000
                    ]
                ]
            ]
        ],
        'createdAt' => '2025-01-01T00:00:00.000Z'
    ]
];
```

Je verifieert de ruwe data van een afbeelding die je hebt gedownload met [com.atproto.sync.getBlob](https://docs.bsky.app/docs/api/com-atproto-sync-get-blob).

```php theme={null}
use Revolution\Bluesky\Core\CID;

// De CID van de afbeelding haal je uit $link
$cid = data_get($block, 'value.embed.images.0.image.ref.$link');
$file = file_get_contents('path/to/b***image.jpg');

$bool = CID::verify($file, $cid, codec: CID::RAW);
```

Voorbeeldimplementatie: [DownloadBlobsCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadBlobsCommand.php)

## CAR-bestanden verifiëren

Een CAR-bestand bevat alle records van een gebruiker.

Je kunt verifiëren of een CAR-bestand dat je hebt gedownload met [com.atproto.sync.getRepo](https://docs.bsky.app/docs/api/com-atproto-sync-get-repo) daadwerkelijk van de betreffende gebruiker is.

```php theme={null}
use Revolution\Bluesky\Core\CAR;
use Revolution\Bluesky\Crypto\DidKey;
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$did = 'did:plc:***';

// Voor de verificatie is de publieke sleutel uit het didDoc nodig
$didDoc = DidDocument::make(Bluesky::identity()->resolveDID($did)->json());

$didKey = DidKey::parse($didDoc->publicKey());

$car = 'De ruwe data van het CAR-bestand of een stream naar het bestand';

$signed = CAR::signedCommit($car);

$bool = CAR::verifySignedCommit($signed, $didKey);
```

Voorbeeldimplementatie: [DownloadRepoCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadRepoCommand.php)

## Verificatie na het uitpakken van een CAR-bestand

Records die je verkrijgt door een CAR-bestand uit te pakken, verifieer je op dezelfde manier als in het eerste voorbeeld met de post.

Voorbeeldimplementatie: [UnpackRepoCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/UnpackRepoCommand.php)

<Info>
  Source: [docs/verify.md](https://github.com/invokable/laravel-bluesky/blob/main/docs/verify.md)
</Info>


## Related topics

- [Hashing](/nl/hashing.md)
- [E-mailverificatie (Email Verification)](/nl/verification.md)
- [Upgradegids van Laravel 12 naar 13](/nl/blog/upgrade-12-to-13.md)
- [Eerste verkenning van Laravel Passkeys (passkeys-server + @laravel/passkeys)](/nl/blog/passkeys-introduction.md)
- [CSRF-bescherming](/nl/csrf.md)
