/// <summary> /// Initializes a token /// </summary> /// <param name="soPin">SO's initial PIN</param> /// <param name="label">Label of the token</param> public void InitToken(string soPin, string label) { byte[] soPinValue = null; NativeULong soPinValueLen = 0; if (soPin != null) { soPinValue = ConvertUtils.Utf8StringToBytes(soPin); soPinValueLen = NativeLongUtils.ConvertFromInt32(soPinValue.Length); } byte[] tokenLabel = ConvertUtils.Utf8StringToBytes(label, 32, 0x20); CKR rv = _p11.C_InitToken(_slotId, soPinValue, soPinValueLen, tokenLabel); if (rv != CKR.CKR_OK) { throw new Pkcs11Exception("C_InitToken", rv); } }