<commit_before>declare module "pkcs11" {

    type Handle = number;

    interface Version {
        major: number;
        minor: number;
    }

    interface ModuleInfo {
        cryptokiVersion: Version;
        manufacturerID: string;
        flags: number;
        libraryDescription: string;
        libraryVersion: Version;
    }

    interface SlotInfo {
        slotDescription: string;
        manufacturerID: string;
        flags: number;
        hardwareVersion: Version;
        firmwareVersion: Version
    }

    interface TokenInfo {
        label: string;
        manufacturerID: string;
        model: string;
        serialNumber: string;
        flags: number;
        maxSessionCount: number;
        sessionCount: number;
        maxRwSessionCount: number;
        rwSessionCount: number;
        maxPinLen: number;
        minPinLen: number;
        hardwareVersion: Version;
        firmwareVersion: Version;
        utcTime: string
    }

    interface MechanismInfo {
        minKeySize: number;
        maxKeySize: number;
        flags: number;
    }

    interface SessionInfo {
        slotID: number;
        state: number;
        flags: number;
        deviceError: number;
    }

    type Template = Attribute[];

    interface Attribute {
        type: number;
        value?: number | boolean | string | Buffer; 
    }

    interface Mechanism {
        mechanism: number;
        parameter: Buffer | ECDH1;
    }

    interface ECDH1 {
        kdf: number;
        sharedData?: Buffer;
        publicData: Buffer;
    }

    interface KeyPair {
        privateKey: Handle,
        publicKey: Handle,
    }

    export class PKCS11 {
        load(path: string): void;
        C_Initialize(): void;
        C_Finalize(): void;
        C_GetInfo(): ModuleInfo;
        C_GetSlotList(tokenPresent?: boolean): Handle[];
        C_GetSlotInfo(slot: Handle): SlotInfo;
        C_GetTokenInfo(slot: Handle): TokenInfo;
        C_InitToken(slot: Handle, pin?: string): string;
        C_GetMechanismList(slot: Handle): void;
        C_GetMechanismInfo(slot: Handle, mech: Handle): MechanismInfo;
        C_OpenSession(slot: Handle, flags: number): Handle;
        C_CloseSession(session: Handle);
        C_CloseAllSessions(slot: Handle);
        C_GetSessionInfo(session: Handle): SessionInfo;
        C_InitPIN(session: Handle, pin?: string)
        C_SetPIN(session: Handle, oldPin: string, newPin: string);
        C_Login(session: Handle, userType: number, pin?: string);
        C_Logout(session: Handle);
        C_CreateObject(session: Handle, template: Template): Handle;
        C_CopyObject(session: Handle, object: Handle, template: Template);
        C_DestroyObject(session: Handle, object: Handle);
        C_GetObjectSize(session: Handle, object: Handle): number;
        C_FindObjectsInit(session: Handle, template: Template);
        C_FindObjects(session: Handle): Template;
        C_FindObjectsFinal(session: Handle);
        C_GetAttributeValue(session: Handle, object: Handle, template: Template): Template;
        C_SetAttributeValue(session: Handle, object: Handle, template: Template);
        C_EncryptInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Encrypt(): Buffer;
        C_EncryptUpdate(session: Handle, inData: Buffer, outData: Buffer): Buffer;
        C_EncryptFinal(session: Handle, outData: Buffer): Buffer;
        C_DecryptInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Decrypt(): Buffer;
        C_DecryptUpdate(session: Handle, inData: Buffer, outData: Buffer): Buffer;
        C_DecryptFinal(session: Handle, outData: Buffer): Buffer;
        C_DigestInit(session: Handle, mechanism: Mechanism);
        // C_Digest(): Buffer;
        C_DigestUpdate(session: Handle, inData: Buffer);
        C_DigestFinal(session: Handle, outData: Buffer): Buffer;
        // C_DigestKey();
        C_SignInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Sign();
        C_SignUpdate(session: Handle, inData: Buffer);
        C_SignFinal(session: Handle, outData: Buffer): Buffer;
        // C_SignRecoverInit();
        // C_SignRecover();
        C_VerifyInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Verify();
        C_VerifyUpdate(session: Handle, inData: Buffer);
        C_VerifyFinal(session: Handle, signature: Buffer);
        // C_VerifyRecoverInit();
        // C_VerifyRecover();
        C_GenerateKey(session: Handle, mechanism: Mechanism, template: Template): Handle;
        C_GenerateKeyPair(session: Handle, mechanism: Mechanism, publicTmpl: Template, privateTmpl: Template): KeyPair;
        // C_WrapKey();
        // C_UnwrapKey();
        C_DeriveKey(session: Handle, mechanism: Mechanism, template: Template, key: Handle): Handle;
        C_SeedRandom(session: Handle, buf: Buffer): Buffer;
        C_GenerateRandom(session: Handle, buf: Buffer): Buffer;
    }

}<commit_msg>Add CK constants<commit_after>declare module "pkcs11" {

    type Handle = number;

    interface Version {
        major: number;
        minor: number;
    }

    interface ModuleInfo {
        cryptokiVersion: Version;
        manufacturerID: string;
        flags: number;
        libraryDescription: string;
        libraryVersion: Version;
    }

    interface SlotInfo {
        slotDescription: string;
        manufacturerID: string;
        flags: number;
        hardwareVersion: Version;
        firmwareVersion: Version
    }

    interface TokenInfo {
        label: string;
        manufacturerID: string;
        model: string;
        serialNumber: string;
        flags: number;
        maxSessionCount: number;
        sessionCount: number;
        maxRwSessionCount: number;
        rwSessionCount: number;
        maxPinLen: number;
        minPinLen: number;
        hardwareVersion: Version;
        firmwareVersion: Version;
        utcTime: string
    }

    interface MechanismInfo {
        minKeySize: number;
        maxKeySize: number;
        flags: number;
    }

    interface SessionInfo {
        slotID: number;
        state: number;
        flags: number;
        deviceError: number;
    }

    type Template = Attribute[];

    interface Attribute {
        type: number;
        value?: number | boolean | string | Buffer;
    }

    interface Mechanism {
        mechanism: number;
        parameter: Buffer | ECDH1;
    }

    interface ECDH1 {
        kdf: number;
        sharedData?: Buffer;
        publicData: Buffer;
    }

    interface KeyPair {
        privateKey: Handle,
        publicKey: Handle,
    }

    export class PKCS11 {
        load(path: string): void;
        C_Initialize(): void;
        C_Finalize(): void;
        C_GetInfo(): ModuleInfo;
        C_GetSlotList(tokenPresent?: boolean): Handle[];
        C_GetSlotInfo(slot: Handle): SlotInfo;
        C_GetTokenInfo(slot: Handle): TokenInfo;
        C_InitToken(slot: Handle, pin?: string): string;
        C_GetMechanismList(slot: Handle): void;
        C_GetMechanismInfo(slot: Handle, mech: Handle): MechanismInfo;
        C_OpenSession(slot: Handle, flags: number): Handle;
        C_CloseSession(session: Handle);
        C_CloseAllSessions(slot: Handle);
        C_GetSessionInfo(session: Handle): SessionInfo;
        C_InitPIN(session: Handle, pin?: string)
        C_SetPIN(session: Handle, oldPin: string, newPin: string);
        C_Login(session: Handle, userType: number, pin?: string);
        C_Logout(session: Handle);
        C_CreateObject(session: Handle, template: Template): Handle;
        C_CopyObject(session: Handle, object: Handle, template: Template);
        C_DestroyObject(session: Handle, object: Handle);
        C_GetObjectSize(session: Handle, object: Handle): number;
        C_FindObjectsInit(session: Handle, template: Template);
        C_FindObjects(session: Handle): Template;
        C_FindObjectsFinal(session: Handle);
        C_GetAttributeValue(session: Handle, object: Handle, template: Template): Template;
        C_SetAttributeValue(session: Handle, object: Handle, template: Template);
        C_EncryptInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Encrypt(): Buffer;
        C_EncryptUpdate(session: Handle, inData: Buffer, outData: Buffer): Buffer;
        C_EncryptFinal(session: Handle, outData: Buffer): Buffer;
        C_DecryptInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Decrypt(): Buffer;
        C_DecryptUpdate(session: Handle, inData: Buffer, outData: Buffer): Buffer;
        C_DecryptFinal(session: Handle, outData: Buffer): Buffer;
        C_DigestInit(session: Handle, mechanism: Mechanism);
        // C_Digest(): Buffer;
        C_DigestUpdate(session: Handle, inData: Buffer);
        C_DigestFinal(session: Handle, outData: Buffer): Buffer;
        // C_DigestKey();
        C_SignInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Sign();
        C_SignUpdate(session: Handle, inData: Buffer);
        C_SignFinal(session: Handle, outData: Buffer): Buffer;
        // C_SignRecoverInit();
        // C_SignRecover();
        C_VerifyInit(session: Handle, mechanism: Mechanism, key: Handle);
        // C_Verify();
        C_VerifyUpdate(session: Handle, inData: Buffer);
        C_VerifyFinal(session: Handle, signature: Buffer);
        // C_VerifyRecoverInit();
        // C_VerifyRecover();
        C_GenerateKey(session: Handle, mechanism: Mechanism, template: Template): Handle;
        C_GenerateKeyPair(session: Handle, mechanism: Mechanism, publicTmpl: Template, privateTmpl: Template): KeyPair;
        // C_WrapKey();
        // C_UnwrapKey();
        C_DeriveKey(session: Handle, mechanism: Mechanism, template: Template, key: Handle): Handle;
        C_SeedRandom(session: Handle, buf: Buffer): Buffer;
        C_GenerateRandom(session: Handle, buf: Buffer): Buffer;
        
        // Attributes
        CKA_CLASS: number;
        CKA_TOKEN: number;
        CKA_PRIVATE: number;
        CKA_LABEL: number;
        CKA_APPLICATION: number;
        CKA_VALUE: number;
        CKA_OBJECT_ID: number;
        CKA_CERTIFICATE_TYPE: number;
        CKA_ISSUER: number;
        CKA_SERIAL_NUMBER: number;
        CKA_AC_ISSUER: number;
        CKA_OWNER: number;
        CKA_ATTR_TYPES: number;
        CKA_TRUSTED: number;
        CKA_CERTIFICATE_CATEGORY: number;
        CKA_JAVA_MIDP_SECURITY_DOMAIN: number;
        CKA_URL: number;
        CKA_HASH_OF_SUBJECT_PUBLIC_KEY: number;
        CKA_HASH_OF_ISSUER_PUBLIC_KEY: number;
        CKA_CHECK_VALUE: number;
        CKA_KEY_TYPE: number;
        CKA_SUBJECT: number;
        CKA_ID: number;
        CKA_SENSITIVE: number;
        CKA_ENCRYPT: number;
        CKA_DECRYPT: number;
        CKA_WRAP: number;
        CKA_UNWRAP: number;
        CKA_SIGN: number;
        CKA_SIGN_RECOVER: number;
        CKA_VERIFY: number;
        CKA_VERIFY_RECOVER: number;
        CKA_DERIVE: number;
        CKA_START_DATE: number;
        CKA_END_DATE: number;
        CKA_MODULUS: number;
        CKA_MODULUS_BITS: number;
        CKA_PUBLIC_EXPONENT: number;
        CKA_PRIVATE_EXPONENT: number;
        CKA_PRIME_1: number;
        CKA_PRIME_2: number;
        CKA_EXPONENT_1: number;
        CKA_EXPONENT_2: number;
        CKA_COEFFICIENT: number;
        CKA_PRIME: number;
        CKA_SUBPRIME: number;
        CKA_BASE: number;
        CKA_PRIME_BITS: number;
        CKA_SUBPRIME_BITS: number;
        CKA_SUB_PRIME_BITS: number;
        CKA_VALUE_BITS: number;
        CKA_VALUE_LEN: number;
        CKA_EXTRACTABLE: number;
        CKA_LOCAL: number;
        CKA_NEVER_EXTRACTABLE: number;
        CKA_ALWAYS_SENSITIVE: number;
        CKA_KEY_GEN_MECHANISM: number;
        CKA_MODIFIABLE: number;
        CKA_ECDSA_PARAMS: number;
        CKA_EC_PARAMS: number;
        CKA_EC_POINT: number;
        CKA_SECONDARY_AUTH: number;
        CKA_AUTH_PIN_FLAGS: number;
        CKA_ALWAYS_AUTHENTICATE: number;
        CKA_WRAP_WITH_TRUSTED: number;
        CKA_WRAP_TEMPLATE: number;
        CKA_UNWRAP_TEMPLATE: number;
        CKA_DERIVE_TEMPLATE: number;
        CKA_OTP_FORMAT: number;
        CKA_OTP_LENGTH: number;
        CKA_OTP_TIME_INTERVAL: number;
        CKA_OTP_USER_FRIENDLY_MODE: number;
        CKA_OTP_CHALLENGE_REQUIREMENT: number;
        CKA_OTP_TIME_REQUIREMENT: number;
        CKA_OTP_COUNTER_REQUIREMENT: number;
        CKA_OTP_PIN_REQUIREMENT: number;
        CKA_OTP_COUNTER: number;
        CKA_OTP_TIME: number;
        CKA_OTP_USER_IDENTIFIER: number;
        CKA_OTP_SERVICE_IDENTIFIER: number;
        CKA_OTP_SERVICE_LOGO: number;
        CKA_OTP_SERVICE_LOGO_TYPE: number;
        CKA_GOSTR3410_PARAMS: number;
        CKA_GOSTR3411_PARAMS: number;
        CKA_GOST28147_PARAMS: number;
        CKA_HW_FEATURE_TYPE: number;
        CKA_RESET_ON_INIT: number;
        CKA_HAS_RESET: number;
        CKA_PIXEL_X: number;
        CKA_PIXEL_Y: number;
        CKA_RESOLUTION: number;
        CKA_CHAR_ROWS: number;
        CKA_CHAR_COLUMNS: number;
        CKA_COLOR: number;
        CKA_BITS_PER_PIXEL: number;
        CKA_CHAR_SETS: number;
        CKA_ENCODING_METHODS: number;
        CKA_MIME_TYPES: number;
        CKA_MECHANISM_TYPE: number;
        CKA_REQUIRED_CMS_ATTRIBUTES: number;
        CKA_DEFAULT_CMS_ATTRIBUTES: number;
        CKA_SUPPORTED_CMS_ATTRIBUTES: number;
        CKA_ALLOWED_MECHANISMS: number;
        CKA_VENDOR_DEFINED: number;

        // Objects
        CKO_DATA: number;
        CKO_CERTIFICATE: number;
        CKO_PUBLIC_KEY: number;
        CKO_PRIVATE_KEY: number;
        CKO_SECRET_KEY: number;
        CKO_HW_FEATURE: number;
        CKO_DOMAIN_PARAMETERS: number;
        CKO_MECHANISM: number;
        CKO_OTP_KEY: number;
        CKO_VENDOR_DEFINED: number;

        // Key types
        CKK_RSA: number;
        CKK_DSA: number;
        CKK_DH: number;
        CKK_ECDSA: number;
        CKK_EC: number;
        CKK_X9_42_DH: number;
        CKK_KEA: number;
        CKK_GENERIC_SECRET: number;
        CKK_RC2: number;
        CKK_RC4: number;
        CKK_DES: number;
        CKK_DES2: number;
        CKK_DES3: number;
        CKK_CAST: number;
        CKK_CAST3: number;
        CKK_CAST5: number;
        CKK_CAST128: number;
        CKK_RC5: number;
        CKK_IDEA: number;
        CKK_SKIPJACK: number;
        CKK_BATON: number;
        CKK_JUNIPER: number;
        CKK_CDMF: number;
        CKK_AES: number;
        CKK_BLOWFISH: number;
        CKK_TWOFISH: number;
        CKK_SECURID: number;
        CKK_HOTP: number;
        CKK_ACTI: number;
        CKK_CAMELLIA: number;
        CKK_ARIA: number;
        CKK_MD5_HMAC: number;
        CKK_SHA_1_HMAC: number;
        CKK_RIPEMD128_HMAC: number;
        CKK_RIPEMD160_HMAC: number;
        CKK_SHA256_HMAC: number;
        CKK_SHA384_HMAC: number;
        CKK_SHA512_HMAC: number;
        CKK_SHA224_HMAC: number;
        CKK_SEED: number;
        CKK_GOSTR3410: number;
        CKK_GOSTR3411: number;
        CKK_GOST28147: number;
        CKK_VENDOR_DEFINED: number;

        // Mechanism
        CKM_RSA_PKCS_KEY_PAIR_GEN: number;
        CKM_RSA_PKCS: number;
        CKM_RSA_9796: number;
        CKM_RSA_X_509: number;
        CKM_MD2_RSA_PKCS: number;
        CKM_MD5_RSA_PKCS: number;
        CKM_SHA1_RSA_PKCS: number;
        CKM_RIPEMD128_RSA_PKCS: number;
        CKM_RIPEMD160_RSA_PKCS: number;
        CKM_RSA_PKCS_OAEP: number;
        CKM_RSA_X9_31_KEY_PAIR_GEN: number;
        CKM_RSA_X9_31: number;
        CKM_SHA1_RSA_X9_31: number;
        CKM_RSA_PKCS_PSS: number;
        CKM_SHA1_RSA_PKCS_PSS: number;
        CKM_DSA_KEY_PAIR_GEN: number;
        CKM_DSA: number;
        CKM_DSA_SHA1: number;
        CKM_DSA_SHA224: number;
        CKM_DSA_SHA256: number;
        CKM_DSA_SHA384: number;
        CKM_DSA_SHA512: number;
        CKM_DH_PKCS_KEY_PAIR_GEN: number;
        CKM_DH_PKCS_DERIVE: number;
        CKM_X9_42_DH_KEY_PAIR_GEN: number;
        CKM_X9_42_DH_DERIVE: number;
        CKM_X9_42_DH_HYBRID_DERIVE: number;
        CKM_X9_42_MQV_DERIVE: number;
        CKM_SHA256_RSA_PKCS: number;
        CKM_SHA384_RSA_PKCS: number;
        CKM_SHA512_RSA_PKCS: number;
        CKM_SHA256_RSA_PKCS_PSS: number;
        CKM_SHA384_RSA_PKCS_PSS: number;
        CKM_SHA512_RSA_PKCS_PSS: number;
        CKM_SHA224_RSA_PKCS: number;
        CKM_SHA224_RSA_PKCS_PSS: number;
        CKM_RC2_KEY_GEN: number;
        CKM_RC2_ECB: number;
        CKM_RC2_CBC: number;
        CKM_RC2_MAC: number;
        CKM_RC2_MAC_GENERAL: number;
        CKM_RC2_CBC_PAD: number;
        CKM_RC4_KEY_GEN: number;
        CKM_RC4: number;
        CKM_DES_KEY_GEN: number;
        CKM_DES_ECB: number;
        CKM_DES_CBC: number;
        CKM_DES_MAC: number;
        CKM_DES_MAC_GENERAL: number;
        CKM_DES_CBC_PAD: number;
        CKM_DES2_KEY_GEN: number;
        CKM_DES3_KEY_GEN: number;
        CKM_DES3_ECB: number;
        CKM_DES3_CBC: number;
        CKM_DES3_MAC: number;
        CKM_DES3_MAC_GENERAL: number;
        CKM_DES3_CBC_PAD: number;
        CKM_DES3_CMAC_GENERAL: number;
        CKM_DES3_CMAC: number;
        CKM_CDMF_KEY_GEN: number;
        CKM_CDMF_ECB: number;
        CKM_CDMF_CBC: number;
        CKM_CDMF_MAC: number;
        CKM_CDMF_MAC_GENERAL: number;
        CKM_CDMF_CBC_PAD: number;
        CKM_DES_OFB64: number;
        CKM_DES_OFB8: number;
        CKM_DES_CFB64: number;
        CKM_DES_CFB8: number;
        CKM_MD2: number;
        CKM_MD2_HMAC: number;
        CKM_MD2_HMAC_GENERAL: number;
        CKM_MD5: number;
        CKM_MD5_HMAC: number;
        CKM_MD5_HMAC_GENERAL: number;
        CKM_SHA_1: number;
        CKM_SHA_1_HMAC: number;
        CKM_SHA_1_HMAC_GENERAL: number;
        CKM_RIPEMD128: number;
        CKM_RIPEMD128_HMAC: number;
        CKM_RIPEMD128_HMAC_GENERAL: number;
        CKM_RIPEMD160: number;
        CKM_RIPEMD160_HMAC: number;
        CKM_RIPEMD160_HMAC_GENERAL: number;
        CKM_SHA256: number;
        CKM_SHA256_HMAC: number;
        CKM_SHA256_HMAC_GENERAL: number;
        CKM_SHA224: number;
        CKM_SHA224_HMAC: number;
        CKM_SHA224_HMAC_GENERAL: number;
        CKM_SHA384: number;
        CKM_SHA384_HMAC: number;
        CKM_SHA384_HMAC_GENERAL: number;
        CKM_SHA512: number;
        CKM_SHA512_HMAC: number;
        CKM_SHA512_HMAC_GENERAL: number;
        CKM_SECURID_KEY_GEN: number;
        CKM_SECURID: number;
        CKM_HOTP_KEY_GEN: number;
        CKM_HOTP: number;
        CKM_ACTI: number;
        CKM_ACTI_KEY_GEN: number;
        CKM_CAST_KEY_GEN: number;
        CKM_CAST_ECB: number;
        CKM_CAST_CBC: number;
        CKM_CAST_MAC: number;
        CKM_CAST_MAC_GENERAL: number;
        CKM_CAST_CBC_PAD: number;
        CKM_CAST3_KEY_GEN: number;
        CKM_CAST3_ECB: number;
        CKM_CAST3_CBC: number;
        CKM_CAST3_MAC: number;
        CKM_CAST3_MAC_GENERAL: number;
        CKM_CAST3_CBC_PAD: number;
        CKM_CAST5_KEY_GEN: number;
        CKM_CAST128_KEY_GEN: number;
        CKM_CAST5_ECB: number;
        CKM_CAST128_ECB: number;
        CKM_CAST5_CBC: number;
        CKM_CAST128_CBC: number;
        CKM_CAST5_MAC: number;
        CKM_CAST128_MAC: number;
        CKM_CAST5_MAC_GENERAL: number;
        CKM_CAST128_MAC_GENERAL: number;
        CKM_CAST5_CBC_PAD: number;
        CKM_CAST128_CBC_PAD: number;
        CKM_RC5_KEY_GEN: number;
        CKM_RC5_ECB: number;
        CKM_RC5_CBC: number;
        CKM_RC5_MAC: number;
        CKM_RC5_MAC_GENERAL: number;
        CKM_RC5_CBC_PAD: number;
        CKM_IDEA_KEY_GEN: number;
        CKM_IDEA_ECB: number;
        CKM_IDEA_CBC: number;
        CKM_IDEA_MAC: number;
        CKM_IDEA_MAC_GENERAL: number;
        CKM_IDEA_CBC_PAD: number;
        CKM_GENERIC_SECRET_KEY_GEN: number;
        CKM_CONCATENATE_BASE_AND_KEY: number;
        CKM_CONCATENATE_BASE_AND_DATA: number;
        CKM_CONCATENATE_DATA_AND_BASE: number;
        CKM_XOR_BASE_AND_DATA: number;
        CKM_EXTRACT_KEY_FROM_KEY: number;
        CKM_SSL3_PRE_MASTER_KEY_GEN: number;
        CKM_SSL3_MASTER_KEY_DERIVE: number;
        CKM_SSL3_KEY_AND_MAC_DERIVE: number;
        CKM_SSL3_MASTER_KEY_DERIVE_DH: number;
        CKM_TLS_PRE_MASTER_KEY_GEN: number;
        CKM_TLS_MASTER_KEY_DERIVE: number;
        CKM_TLS_KEY_AND_MAC_DERIVE: number;
        CKM_TLS_MASTER_KEY_DERIVE_DH: number;
        CKM_TLS_PRF: number;
        CKM_SSL3_MD5_MAC: number;
        CKM_SSL3_SHA1_MAC: number;
        CKM_MD5_KEY_DERIVATION: number;
        CKM_MD2_KEY_DERIVATION: number;
        CKM_SHA1_KEY_DERIVATION: number;
        CKM_SHA256_KEY_DERIVATION: number;
        CKM_SHA384_KEY_DERIVATION: number;
        CKM_SHA512_KEY_DERIVATION: number;
        CKM_SHA224_KEY_DERIVATION: number;
        CKM_PBE_MD2_DES_CBC: number;
        CKM_PBE_MD5_DES_CBC: number;
        CKM_PBE_MD5_CAST_CBC: number;
        CKM_PBE_MD5_CAST3_CBC: number;
        CKM_PBE_MD5_CAST5_CBC: number;
        CKM_PBE_MD5_CAST128_CBC: number;
        CKM_PBE_SHA1_CAST5_CBC: number;
        CKM_PBE_SHA1_CAST128_CBC: number;
        CKM_PBE_SHA1_RC4_128: number;
        CKM_PBE_SHA1_RC4_40: number;
        CKM_PBE_SHA1_DES3_EDE_CBC: number;
        CKM_PBE_SHA1_DES2_EDE_CBC: number;
        CKM_PBE_SHA1_RC2_128_CBC: number;
        CKM_PBE_SHA1_RC2_40_CBC: number;
        CKM_PKCS5_PBKD2: number;
        CKM_PBA_SHA1_WITH_SHA1_HMAC: number;
        CKM_WTLS_PRE_MASTER_KEY_GEN: number;
        CKM_WTLS_MASTER_KEY_DERIVE: number;
        CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC: number;
        CKM_WTLS_PRF: number;
        CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE: number;
        CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE: number;
        CKM_KEY_WRAP_LYNKS: number;
        CKM_KEY_WRAP_SET_OAEP: number;
        CKM_CAMELLIA_KEY_GEN: number;
        CKM_CAMELLIA_ECB: number;
        CKM_CAMELLIA_CBC: number;
        CKM_CAMELLIA_MAC: number;
        CKM_CAMELLIA_MAC_GENERAL: number;
        CKM_CAMELLIA_CBC_PAD: number;
        CKM_CAMELLIA_ECB_ENCRYPT_DATA: number;
        CKM_CAMELLIA_CBC_ENCRYPT_DATA: number;
        CKM_CAMELLIA_CTR: number;
        CKM_ARIA_KEY_GEN: number;
        CKM_ARIA_ECB: number;
        CKM_ARIA_CBC: number;
        CKM_ARIA_MAC: number;
        CKM_ARIA_MAC_GENERAL: number;
        CKM_ARIA_CBC_PAD: number;
        CKM_ARIA_ECB_ENCRYPT_DATA: number;
        CKM_ARIA_CBC_ENCRYPT_DATA: number;
        CKM_SEED_KEY_GEN: number;
        CKM_SEED_ECB: number;
        CKM_SEED_CBC: number;
        CKM_SEED_MAC: number;
        CKM_SEED_MAC_GENERAL: number;
        CKM_SEED_CBC_PAD: number;
        CKM_SEED_ECB_ENCRYPT_DATA: number;
        CKM_SEED_CBC_ENCRYPT_DATA: number;
        CKM_SKIPJACK_KEY_GEN: number;
        CKM_SKIPJACK_ECB64: number;
        CKM_SKIPJACK_CBC64: number;
        CKM_SKIPJACK_OFB64: number;
        CKM_SKIPJACK_CFB64: number;
        CKM_SKIPJACK_CFB32: number;
        CKM_SKIPJACK_CFB16: number;
        CKM_SKIPJACK_CFB8: number;
        CKM_SKIPJACK_WRAP: number;
        CKM_SKIPJACK_PRIVATE_WRAP: number;
        CKM_SKIPJACK_RELAYX: number;
        CKM_KEA_KEY_PAIR_GEN: number;
        CKM_KEA_KEY_DERIVE: number;
        CKM_FORTEZZA_TIMESTAMP: number;
        CKM_BATON_KEY_GEN: number;
        CKM_BATON_ECB128: number;
        CKM_BATON_ECB96: number;
        CKM_BATON_CBC128: number;
        CKM_BATON_COUNTER: number;
        CKM_BATON_SHUFFLE: number;
        CKM_BATON_WRAP: number;
        CKM_ECDSA_KEY_PAIR_GEN: number;
        CKM_EC_KEY_PAIR_GEN: number;
        CKM_ECDSA: number;
        CKM_ECDSA_SHA1: number;
        CKM_ECDSA_SHA224: number;
        CKM_ECDSA_SHA256: number;
        CKM_ECDSA_SHA384: number;
        CKM_ECDSA_SHA512: number;
        CKM_ECDH1_DERIVE: number;
        CKM_ECDH1_COFACTOR_DERIVE: number;
        CKM_ECMQV_DERIVE: number;
        CKM_JUNIPER_KEY_GEN: number;
        CKM_JUNIPER_ECB128: number;
        CKM_JUNIPER_CBC128: number;
        CKM_JUNIPER_COUNTER: number;
        CKM_JUNIPER_SHUFFLE: number;
        CKM_JUNIPER_WRAP: number;
        CKM_FASTHASH: number;
        CKM_AES_KEY_GEN: number;
        CKM_AES_ECB: number;
        CKM_AES_CBC: number;
        CKM_AES_MAC: number;
        CKM_AES_MAC_GENERAL: number;
        CKM_AES_CBC_PAD: number;
        CKM_AES_CTR: number;
        CKM_AES_CTS: number;
        CKM_AES_CMAC: number;
        CKM_AES_CMAC_GENERAL: number;
        CKM_BLOWFISH_KEY_GEN: number;
        CKM_BLOWFISH_CBC: number;
        CKM_TWOFISH_KEY_GEN: number;
        CKM_TWOFISH_CBC: number;
        CKM_AES_GCM: number;
        CKM_AES_CCM: number;
        CKM_AES_KEY_WRAP: number;
        CKM_AES_KEY_WRAP_PAD: number;
        CKM_BLOWFISH_CBC_PAD: number;
        CKM_TWOFISH_CBC_PAD: number;
        CKM_DES_ECB_ENCRYPT_DATA: number;
        CKM_DES_CBC_ENCRYPT_DATA: number;
        CKM_DES3_ECB_ENCRYPT_DATA: number;
        CKM_DES3_CBC_ENCRYPT_DATA: number;
        CKM_AES_ECB_ENCRYPT_DATA: number;
        CKM_AES_CBC_ENCRYPT_DATA: number;
        CKM_GOSTR3410_KEY_PAIR_GEN: number;
        CKM_GOSTR3410: number;
        CKM_GOSTR3410_WITH_GOSTR3411: number;
        CKM_GOSTR3410_KEY_WRAP: number;
        CKM_GOSTR3410_DERIVE: number;
        CKM_GOSTR3411: number;
        CKM_GOSTR3411_HMAC: number;
        CKM_GOST28147_KEY_GEN: number;
        CKM_GOST28147_ECB: number;
        CKM_GOST28147: number;
        CKM_GOST28147_MAC: number;
        CKM_GOST28147_KEY_WRAP: number;
        CKM_DSA_PARAMETER_GEN: number;
        CKM_DH_PKCS_PARAMETER_GEN: number;
        CKM_X9_42_DH_PARAMETER_GEN: number;
        CKM_AES_OFB: number;
        CKM_AES_CFB64: number;
        CKM_AES_CFB8: number;
        CKM_AES_CFB128: number;
        CKM_RSA_PKCS_TPM_1_1: number;
        CKM_RSA_PKCS_OAEP_TPM_1_1: number;
        CKM_VENDOR_DEFINED: number;
    }


}
{'fraction_non_alphanumeric': 0.07448168959503972, 'fraction_numerical': 0.017554737453981787, 'mean_word_length': 2.5379764189744995, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3039756', 'n_tokens_mistral': 10035, 'n_tokens_neox': 9205, 'n_words': 1621}