Использование JAXB с подписями, шифрованием и кодированием

Недавно нам поручили разработать спецификацию связи XML для наших продуктов. Некоторые из моих коллег высоко оценивают JAXB для сортировки и десортировки XML-документов. Я провел некоторое время, играя с этим, и я понимаю, откуда они берутся. Это упрощает жизнь простым XML-документам.

Теперь, чтобы поднять его на ступеньку выше. Одна из вещей, которую я хотел бы видеть в нашей коммуникационной модели «встроенной» проверки подписи для людей, которые используют ее после меня. Одна из проблем, с которой я сталкиваюсь, заключается в том, что для проверки подписи мне нужно обрабатывать соответствующий XML как байты. Итак, давайте возьмем этот пример...

<topLevel>
    <sensitiveData encoding="UTF8">
        <creditCard>
            <number>1234-1234-1234-1234</number>
            <expDate>Oct 2020</expDate>
        </creditCard>
    </sensitiveData>
    <signatureOfSensitiveData algorithm="SHA1WithRSA">VGhpc0lzQVNpZ25hdHVyZQ==</signatureOfSensitiveData>
</topLevel>

Редактировать :На самом деле я не передаю данные кредитной карты. Просто пример здесь.

Было бы здорово, если бы я мог получитьbyte[](определяется кодировкой )представления всего, что находится внутри тега «sensiveData». Я бы даже не возражал против того, чтобы снова назвать unmarshall по этому поводу byte[].

Это открывает перед нами и другие двери. На самом деле мы могли бы ввести в элементы атрибуты «сжатие» и «шифрование». Если бы мы могли обращаться с ними как с byte[], мы могли бы затем раздуть и расшифровать их, а затем передать их для повторной рассортировки.

Примечание :Я думаю, что это работает, если вы кодируете XML в base64, а затем включаете его в элемент. Но это вынуждает нас использовать base64 даже для простых документов и вводить в наши сообщения лишнее раздувание.

Любые идеи для решения этой проблемы? Я надеюсь, что мне просто не хватает чего-то базового в JAXB, и после того, как я это получу, это будет легко.

Спасибо!

6
задан Staros 2 July 2012 в 21:50
поделиться