Module keys

Source
Expand description

Module to encode/decode cose-keys/cose-keySets.

§cose-keySet example

use cose::keys;
use cose::algs;
use hex;

fn main() {
    let mut key = keys::CoseKey::new();
    key.kty(keys::EC2);
    key.alg(algs::ES256);
    key.crv(keys::P_256);
    key.d(hex::decode("57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3").unwrap());
    key.key_ops(vec![keys::KEY_OPS_SIGN]);

    key.encode().unwrap();

    let mut decode_key = keys::CoseKey::new();
    decode_key.bytes = key.bytes;

    decode_key.decode().unwrap();

    assert_eq!(decode_key.d, key.d);
    assert_eq!(decode_key.kty, key.kty);
    assert_eq!(decode_key.crv, key.crv);
    assert_eq!(decode_key.alg, key.alg);

    let mut key_set = keys::CoseKeySet::new();
    key_set.add_key(decode_key);
    key_set.encode();

    let mut decode_key_set = keys::CoseKeySet::new();
    decode_key_set.bytes = key_set.bytes;
    decode_key_set.decode();

    assert_eq!(decode_key_set.cose_keys[0].d, key.d);
    assert_eq!(decode_key_set.cose_keys[0].kty, key.kty);
    assert_eq!(decode_key_set.cose_keys[0].crv, key.crv);
    assert_eq!(decode_key_set.cose_keys[0].alg, key.alg);
}

Structs§

CoseKey
cose-key structure.
CoseKeySet
cose-keySet structure.

Constants§

ALG
BASE_IV
CRV_K
D
DI
DP
DQ
E
EC2
ED448
ED25519
KEY_OPS
KEY_OPS_DECRYPT
KEY_OPS_DERIVE
KEY_OPS_DERIVE_BITS
KEY_OPS_ENCRYPT
KEY_OPS_MAC
KEY_OPS_MAC_VERIFY
KEY_OPS_SIGN
KEY_OPS_UNWRAP
KEY_OPS_VERIFY
KEY_OPS_WRAP
KID
KTY
N
OKP
OTHER
P
P_256
P_384
P_521
Q
QINV
RESERVED
RI
RSA
RSA_D
SECP256K1
SYMMETRIC
TI
X
X448
X25519
Y