Subject: [jose] Updated table of platform support for JWA Algorithms

From: Mike Jones <[email-masked]>
Date: Wed, 25 Jul 2012 19:23:02 +0000

As discussed at the W3C WebCrypto working group meeting today.

                                                            -- Mike

Usage

Param Name

Param Val

Description

.NET

OSX

iOS

Java JCA

BouncyCastle

Android

PHP

PHPSecLib

Python

M2Crypto

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

YES

JWS/JWE

alg/int

HS384

HMAC w/ SHA-384 hash

YES

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

YES

JWS

alg

RS256

RSA w/ SHA-256 hash

YES

YES

YES

YES

YES

YES

NO

YES

NO

YES

YES

YES

YES

YES

JWS

alg

RS384

RSA w/ SHA-384 hash

YES

YES

YES

YES

YES

YES

NO

YES

NO

YES

YES

YES

YES

YES

JWS

alg

RS512

RSA w/ SHA-512 hash

YES

YES

YES

YES

YES

YES

NO

YES

NO

YES

YES

YES

YES

YES

JWS

alg

ES256

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

YES

YES

NO

YES?

YES

YES

NO

NO

NO

YES

NO

YES

YES

JWS

alg

ES384

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

YES

YES

NO

YES?

YES

YES

NO

NO

NO

YES

NO

YES

YES

JWS

alg

ES512

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

YES

YES

NO

YES?

YES

YES

NO

NO

NO

YES

NO

YES

YES

JWE

alg

RSA1_5

RSAES-PKCS1-V1_5

YES

YES

YES

YES

YES

YES

YES

YES

NO

YES

YES

YES

YES

JWE

alg

RSA-OAEP

RSAES OAEP

YES

YES?

YES

YES

YES

YES

NO

YES

NO

YES

YES

YES

YES

JWE

alg

ECDH-ES

Elliptic Curve Diffie-Hellman Ephemeral Static

NO*

NO?

NO

YES*

YES*

YES*

NO

NO

NO

YES?

NO

YES

YES

JWE

alg

A128KW

AES Key Wrap w/ 128 bit key

NO

YES

YES

YES

YES

NO

NO

NO

YES

YES

YES?

YES?

JWE

alg

A256KW

AES Key Wrap w/ 256 bit key

NO

YES

YES

YES

YES

NO

NO

NO

YES

YES

YES?

YES?

JWE

enc

A128CBC

AES CBC w/ 128 bit key

YES*

YES

YES*

YES*

YES*

YES*

YES*

NO

YES*

YES*

YES*

YES*

JWE

enc

A256CBC

AES CBC w/ 256 bit key

YES*

YES

YES*

YES*

YES*

YES*

YES*

NO

YES*

YES*

YES*

YES*

JWE

enc

A128GCM

AES GCM w/ 128 bit key

NO

NO?

NO

NO

YES

YES

NO

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?

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

YES* - Supported but other non-supported code required (Concat KDF)

Android uses BouncyCastle

NO - Not supported in library/platform

PHPSecLib is a crypto lib for PHP

NO* - Not supported in the specified configuration (w/ Concat KDF)

M2Crypto is a crypto lib for Python

(blank) - Unknown

PyCrypto is a crypto lib for Python

? - Answer is a first impression but requires more research

PHP version 5.2

PHPSecLib version 0.3.0

PyCrypto version 2.6

Ruby 1.9.3 with ruby-openssl

Java 7

OS X 10.6 (Snow Leopard)