Compress a certificate extension value
(data: &[u8])
| 480 | |
| 481 | /// Compress a certificate extension value |
| 482 | pub fn compress_ext_value(data: &[u8]) -> Result<Vec<u8>> { |
| 483 | use flate2::write::GzEncoder; |
| 484 | use flate2::Compression; |
| 485 | use std::io::Write; |
| 486 | |
| 487 | let mut encoder = GzEncoder::new(Vec::new(), Compression::best()); |
| 488 | encoder |
| 489 | .write_all(data) |
| 490 | .context("failed to write to gzip encoder")?; |
| 491 | let compressed = encoder |
| 492 | .finish() |
| 493 | .context("failed to finish gzip compression")?; |
| 494 | |
| 495 | // Prepend magic prefix |
| 496 | let mut result = Vec::with_capacity(EVENTLOG_GZIP_MAGIC.len() + compressed.len()); |
| 497 | result.extend_from_slice(EVENTLOG_GZIP_MAGIC); |
| 498 | result.extend_from_slice(&compressed); |
| 499 | Ok(result) |
| 500 | } |
| 501 | |
| 502 | /// Decompress a certificate extension value |
| 503 | pub fn decompress_ext_value(data: &[u8]) -> Result<Vec<u8>> { |