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

# Verificación (Verify)

> Funcionalidad de verificación de Bluesky / AT Protocol. Cómo verificar el CID de publicaciones, imágenes y archivos CAR.

## Descripción general

La verificabilidad es un concepto importante en Bluesky / AT Protocol.

## Verificación de publicaciones

Con los datos de publicación obtenidos vía [com.atproto.repo.getRecord](https://docs.bsky.app/docs/api/com-atproto-repo-get-record), puedes verificar que el CID coincide con el 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');

// Codifica a DAG-CBOR
$cbor = CBOR::encode($record);

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

Implementación de ejemplo: [DownloadRecordCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadRecordCommand.php)

## Verificación de archivos de imagen

En publicaciones con imagen, el `$link` es el CID de la imagen.

```php theme={null}
$block = [
    'uri' => 'at://did:plc:***/app.bsky.feed.post/***',
    'cid' => 'b+++',
    'value' => [
        'text' => 'Publicación con imagen',
        '$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'
    ]
];
```

Verifica los datos crudos de la imagen descargada con [com.atproto.sync.getBlob](https://docs.bsky.app/docs/api/com-atproto-sync-get-blob).

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

// El CID de la imagen se obtiene desde $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);
```

Implementación de ejemplo: [DownloadBlobsCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadBlobsCommand.php)

## Verificación de archivos CAR

Un archivo CAR contiene todos los records de un usuario.

Puedes verificar si el archivo CAR descargado con [com.atproto.sync.getRepo](https://docs.bsky.app/docs/api/com-atproto-sync-get-repo) pertenece al usuario indicado.

```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:***';

// Se necesita la clave pública del didDoc para verificar
$didDoc = DidDocument::make(Bluesky::identity()->resolveDID($did)->json());

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

$car = 'Datos crudos del archivo CAR o stream al archivo';

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

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

Implementación de ejemplo: [DownloadRepoCommand](https://github.com/invokable/laravel-bluesky/blob/main/src/Console/DownloadRepoCommand.php)

## Verificación después de expandir el archivo CAR

La verificación de los records obtenidos al expandir el archivo CAR se realiza igual que en el primer ejemplo de publicación.

Implementación de ejemplo: [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

- [Verificación de correo electrónico (Email Verification)](/es/verification.md)
- [Hashing (hasheo)](/es/hashing.md)
- [Resumen de las novedades de Laravel 13](/es/blog/laravel-13-new-features.md)
- [Laravel Fortify y los starter kits](/es/advanced/fortify.md)
- [Investigación inicial de Laravel Passkeys (passkeys-server + @laravel/passkeys)](/es/blog/passkeys-introduction.md)
