Search code examples
azureazure-media-services

Azure Media Services v2 to v3 Upgrade - Custom Key Delivery Service: how to provide Clear Key Value


I am trying to upgrade an Azure Media Services v2 implementation to v3 which uses a Custom Key Delivery Service mentioned here to v3. Other than this section and samples from the REST API section, I have found this to be largely undocumented but I believe I have figured out mostly everything, however on the actual Delivery of the Key I am wondering if the format I am returning is in the correct format (I cannot find this easily anywhere). It seems that the Video Player is not working even though I see the request come through and getting sent back out.

Do I return the key in ByteArray format as seen in my v3 example below?

Media Services v2 Implementation

    private HttpResponseMessage GetKeyHttpResponse(IContentKey key)
    {
        var res = Request.CreateResponse(HttpStatusCode.OK);
        res.Content = new ByteArrayContent(key.GetClearKeyValue());

        return res;
    }

Media Services v3 Attempt

    private HttpResponseMessage GetKeyHttpResponse(StreamingLocatorContentKey key)
    {
        var res = Request.CreateResponse(HttpStatusCode.OK);
        res.Content = new ByteArrayContent(Encoding.ASCII.GetBytes(key.Value));

        return res;
    }

Solution

  • Many thanks to @Sanjid above, here is the working solution (tested with a Client Side Video Player).

        private HttpResponseMessage GetKeyHttpResponse(StreamingLocatorContentKey key)
        {
            var res = Request.CreateResponse(HttpStatusCode.OK);
            res.Content = new ByteArrayContent(Convert.FromBase64String(key.Value));
    
            return res;
        }