Subject: [jose] Platform support for JWA algorithms

From: Mike Jones <[email-masked]>
Date: Tue, 24 Jul 2012 04:49:59 +0000

I've been doing some investigation into the state of support for the JWA algorithms in common Web development platforms.  The attached table is the data gathered to date.

I'll be leading a discussion based upon this data during our session at IETF 84.  If any of you have more data that I should add, or believe that there are additional columns or rows we should track, please let me know.

Thanks to Roland Hedberg, Axel Nennker, Emmanuel Raviart, Nov Matake, Justin Richer, and Edmund Jay for the data they provided, based upon their implementation experiences.

                                                            -- Mike

Usage

Param Name

Param Val

Description

.NET

OSX

iOS

Java JCA

BouncyCastle

Android

PHP

PHPSecLib

Python

MCrypto2

PyCrypto

Ruby

OpenSSL

node.js

JWS/JWE

alg/int

HS256

HMAC w/ SHA-256 hash

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWS/JWE

alg/int

HS384

HMAC w/ SHA-384 hash

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWS/JWE

alg/int

HS512

HMAC w/ SHA-512 hash

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWS

alg

RS256

RSA w/ SHA-256 hash

YES

YES

YES

YES

YES

YES

NO

YES

YES

YES

YES

YES

YES

JWS

alg

RS384

RSA w/ SHA-384 hash

YES

YES

YES

YES

YES

YES

NO

YES

YES

YES

YES

YES

YES

JWS

alg

RS512

RSA w/ SHA-512 hash

YES

YES

YES

YES

YES

YES

NO

YES

YES

YES

YES

YES

YES

JWS

alg

ES256

ECDSA w/ P-256 curve and SHA-256 hash

YES

NO*

NO

NO*

YES

YES

NO

NO

YES

NO

YES

YES

JWS

alg

ES384

ECDSA w/ P-384 curve and SHA-384 hash

YES

NO*

NO

NO*

YES

YES

NO

NO

YES

NO

YES

YES

JWS

alg

ES512

ECDSA w/ P-521 curve and SHA-512 hash

YES

NO*

NO

NO*

YES

YES

NO

NO

YES

NO

YES

YES

JWE

alg

RSA1_5

RSAES-PKCS1-V1_5

YES

YES*

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWE

alg

RSA-OAEP

RSAES OAEP

YES

YES*

YES

NO

YES

YES

NO

YES

YES

YES

YES

YES

JWE

alg

ECDH-ES

Elliptic Curve Diffie-Hellman Ephemeral Static

NO*

NO

NO*

YES*

YES*

NO

NO

YES*

NO

YES

YES

JWE

alg

A128KW

AES Key Wrap w/ 128 bit key

NO

YES

YES

YES

YES

NO

NO

YES

YES

YES*

YES*

JWE

alg

A256KW

AES Key Wrap w/ 256 bit key

NO

YES

YES

YES

YES

NO

NO

YES

YES

YES*

YES*

JWE

enc

A128CBC

AES CBC w/ 128 bit key

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWE

enc

A256CBC

AES CBC w/ 256 bit key

YES

YES

YES

YES

YES

YES

YES

YES

YES

YES

JWE

enc

A128GCM

AES GCM w/ 128 bit key

NO

NO*

NO

NO

YES

YES

NO

NO

NO*

NO

YES

YES

JWE

enc

A256GCM

AES GCM w/ 256 bit key

NO

NO*

NO

NO

YES

YES

NO

NO

NO*

NO

YES

YES

JWE

kdf

CS256

Concat Key Distribution Function (KDF)

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

JWE

kdf

CS384

Concat Key Distribution Function (KDF)

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

JWE

kdf

CS512

Concat Key Distribution Function (KDF)

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

NO

YES - Support built into library/platform

BouncyCastle is a crypto lib for Java

NO - Not supported in library/platform

Android uses BouncyCastle

(blank) - Unknown

PHPSecLib is a crypto lib for PHP

* - Answer is a first impression but requires more research

MCrypto2 is a crypto lib for Python

PyCrypto is a crypto lib for Python

PHP version 5.2

PHPSecLib version 0.3.0

PyCrypto version 2.6