как создать конечную точку URL-адреса для получения лицензии с помощью Springboot из ключа данных эластичного транскодера aws?

Я не выбрал хранилище при перекодировании аудиофайла с помощью эластичного транскодера aws. теперь у меня есть ключ шифрования - xxxxxxxxxxxxxxxxx Ключ шифрования MD5- xxxxxxxxxxxxx Вектор инициализации шифрования - xxxxxxxxxxx

поэтому я использовал awskms для расшифровки ключа шифрования, используя этот код

public ByteBuffer decryptAes(String aes) {

    Map<String, String> enccontext = new HashMap<>();
    enccontext.put("service", "elastictranscoder.amazonaws.com");
    ByteBuffer encrypted = getBytebuffer(Base64.getDecoder().decode(aes));

    DecryptRequest reqq = new DecryptRequest().withCiphertextBlob(encrypted).withEncryptionContext(enccontext);

    ByteBuffer buf = awskms.decrypt(reqq).withKeyId(keyId).getPlaintext();

    return buf;
}

и у меня есть файл m3u8 с ключом #EXT-X-KEY:METHOD=AES-128,URI=https://[mysite]/api/public/amazoncode,IV=0xdbe2882930b143e62b3e6e587a2269f8

поэтому я запутался в том, как мне отправить ключ дешифрования на m3u8? У меня это есть до сих пор, но, похоже, это не работает.

// this is the endpoint for https://[mysite]/api/public/amazoncode
@GetMapping(value = "amazoncode")
public ByteBuffer getAmazonCode(){

   return amazonClient.decryptAes([the encryption code that i got from amazon]);
}

так что же является подходящим телом ответа для отправки расшифрованного байтового буфера, чтобы мой m3u8 мог начать воспроизведение, получив ключ данных дешифрования с моей конечной точки?


person Micky Sisay    schedule 11.09.2020    source источник


Ответы (1)


Для тех, кто сталкивается с теми же проблемами, что и я, я понял это через некоторое время, все, что мне нужно было сделать, это после получения byteBuffer преобразовать его во входной поток и создать из него ключевой файл. и сделайте его доступным для загрузки через URL-адрес получения лицензии. вот код:

         @GetMapping(value = "amazoncode",produces = MediaType.APPLICATION_OCTET_STREAM)
public void getAmazonCode( HttpServletResponse response){
    response.setHeader("Content-Disposition", "attachment; filename=\"mmm.key\"");
    response.setContentType("application/key");
       //this will return the decrypted data key 
       ByteBuffer b =amazonClient.decryptAes([the encryption key]);
    InputStream targetStream = new ByteArrayInputStream(b.array());
    try {
        IOUtils.copy(targetStream, response.getOutputStream());
    }catch (Exception e){
        System.out.println(e);
    }

и теперь это работает как шарм.

person Micky Sisay    schedule 11.09.2020