package org.openecard.mdlw.sal.cryptoki;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import java.util.Arrays;
import java.util.List;
/**
 * <i>native declaration : pkcs11_v2.40/pkcs11t.h</i><br>
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>.
 */
public class CK_TOKEN_INFO extends Structure {
	/**
	 * blank padded<br>
	 * C type : CK_UTF8CHAR[32]
	 */
	public byte[] label = new byte[32];
	public byte[] getLabel() {
		return label;
	}
	public void setLabel(byte label[]) {
		this.label = label;
	}
	/**
	 * blank padded<br>
	 * C type : CK_UTF8CHAR[32]
	 */
	public byte[] manufacturerID = new byte[32];
	public byte[] getManufacturerID() {
		return manufacturerID;
	}
	public void setManufacturerID(byte manufacturerID[]) {
		this.manufacturerID = manufacturerID;
	}
	/**
	 * blank padded<br>
	 * C type : CK_UTF8CHAR[16]
	 */
	public byte[] model = new byte[16];
	public byte[] getModel() {
		return model;
	}
	public void setModel(byte model[]) {
		this.model = model;
	}
	/**
	 * blank padded<br>
	 * C type : CK_CHAR[16]
	 */
	public byte[] serialNumber = new byte[16];
	public byte[] getSerialNumber() {
		return serialNumber;
	}
	public void setSerialNumber(byte serialNumber[]) {
		this.serialNumber = serialNumber;
	}
	/**
	 * see below<br>
	 * C type : CK_FLAGS
	 */
	public NativeLong flags;
	public NativeLong getFlags() {
		return flags;
	}
	public void setFlags(NativeLong flags) {
		this.flags = flags;
	}
	/**
	 * max open sessions<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulMaxSessionCount;
	public NativeLong getUlMaxSessionCount() {
		return ulMaxSessionCount;
	}
	public void setUlMaxSessionCount(NativeLong ulMaxSessionCount) {
		this.ulMaxSessionCount = ulMaxSessionCount;
	}
	/**
	 * sess. now open<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulSessionCount;
	public NativeLong getUlSessionCount() {
		return ulSessionCount;
	}
	public void setUlSessionCount(NativeLong ulSessionCount) {
		this.ulSessionCount = ulSessionCount;
	}
	/**
	 * max R/W sessions<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulMaxRwSessionCount;
	public NativeLong getUlMaxRwSessionCount() {
		return ulMaxRwSessionCount;
	}
	public void setUlMaxRwSessionCount(NativeLong ulMaxRwSessionCount) {
		this.ulMaxRwSessionCount = ulMaxRwSessionCount;
	}
	/**
	 * R/W sess. now open<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulRwSessionCount;
	public NativeLong getUlRwSessionCount() {
		return ulRwSessionCount;
	}
	public void setUlRwSessionCount(NativeLong ulRwSessionCount) {
		this.ulRwSessionCount = ulRwSessionCount;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulMaxPinLen;
	public NativeLong getUlMaxPinLen() {
		return ulMaxPinLen;
	}
	public void setUlMaxPinLen(NativeLong ulMaxPinLen) {
		this.ulMaxPinLen = ulMaxPinLen;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulMinPinLen;
	public NativeLong getUlMinPinLen() {
		return ulMinPinLen;
	}
	public void setUlMinPinLen(NativeLong ulMinPinLen) {
		this.ulMinPinLen = ulMinPinLen;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulTotalPublicMemory;
	public NativeLong getUlTotalPublicMemory() {
		return ulTotalPublicMemory;
	}
	public void setUlTotalPublicMemory(NativeLong ulTotalPublicMemory) {
		this.ulTotalPublicMemory = ulTotalPublicMemory;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulFreePublicMemory;
	public NativeLong getUlFreePublicMemory() {
		return ulFreePublicMemory;
	}
	public void setUlFreePublicMemory(NativeLong ulFreePublicMemory) {
		this.ulFreePublicMemory = ulFreePublicMemory;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulTotalPrivateMemory;
	public NativeLong getUlTotalPrivateMemory() {
		return ulTotalPrivateMemory;
	}
	public void setUlTotalPrivateMemory(NativeLong ulTotalPrivateMemory) {
		this.ulTotalPrivateMemory = ulTotalPrivateMemory;
	}
	/**
	 * in bytes<br>
	 * C type : CK_ULONG
	 */
	public NativeLong ulFreePrivateMemory;
	public NativeLong getUlFreePrivateMemory() {
		return ulFreePrivateMemory;
	}
	public void setUlFreePrivateMemory(NativeLong ulFreePrivateMemory) {
		this.ulFreePrivateMemory = ulFreePrivateMemory;
	}
	/**
	 * version of hardware<br>
	 * C type : CK_VERSION
	 */
	public CK_VERSION hardwareVersion;
	public CK_VERSION getHardwareVersion() {
		return hardwareVersion;
	}
	public void setHardwareVersion(CK_VERSION hardwareVersion) {
		this.hardwareVersion = hardwareVersion;
	}
	/**
	 * version of firmware<br>
	 * C type : CK_VERSION
	 */
	public CK_VERSION firmwareVersion;
	public CK_VERSION getFirmwareVersion() {
		return firmwareVersion;
	}
	public void setFirmwareVersion(CK_VERSION firmwareVersion) {
		this.firmwareVersion = firmwareVersion;
	}
	/**
	 * time<br>
	 * C type : CK_CHAR[16]
	 */
	public byte[] utcTime = new byte[16];
	public byte[] getUtcTime() {
		return utcTime;
	}
	public void setUtcTime(byte utcTime[]) {
		this.utcTime = utcTime;
	}
	public CK_TOKEN_INFO() {
		super();
	}
	 protected List<String> getFieldOrder() {
		return Arrays.asList("label", "manufacturerID", "model", "serialNumber", "flags", "ulMaxSessionCount", "ulSessionCount", "ulMaxRwSessionCount", "ulRwSessionCount", "ulMaxPinLen", "ulMinPinLen", "ulTotalPublicMemory", "ulFreePublicMemory", "ulTotalPrivateMemory", "ulFreePrivateMemory", "hardwareVersion", "firmwareVersion", "utcTime");
	}
	public CK_TOKEN_INFO(Pointer peer) {
		super(peer);
	}
	public static class ByReference extends CK_TOKEN_INFO implements Structure.ByReference {
		
	};
	public static class ByValue extends CK_TOKEN_INFO implements Structure.ByValue {
		
	};
}
