Supported COSE Algorithms ========================= `IANA Registry for COSE`_ lists many cryptographic algorithms for MAC, signing, and encryption. This section shows the algorithms which this library currently supports. * ✅ : Supported. * ➖ : No plan to support. COSE Key Types -------------- +-----------------+--------+-------+-------------------------------------------------------+ | Name | Status | Value | Description | +=================+========+=======+=======================================================+ | OKP | ✅ | 1 | Octet Key Pair | +-----------------+--------+-------+-------------------------------------------------------+ | EC2 | ✅ | 2 | Elliptic Curve Keys w/ x- and y-coordinate pair | +-----------------+--------+-------+-------------------------------------------------------+ | RSA | ✅ | 3 | RSA Key | +-----------------+--------+-------+-------------------------------------------------------+ | Symmetric | ✅ | 4 | Symmetric Keys | +-----------------+--------+-------+-------------------------------------------------------+ | HSS-LMS | | 5 | Public key for HSS/LMS hash-based digital signature | +-----------------+--------+-------+-------------------------------------------------------+ | WalnutDSA | | 6 | WalnutDSA public key | +-----------------+--------+-------+-------------------------------------------------------+ COSE Algorithms --------------- -65534: A128CTR, # AES-CTR w/ 128-bit key (Deprecated) -65533: A192CTR, # AES-CTR w/ 192-bit key (Deprecated) -65532: A256CTR, # AES-CTR w/ 256-bit key (Deprecated) -65531: A128CBC, # AES-CBC w/ 128-bit key (Deprecated) -65530: A192CBC, # AES-CBC w/ 192-bit key (Deprecated) -65529: A256CBC, # AES-CBC w/ 256-bit key (Deprecated) -65529: A256CBC, # AES-CBC w/ 256-bit key (Deprecated) -36: ES512, # ECDSA w/ SHA-512 (Deprecated) -35: ES384, # ECDSA w/ SHA-384 (Deprecated) -8: EdDSA, # EdDSA (Deprecated) -7: ES256, # ECDSA w/ SHA-256 (Deprecated) +------------------------+--------+-------+-----------------------------------------------------+ | Name | Status | Value | Description | +========================+========+=======+=====================================================+ | RS1 | ➖ | -65535| RSASSA-PKCS1-v1_5 using SHA-1 | +------------------------+--------+-------+-----------------------------------------------------+ | A128CTR | ✅ | -65534| AES-CTR w/ 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A192CTR | ✅ | -65533| AES-CTR w/ 192-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A256CTR | ✅ | -65532| AES-CTR w/ 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A128CBC | ✅ | -65531| AES-CBC w/ 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A192CBC | ✅ | -65530| AES-CBC w/ 192-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A256CBC | ✅ | -65529| AES-CBC w/ 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ESB512 | | -268 | ECDSA using BrainpoolP512r1 curve and SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | ESB384 | | -267 | ECDSA using BrainpoolP384r1 curve and SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | ESB320 | | -266 | ECDSA using BrainpoolP320r1 curve and SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | ESB256 | | -265 | ECDSA using BrainpoolP256r1 curve and SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | WalnutDSA | | -260 | WalnutDSA signature | +------------------------+--------+-------+-----------------------------------------------------+ | RS512 | ✅ | -259 | RSASSA-PKCS1-v1_5 using SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | RS384 | ✅ | -258 | RSASSA-PKCS1-v1_5 using SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | RS256 | ✅ | -257 | RSASSA-PKCS1-v1_5 using SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | Ed448 | ✅ | -53 | EdDSA using Ed448 curve | +------------------------+--------+-------+-----------------------------------------------------+ | ESP512 | ✅ | -52 | ECDSA using P-521 curve and SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | ESP384 | ✅ | -51 | ECDSA using P-384 curve and SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | ES256K | ✅ | -47 | ECDSA using secp256k1 curve and SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | HSS-LMS | | -46 | HSS/LMS hash-based digital signature | +------------------------+--------+-------+-----------------------------------------------------+ | SHAKE256 | | -45 | SHAKE-256 512-bit Hash Value | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-512 | | -44 | SHA-2 512-bit Hash | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-384 | | -43 | SHA-2 384-bit Hash | +------------------------+--------+-------+-----------------------------------------------------+ | RSAES-OAEP w/ SHA-512 | | -42 | RSAES-OAEP w/ SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | RSAES-OAEP w/ SHA-256 | | -41 | RSAES-OAEP w/ SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | | RSAES-OAEP | | -40 | RSAES-OAEP w/ SHA-1 | | | w/ RFC 8017 default | | | | | | parameters | | | | +------------------------+--------+-------+-----------------------------------------------------+ | PS512 | ✅ | -39 | RSASSA-PSS w/ SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | PS384 | ✅ | -38 | RSASSA-PSS w/ SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | PS256 | ✅ | -37 | RSASSA-PSS w/ SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | ES512 | ✅ | -36 | ECDSA w/ SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | ES384 | ✅ | -35 | ECDSA w/ SHA-384 | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-SS + A256KW | ✅ | -34 | | ECDH SS w/ Concat KDF and AES Key Wrap | | | | | | w/ 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-SS + A192KW | ✅ | -33 | | ECDH SS w/ Concat KDF and AES Key Wrap | | | | | | w/ 192-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-SS + A128KW | ✅ | -32 | | ECDH SS w/ Concat KDF and AES Key Wrap | | | | | | w/ 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-ES + A256KW | ✅ | -31 | | ECDH ES w/ Concat KDF and AES Key Wrap | | | | | | w/ 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-ES + A192KW | ✅ | -30 | | ECDH ES w/ Concat KDF and AES Key Wrap | | | | | | w/ 192-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-ES + A128KW | ✅ | -29 | | ECDH ES w/ Concat KDF and AES Key Wrap | | | | | | w/ 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-SS + HKDF-512 | ✅ | -28 | ECDH SS w/ HKDF - generate key directly | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-SS + HKDF-256 | ✅ | -27 | ECDH SS w/ HKDF - generate key directly | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-ES + HKDF-512 | ✅ | -26 | ECDH ES w/ HKDF - generate key directly | +------------------------+--------+-------+-----------------------------------------------------+ | ECDH-ES + HKDF-256 | ✅ | -25 | ECDH ES w/ HKDF - generate key directly | +------------------------+--------+-------+-----------------------------------------------------+ | Ed25519 | ✅ | -19 | EdDSA using Ed25519 curve | +------------------------+--------+-------+-----------------------------------------------------+ | SHAKE128 | | -18 | SHAKE-128 256-bit Hash Value | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-512/256 | | -17 | SHA-2 512-bit Hash truncated to 256-bits | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-256 | | -16 | SHA-2 256-bit Hash | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-256/64 | | -15 | SHA-2 256-bit Hash truncated to 64-bits | +------------------------+--------+-------+-----------------------------------------------------+ | SHA-1 | ➖ | -14 | SHA-1 Hash | +------------------------+--------+-------+-----------------------------------------------------+ | direct+HKDF-AES-256 | | -13 | Shared secret w/ AES-MAC 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | direct+HKDF-AES-128 | | -12 | Shared secret w/ AES-MAC 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | direct+HKDF-SHA-512 | ✅ | -11 | Shared secret w/ HKDF and SHA-512 | +------------------------+--------+-------+-----------------------------------------------------+ | direct+HKDF-SHA-256 | ✅ | -10 | Shared secret w/ HKDF and SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | ESP256 | ✅ | -9 | ECDSA using P-256 curve and SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | EdDSA | ✅ | -8 | EdDSA | +------------------------+--------+-------+-----------------------------------------------------+ | ES256 | ✅ | -7 | ECDSA w/ SHA-256 | +------------------------+--------+-------+-----------------------------------------------------+ | direct | ✅ | -6 | Direct use of CEK | +------------------------+--------+-------+-----------------------------------------------------+ | A256KW | ✅ | -5 | AES Key Wrap w/ 256-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A192KW | ✅ | -4 | AES Key Wrap w/ 192-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A128KW | ✅ | -3 | AES Key Wrap w/ 128-bit key | +------------------------+--------+-------+-----------------------------------------------------+ | A128GCM | ✅ | 1 | AES-GCM mode w/ 128-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | A192GCM | ✅ | 2 | AES-GCM mode w/ 192-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | A256GCM | ✅ | 3 | AES-GCM mode w/ 256-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | HMAC 256/64 | ✅ | 4 | HMAC w/ SHA-256 truncated to 64 bits | +------------------------+--------+-------+-----------------------------------------------------+ | | HMAC 256/256 | ✅ | 5 | HMAC w/ SHA-256 | | | ("HS256" can also | | | | | | be used.) | | | | +------------------------+--------+-------+-----------------------------------------------------+ | | HMAC 384/384 | ✅ | 6 | HMAC w/ SHA-384 | | | ("HS384" can also | | | | | | be used.) | | | | +------------------------+--------+-------+-----------------------------------------------------+ | | HMAC 512/512 | ✅ | 7 | HMAC w/ SHA-512 | | | ("HS512" can also | | | | | | be used.) | | | | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-16-64-128 | ✅ | 10 | | AES-CCM mode 128-bit key, 64-bit tag, | | | | | | 13-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-16-64-256 | ✅ | 11 | | AES-CCM mode 256-bit key, 64-bit tag, | | | | | | 13-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-64-64-128 | ✅ | 12 | | AES-CCM mode 128-bit key, 64-bit tag, | | | | | | 7-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-64-64-256 | ✅ | 13 | | AES-CCM mode 256-bit key, 64-bit tag, | | | | | | 7-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-MAC 128/64 | ➖ | 14 | AES-MAC 128-bit key, 64-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | AES-MAC 256/64 | ➖ | 15 | AES-MAC 256-bit key, 64-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | ChaCha20/Poly1305 | ✅ | 24 | ChaCha20/Poly1305 w/ 256-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | AES-MAC 128/128 | ➖ | 25 | AES-MAC 128-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | AES-MAC 128/128 | ➖ | 26 | AES-MAC 256-bit key, 128-bit tag | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-16-128-128 | ✅ | 30 | | AES-CCM mode 128-bit key, 128-bit tag, | | | | | | 13-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-16-128-256 | ✅ | 31 | | AES-CCM mode 256-bit key, 128-bit tag, | | | | | | 13-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-64-128-128 | ✅ | 32 | | AES-CCM mode 128-bit key, 128-bit tag, | | | | | | 7-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ | AES-CCM-64-128-256 | ✅ | 33 | | AES-CCM mode 256-bit key, 128-bit tag, | | | | | | 7-byte nonce | +------------------------+--------+-------+-----------------------------------------------------+ COSE Elliptic Curves -------------------- +----------------------+--------+-------+-------------------------------------------------------+ | Name | Status | Value | Description | +======================+========+=======+=======================================================+ | P-256 | ✅ | 1 | NIST P-256 also known as secp256r1 | +----------------------+--------+-------+-------------------------------------------------------+ | P-384 | ✅ | 2 | NIST P-384 also known as secp384r1 | +----------------------+--------+-------+-------------------------------------------------------+ | P-521 | ✅ | 3 | NIST P-521 also known as secp521r1 | +----------------------+--------+-------+-------------------------------------------------------+ | X25519 | ✅ | 4 | X25519 for use w/ ECDH only | +----------------------+--------+-------+-------------------------------------------------------+ | X448 | ✅ | 5 | X448 for use w/ ECDH only | +----------------------+--------+-------+-------------------------------------------------------+ | Ed25519 | ✅ | 6 | Ed25519 for use w/ EdDSA only | +----------------------+--------+-------+-------------------------------------------------------+ | Ed448 | ✅ | 7 | Ed448 for use w/ EdDSA only | +----------------------+--------+-------+-------------------------------------------------------+ | secp256k1 | ✅ | 8 | SECG secp256k1 curve | +----------------------+--------+-------+-------------------------------------------------------+ .. _`IANA Registry for COSE`: https://www.iana.org/assignments/cose/cose.xhtml