anchor.diff:      throw UnimplementedError('TODO: implement AES-CBC');
     }
   
  +  static Future<AesCbcSecretKey> importJsonWebKey({
  +    @required List<int> jwk,
  +    @required bool extractable,
  +    @required List<KeyUsage> usages,
  +  }) {
  +    ArgumentError.checkNotNull(jwk, 'jwk');
  +    ArgumentError.checkNotNull(extractable, 'extractable');
  +    checkAllowedUsages('AES-CBC', usages, [
  +      KeyUsage.encrypt,
  +      KeyUsage.decrypt,
  +      // KeyUsage.wrapKey,
  +      // KeyUsage.unwrapKey,
  +    ]);
  +    usages = normalizeUsages(usages);
  +
  +    throw UnimplementedError('TODO: implement AES-CBC');
  +  }
  +
     Stream<List<int>> encrypt({
       @required Stream<List<int>> data,
       @required TypedData iv,
  
positive.code:   // TODO: add unwrapKey support
  
    Future<List<int>> exportPkcs8Key();
  }
  
  abstract class RsaOaepPublicKey implements CryptoKey {
  
negative.code:   });
  
    Future<List<int>> exportPkcs8Key();
  
    Future<Map<String, Object>> exportJsonWebKey();
  }
  
  abstract class RsaPssPublicKey implements CryptoKey {
  