first commit

Version 3.x.x
This commit is contained in:
VNGhostMans
2023-05-14 20:21:09 +07:00
parent a3037a8db3
commit 5ec92ee05e
1166 changed files with 1036539 additions and 0 deletions

121
utils/arm-32bit.py Normal file
View File

@@ -0,0 +1,121 @@
from idc import *
import sys
import binascii
from sets import Set
import sys
import re
p_spaces = re.compile(r'(\s+)')
# Apply fixes to IDA opcode
def ida_disasm_fix(insn_binary, insn_str):
# Remove extra spaces and tabs. Replace tabs with spaces
insn_str = p_spaces.sub(r' ', insn_str)
return insn_str
def get_insn(ea, sz):
s = ''
for i in range(0, sz):
s += chr(Byte(ea + i))
return s
def insn_write(f, insn_binary, insn_str, header):
assert len(insn_binary) != 0
s = ''
sz = len(insn_binary)
if header:
s += '{%d, "' % sz
for i in range(0, sz):
s += '\\x%02x' % ord(insn_binary[i])
s += '", "' + insn_str + '"},\n'
else:
s += binascii.hexlify(insn_binary)
s += (' %s\n' % insn_str)
f.write(s)
f.flush()
# Normalize operand (replace numeric operands with -1)
def normalize_operand(op_type, op_str):
if op_type in [o_mem, o_displ, o_imm, o_near, o_far]:
return "-1"
else:
return op_str
def is_unique(set, ea):
ot1 = GetOpType(ea, 0)
ot2 = GetOpType(ea, 1)
ot3 = GetOpType(ea, 2)
v1 = GetOpnd(ea, 0)
v2 = GetOpnd(ea, 1)
v3 = GetOpnd(ea, 2)
mnem = GetMnem(ea)
hashstr = "%s|%s|%s|%s" % (mnem,
normalize_operand(ot1, v1),
normalize_operand(ot2, v2),
normalize_operand(ot3, v3))
if hashstr in set:
return False
else:
set.add(hashstr)
return True
def iteration(f, set, ea, n, data, prev_mnem):
PatchDword(ea, data)
sz = MakeCode(ea)
if sz == 0:
return (prev_mnem, n)
str = GetDisasm(ea)
mnem = GetMnem(ea)
# if prev_mnem != mnem:
# Opcode changed, purge cache set
# set.clear()
prev_mnem = mnem
# Now we got disasm
# Remove comments
pos = str.find(';')
if pos != -1:
str = str[0:pos]
# Remove spaces at start and end
str = str.strip(' ')
if str == '':
return (prev_mnem, n)
if not is_unique(set, ea):
return (prev_mnem, n)
insn_binary = get_insn(ea, sz)
# Add unique disasms to file
str = ida_disasm_fix(insn_binary, str)
insn_write(f, insn_binary, str, False)
n += 1
if n % 10000 == 0:
print '%d opcodes processed' % n
return (prev_mnem, n)
def generate_arm32(filename):
set = Set()
ea = GetEntryPoint(GetEntryOrdinal(0))
for i in range(0, 20):
PatchByte(ea + i, i)
f = open(filename, 'wt')
n = 0
data = 0L
mnem = ''
# Do not enumerate highest 4 bits.
# Use only 0b1110 (AL) and 0b1111 (extended opcode encoding)
while data <= 0x1fffffff:
data2 = (data & 0xfffffff)
if (data & 0x10000000) == 0:
data2 |= 0xe0000000
else:
data2 |= 0xf0000000
(mnem, n) = iteration(f, set, ea, n, data2, mnem)
data += 1
f.close()
print 'Finished'
def main():
generate_arm32("./arm32-opcodes.txt")
if __name__ == "__main__":
main()

122
utils/arm-thumb.py Normal file
View File

@@ -0,0 +1,122 @@
from idc import *
import sys
import binascii
from sets import Set
import sys
import re
p_spaces = re.compile(r'(\s+)')
# Apply fixes to IDA opcode
def ida_disasm_fix(insn_binary, insn_str):
# Remove extra spaces and tabs. Replace tabs with spaces
insn_str = p_spaces.sub(r' ', insn_str)
return insn_str
def get_insn(ea, sz):
s = ''
for i in range(0, sz):
s += chr(Byte(ea + i))
return s
def insn_write(f, insn_binary, insn_str, header):
assert len(insn_binary) != 0
s = ''
sz = len(insn_binary)
if header:
s += '{%d, "' % sz
for i in range(0, sz):
s += '\\x%02x' % ord(insn_binary[i])
s += '", "' + insn_str + '"},\n'
else:
s += binascii.hexlify(insn_binary)
s += (' %s\n' % insn_str)
f.write(s)
f.flush()
# Normalize operand (replace numeric operands with -1)
def normalize_operand(op_type, op_str):
if op_type in [o_mem, o_displ, o_imm, o_near, o_far]:
return "-1"
else:
return op_str
def is_unique(set, ea):
ot1 = GetOpType(ea, 0)
ot2 = GetOpType(ea, 1)
ot3 = GetOpType(ea, 2)
v1 = GetOpnd(ea, 0)
v2 = GetOpnd(ea, 1)
v3 = GetOpnd(ea, 2)
mnem = GetMnem(ea)
hashstr = "%s|%s|%s|%s" % (mnem,
normalize_operand(ot1, v1),
normalize_operand(ot2, v2),
normalize_operand(ot3, v3))
if hashstr in set:
return False
else:
set.add(hashstr)
return True
def iteration(f, set, ea, n, data, prev_mnem):
PatchDword(ea, data)
sz = MakeCode(ea)
if sz == 0:
return (prev_mnem, n)
str = GetDisasm(ea)
mnem = GetMnem(ea)
if prev_mnem != mnem:
# Opcode changed, purge cache set
set.clear()
prev_mnem = mnem
# Now we got disasm
# Remove comments
pos = str.find(';')
if pos != -1:
str = str[0:pos]
# Remove spaces at start and end
str = str.strip(' ')
if str == '':
return (prev_mnem, n)
if not is_unique(set, ea):
return (prev_mnem, n)
insn_binary = get_insn(ea, sz)
# Add unique disasms to file
str = ida_disasm_fix(insn_binary, str)
insn_write(f, insn_binary, str, False)
n += 1
if n % 1000 == 0:
print '%d opcodes processed' % n
return (prev_mnem, n)
def generate_arm_thumb(filename):
set = Set()
ea = GetEntryPoint(GetEntryOrdinal(0))
for i in range(0, 20):
PatchByte(ea + i, i)
f = open(filename, 'wt')
data = 0L
mnem = ''
data = 0
n = 0
while data <= 0xffff:
prefix = data >> (32 - 5)
if prefix in [0x1d, 0x1e, 0x1f]:
data2 = 0
while data2 <= 0xffff:
(mnem, n) = iteration(f, set, ea, n, data | (data2 << 16), mnem)
data2 += 1
else:
mnem = iteration(f, set, ea, n, data | 0xffff0000, mnem)
data += 1
f.close()
print 'Finished'
def main():
generate_arm_thumb("./thumb-opcodes.txt")
if __name__ == "__main__":
main()

283
utils/intel-x86.py Normal file
View File

@@ -0,0 +1,283 @@
from idc import *
import sys
import binascii
from sets import Set
import sys
import re
def replace_farptr(matchobj):
s1 = matchobj.group()
return s1.replace('far ptr ', '')
def replace_ptr(matchobj):
s1 = matchobj.group()
pos = s1.rfind(' ')
assert pos != -1
return s1[0:pos] + ' [' + s1[pos+1:] + ']'
def replace_ptr2(matchobj):
s1 = matchobj.group()
pos = s1.rfind(':')
assert pos != -1
return s1[0:pos+1] + '[' + s1[pos+1:] + ']'
def replace_hex(matchobj):
nstr = matchobj.group()
assert not (nstr in ['ah', 'bh', 'ch', 'dh'])
nstr = nstr.replace('h', '')
return nstr
def repl(matchobj):
s1 = matchobj.group()
s2 = s1.replace(' ', '')
pos1 = s2.find('[')
pos2 = s2.find(']')
if pos1 == -1 or pos2 == -1:
return s1
nstr = s2[0:pos1]
nstr = nstr.replace('h', '')
num = int(nstr, 16)
hex = "%08x" % num
s3 = s2[pos1:pos2] + '+' + hex + ']'
return s3
p_seg = re.compile(r'(es:|ds:|cs:|fs:|gs:|ss:)')
p_seg_abs = re.compile(r'(es:|ds:|cs:|fs:|gs:|ss:)[0-9][0-9a-fA-F]*h')
p_farptr = re.compile(r'far\sptr\s[0-9a-fA-F]+:[0-9a-fA-F]+')
p_ptr = re.compile(r'(byte|word|dword|qword|oword|fword)\sptr\s[0-9][0-9a-fA-F]*')
p_ptr2 = re.compile(r'(byte|word|dword|qword|oword|fword)\sptr\s(es:|ds:|cs:|fs:|gs:|ss:)[0-9][0-9a-fA-F]*')
p_hex = re.compile(r'([0-9][0-9a-fA-F]*)(h|H)')
p_spaces = re.compile(r'(\s+)')
p_repl = re.compile(r'[0-9][0-9a-fA-F]*(h|H)\s*\[[^\]]+\]')
replacements = [('retn', 'ret'), ('retnw', 'ret'), ('iretw', 'iret'), ('retfw', 'retf'),
('pushfw', 'pushf'), ('popfw', 'popf'), ('pushaw', 'pusha'),
('popaw', 'popa'), ('enterw', 'enter'), ('enterw', 'enter'),
('cmova', 'cmovnbe'), ('cmovg', 'cmovnle'), ('cmovge', 'cmovnl'),
('leavew', 'leave'),
('int 3', 'int 03')]
def is_invalid_insn(insn_binary):
k = 0
while True:
b = ord(insn_binary[k])
if not(b == 0x26 or b == 0x2e or b == 0x36 or b == 0x3e or b == 0x64 or b == 0x65):
break
k += 1
if k >= len(insn_binary) - 1:
return True
b = ord(insn_binary[k])
b2 = ord(insn_binary[k + 1])
if b == 0x0f and (b2 == 0x19 or b2 == 0x24 or b2 == 0x26 or b2 == 0xa6 or b2 == 0xa7):
return True
if b == 0xcd and b2 == 0x20: #vxdcall
return True
if b == 0xd6: #setalc
return True
if b == 0x0f and b2 == 0x0d:
if k > len(insn_binary) - 2:
return True
if ord(insn_binary[k + 2]) == 0x13:
return True
return False
# Miscellaneous replacements
def misc_replacements(opcode_str):
for r_from, r_to in replacements:
if opcode_str == r_from:
opcode_str = r_to
return opcode_str
def remove_ds_prefix(insn_binary, rest_str):
pos = insn_binary.find('\x3e')
# No prefix - remove ds:
if -1 == pos:
return -1 != rest_str.find('ds:')
if pos == 0:
return True
ds_prefix = True
for i in range(0, pos):
if not (ord(insn_binary[i]) in [0x66, 0x67, 0xF0, 0xF2, 0xF3]):
ds_prefix = False
break
if ds_prefix:
return True
else:
# No prefix - remove ds
return -1 != rest_str.find('ds:')
def replace_ds_seg(matchobj):
nstr = matchobj.group()
if nstr[0:2].lower() == 'ds':
return '[' + nstr[3:] + ']'
else:
return nstr[0:3] + '[' + nstr[3:] + ']'
def replace_seg(matchobj):
nstr = matchobj.group()
if nstr[0:2].lower() == 'ds':
return '[' + nstr[3:] + ']'
else:
return nstr[0:3] + '[' + nstr[3:] + ']'
def replace_lea_seg(matchobj):
nstr = matchobj.group()
return '[' + nstr[3:] + ']'
def replace_segments(insn_binary, opcode_str, rest_str):
# Remove segments from LEA (for absolute and relative offsets)
if opcode_str.lower() == 'lea':
tmp = p_seg_abs.sub(replace_lea_seg, rest_str)
if tmp == rest_str:
return p_seg.sub('', rest_str)
else:
return tmp
# Now search for ?s:01020304, replace to ?s:[01020304] except of ds: -> [01020304]
if remove_ds_prefix(insn_binary, rest_str):
return p_seg_abs.sub(replace_ds_seg, rest_str)
else:
return p_seg_abs.sub(replace_seg, rest_str)
# Apply fixes to IDA opcode
def ida_disasm_fix(insn_binary, insn_str):
# Remove extra spaces and tabs. Replace tabs with spaces
insn_str = p_spaces.sub(r' ', insn_str)
# Avoid opcode changing
pos = insn_str.find(' ')
if pos == -1:
return misc_replacements(insn_str) # This is opcode like 'cli'
opcode_str = insn_str[0:pos]
rest_str = insn_str[pos+1:]
# remove 'small'
rest_str = rest_str.replace('small ', '')
# Transform '6050403[eax], al' to '[eax+6050403], al'
rest_str = p_repl.sub(repl, rest_str)
rest_str = replace_segments(insn_binary, opcode_str, rest_str)
# Remove 'ds:' if no 3Eh prefix found
if remove_ds_prefix(insn_binary, rest_str):
rest_str = rest_str.replace('ds:', '')
# Replace 'xmmword' to 'oword'
rest_str = rest_str.replace('xmmword', 'oword')
# Remove 'h' after hex constants
rest_str = p_hex.sub(replace_hex, rest_str)
# Transform 'ptr 012345' -> 'ptr [012345]'
rest_str = p_ptr.sub(replace_ptr, rest_str)
rest_str = p_ptr2.sub(replace_ptr2, rest_str)
# Transform 'call far ptr 1817:16151413' -> 'call 1817:16151413'
rest_str = p_farptr.sub(replace_farptr, rest_str)
opcode_str = misc_replacements(opcode_str)
return opcode_str + ' ' + rest_str
def get_insn(ea, len):
s = ''
for i in range(0, len):
s += chr(Byte(ea + i))
return s
def insn_write(f, insn_binary, insn_str, header):
assert len(insn_binary) != 0
s = ''
sz = len(insn_binary)
if header:
s += '{%d, "' % sz
for i in range(0, sz):
s += '\\x%02x' % ord(insn_binary[i])
s += '", "' + insn_str + '"},\n'
else:
s += binascii.hexlify(insn_binary)
s += (' %s\n' % insn_str)
f.write(s)
f.flush()
# Normalize operand (replace numeric operands with -1)
def normalize_operand(op_type, op_str):
if op_type in [o_mem, o_displ, o_imm, o_near, o_far]:
return "-1"
else:
return op_str
def is_unique(set, ea, insn_str, mnem):
# Consider undisassemblable opcodes as unique
if insn_str[0:2].lower() == 'db':
return True
ot1 = GetOpType(ea, 0)
ot2 = GetOpType(ea, 1)
ot3 = GetOpType(ea, 2)
v1 = GetOpnd(ea, 0)
v2 = GetOpnd(ea, 1)
v3 = GetOpnd(ea, 2)
hashstr = "%s|%s|%s|%s" % (mnem,
normalize_operand(ot1, v1),
normalize_operand(ot2, v2),
normalize_operand(ot3, v3))
if hashstr in set:
return False
else:
set.add(hashstr)
return True
def generate_x86(filename):
set = Set()
ea = GetEntryPoint(GetEntryOrdinal(0))
for i in range(0, 20):
PatchByte(ea + i, i + 0x10)
flog = open(filename + '.log', 'wt')
f = open(filename, 'wt')
n = 0
len = 0
for p0 in range(0x10, 0x110):
q0 = p0 & 0xff
set.clear() # Clear cached of opcodes (they become unrelevant)
PatchByte(ea, q0)
for p1 in range(0x10, 0x110):
q1 = p1 & 0xff
PatchByte(ea + 1, q1)
for p2 in range(0x10, 0x110):
q2 = p2 & 0xff
PatchByte(ea + 2, q2)
len = MakeCode(ea)
str = GetDisasm(ea)
mnem = GetMnem(ea)
# Now we got disasm
# Remove comments
pos = str.find(';')
if pos != -1:
str = str[0:pos]
# Remove spaces at start and end
str = str.strip(' ')
if str[0:2] == 'db' or str == '' or len == 0:
insn_binary = get_insn(ea, 10)
flog.write('INPUT hex: %20s; disasm: "%s"\n' % (binascii.hexlify(insn_binary), str))
insn_write(f, insn_binary, 'db', False)
flog.write('\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOUTPUT disasm: "db"\n')
continue
if not is_unique(set, ea, str, mnem):
continue
insn_binary = get_insn(ea, len)
flog.write('INPUT hex: %20s; disasm: "%s"\n' % (binascii.hexlify(insn_binary), str))
if is_invalid_insn(insn_binary):
flog.write('*** Skipping invalid opcode ***')
continue
# Add unique disasms to file
str = ida_disasm_fix(insn_binary, str)
flog.write('\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOUTPUT disasm: "%s"\n' % str)
flog.flush()
insn_write(f, insn_binary, str, False)
n += 1
if n % 1000 == 0:
print '%d opcodes processed' % n
if len == 2 or len == 1:
break # Optimization: break if third byte does not matter
if len == 1:
break # Optimization: break if second byte does not matter
f.close()
flog.write('Finished\n')
flog.close()
def main():
generate_x86("./intel-x86-opcodes.txt")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,11 @@
using System.Xml;
namespace ipn_sqlclr
{
public class LogItem
{
public int MsgId { get; set; }
public XmlDocument[] Xml { get; set; }
public string[] P { get; set; }
}
}

274
utils/ipn_sqlclr/Taggant.cs Normal file
View File

@@ -0,0 +1,274 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Xml;
using Microsoft.SqlServer.Server;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
using System.Linq;
namespace ipn_sqlclr
{
public class TaggantConfig : Dictionary<string, string>
{
public X509Certificate ClientCertificate { get; set; }
}
public partial class UserDefinedFunctions
{
public static X509Certificate LocateCertificate(string subjectName)
{
var certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindBySubjectName, subjectName, true);
certStore.Close();
if (0 == certCollection.Count)
{
throw new ArgumentException(string.Format("No valid client certificate found at LocalMachine.My by SubjectName '{0}'", subjectName), "subjectName");
}
if (1 == certCollection.Count)
{
return certCollection[0];
}
throw new ArgumentException(string.Format("More than one client certificate found at LocalMachine.My by SubjectName '{0}'", subjectName), "subjectName");
}
public static TaggantConfig GetTaggantConfig(SqlInt32 taggantConfigId)
{
var config = new TaggantConfig();
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
var readConfigCmd = conn.CreateCommand();
readConfigCmd.Parameters.Add(new SqlParameter("@taggantConfigId", taggantConfigId.Value));
readConfigCmd.CommandText =
"SELECT Name, Value FROM dbo.TaggantConfig WHERE ID=@taggantConfigId";
using (var reader = readConfigCmd.ExecuteReader())
{
while(reader.Read())
{
config[reader.GetString(0)] = reader[1] as string;
}
}
}
config.ClientCertificate = LocateCertificate(config["ClientCertificate"]);
return config;
}
[SqlFunction]
public static SqlString TaggantPrivateKeyGenerateNew()
{
var g = new RsaKeyPairGenerator();
g.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
var pair = g.GenerateKeyPair();
using (var sw = new StringWriter())
{
new PemWriter(sw).WriteObject(pair);
sw.Flush();
return new SqlString(sw.ToString());
}
}
[SqlProcedure]
public static int TaggantCertRevoke(SqlInt32 taggantConfigId, SqlInt32 customerId)
{
var tc = GetTaggantConfig(taggantConfigId);
var log = new List<LogItem>();
try
{
string mail;
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
var readCustomerCmd = conn.CreateCommand();
readCustomerCmd.Parameters.Add(new SqlParameter("@CustomerID", customerId.Value));
readCustomerCmd.CommandText =
"SELECT EMail FROM dbo.Customer WHERE ID=@CustomerID";
using (var reader = readCustomerCmd.ExecuteReader())
{
if (reader.Read())
{
mail = reader[0] as string;
}
else
{
throw new ArgumentException("Customer not found", "customerId");
}
if (string.IsNullOrWhiteSpace(mail))
throw new InvalidOperationException("Customer EMail is not set");
}
}
log.Add(new LogItem { MsgId = 1033, P = new[] { customerId.ToString(), tc["CertificateProfileOid"] } });
TaggantWebService.CertRevoke(tc, mail, log);
return 0;
}
catch (Exception ex)
{
log.Add(new LogItem { MsgId = 15, P = new[] { ex.Source, ex.Message, ex.StackTrace } });
throw;
}
finally
{
FlushLog("TaggantCertRevoke", new SqlInt32(2), customerId, log);
}
}
[SqlProcedure]
public static int TaggantCertEnsure(SqlInt32 taggantConfigId, SqlInt32 customerId)
{
var tc = GetTaggantConfig(taggantConfigId);
var log = new List<LogItem>();
var id = "ipn" + customerId.Value;
string taggantCert = null;
try
{
string mail;
string privateKey;
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
var readCustomerCmd = conn.CreateCommand();
readCustomerCmd.Parameters.Add(new SqlParameter("@CustomerID", customerId.Value));
readCustomerCmd.CommandText =
"SELECT EMail, PrivateKeyCert, TaggantCert FROM dbo.Customer WHERE ID=@CustomerID";
using (var reader = readCustomerCmd.ExecuteReader())
{
if (reader.Read())
{
mail = reader[0] as string;
privateKey = reader[1] as string;
taggantCert = reader[2] as string;
}
else
{
throw new ArgumentException("Customer not found", "customerId");
}
if (string.IsNullOrWhiteSpace(mail))
throw new InvalidOperationException("Customer EMail is not set");
if (string.IsNullOrWhiteSpace(privateKey))
throw new InvalidOperationException("Customer PrivateKeyCert is not set");
if (!string.IsNullOrWhiteSpace(taggantCert))
return 0; // ensured
}
}
log.Add(new LogItem { MsgId = 14, P = new[] { customerId.ToString(), mail, tc["CertificateProfileOid"] } });
taggantCert = TaggantWebService.CertRequestNew(tc, id, mail, privateKey, log);
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
var writeCustomerCmd = conn.CreateCommand();
writeCustomerCmd.Parameters.Add(new SqlParameter("@CustomerID", customerId.Value));
writeCustomerCmd.Parameters.Add(new SqlParameter("@TaggantCert", taggantCert));
writeCustomerCmd.CommandText =
"UPDATE dbo.Customer SET TaggantCert=@TaggantCert WHERE ID=@CustomerID";
writeCustomerCmd.ExecuteNonQuery();
}
return 1; // created new
}
catch (Exception ex)
{
log.Add(new LogItem { MsgId = 15, P = new[] { ex.Source, ex.Message, ex.StackTrace, taggantCert } });
throw;
}
finally
{
FlushLog("TaggantCertEnsure", new SqlInt32(2), customerId, log);
}
}
private static void FlushLog(string src, SqlInt32 refKindId, SqlInt32 refId, IEnumerable<LogItem> log)
{
using (var conn = new SqlConnection("context connection=true"))
{
conn.Open();
foreach (var li in log)
{
var insLogCmd = conn.CreateCommand();
insLogCmd.Parameters.Add(new SqlParameter("@RefKindID", refKindId));
insLogCmd.Parameters.Add(new SqlParameter("@RefID", refId));
insLogCmd.Parameters.Add(new SqlParameter("@MsgID", li.MsgId));
int i;
for (i = 0; i < 2; i++)
{
insLogCmd.Parameters.Add(
new SqlParameter(string.Format("@xml{0}", i), SqlDbType.Xml)
{
Value = (li.Xml == null || li.Xml[i] == null)
? DBNull.Value
: (object)new SqlXml(new XmlTextReader(li.Xml[i].InnerXml, XmlNodeType.Document, null))
});
}
insLogCmd.Parameters.Add(new SqlParameter("@P0", src));
i = 1;
foreach (var p in li.P)
{
insLogCmd.Parameters.Add(new SqlParameter(string.Format("@P{0}", i++), p));
}
for (; i <= 8; i++)
{
insLogCmd.Parameters.Add(new SqlParameter(string.Format("@P{0}", i), DBNull.Value));
}
insLogCmd.CommandText =
"INSERT dbo.Log(RefID, RefKindID, MsgID, xml, xml2, P0, P1, P2, P3, P4, P5, P6, P7, P8)" +
" VALUES(@RefID, @RefKindID, @MsgID, @xml0, @xml1, @P0, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8)";
insLogCmd.ExecuteNonQuery();
}
}
}
[SqlProcedure]
public static SqlInt32 TaggantGetPolicies(SqlInt32 taggantConfigId)
{
var tc = GetTaggantConfig(taggantConfigId);
var log = new List<LogItem>();
try
{
var meta = new[]
{
new SqlMetaData("defaultName", SqlDbType.NVarChar, -1),
new SqlMetaData("groupId", SqlDbType.Int),
new SqlMetaData("oIdReferenceId", SqlDbType.Int),
new SqlMetaData("certificateProfileId", SqlDbType.NVarChar, -1)
};
SqlDataRecord[] records = TaggantWebService.GetPolicies(tc, log).Select(x =>
{
var r = new SqlDataRecord(meta);
r.SetSqlString(0, x.defaultName);
r.SetSqlInt32(1, (int)x.group);
r.SetSqlInt32(2, x.oIDReferenceID);
r.SetSqlString(3, x.value);
return r;
}).ToArray();
if (SqlContext.Pipe != null)
{
SqlContext.Pipe.SendResultsStart(new SqlDataRecord(meta));
foreach (var r in records)
SqlContext.Pipe.SendResultsRow(r);
SqlContext.Pipe.SendResultsEnd();
}
return records.Length;
}
catch (Exception ex)
{
log.Add(new LogItem { MsgId = 15, P = new[] { ex.Source, ex.Message, ex.StackTrace } });
throw;
}
finally
{
FlushLog("TaggantGetPolicies", new SqlInt32(), new SqlInt32(), log);
}
}
}
}

View File

@@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using certificateManagementService;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.X509;
using policyService;
using veriSignCertIssuingService;
using ItemChoiceType = certificateManagementService.ItemChoiceType;
namespace ipn_sqlclr
{
public static class TaggantWebService
{
public static void CertRevoke(TaggantConfig tc, string id, List<LogItem> log)
{
var es = new certificateManagementService.certificateManagementService(tc.ClientCertificate, tc["ManagementUrl"]);
try
{
var updateCertificateStatusRequest = new UpdateCertificateStatusRequestType
{
clientTransactionID = "ipn_sqlclr " + new SecureRandom().Next(),
operationType = OperationTypeEnum.Revoke,
revocationReasonSpecified = false,
ItemElementName = ItemChoiceType.seatId,
Item = id,
//certificateIssuer = "?",
//challenge = "?",
//comment = "?",
version = tc["ManagementVersion"]
};
/*var updateResponse =*/ es.updateCertificateStatus(updateCertificateStatusRequest);
}
finally
{
LogXml("updateCertificateStatus", es, log);
}
}
public static string CertRequestNew(TaggantConfig tc, string id, string mail, string privateKey, List<LogItem> log)
{
var csr = CreateCsr(tc, privateKey);
log.Add(new LogItem {MsgId = 16, P = new[] {csr}});
var es = new veriSignCertIssuingService.veriSignCertIssuingService(tc.ClientCertificate, tc["EnrollmentUrl"]);
try
{
var requestSecurityTokenType = new RequestSecurityTokenType
{
Item = new RequestVSSecurityTokenEnrollmentType
{
clientTransactionID = "ipn_sqlclr " + new SecureRandom().Next(),
certificateProfileID = tc["CertificateProfileOid"],
requestType = RequestTypeEnum.httpdocsoasisopenorgwssxwstrust200512Issue,
version = tc["EnrollVersion"],
tokenType = TokenType.httpdocsoasisopenorgwss200401oasis200401wssx509tokenprofile10PKCS7,
binarySecurityToken = new[]
{
new BinarySecurityTokenType
{
ValueType = "http://schemas.verisign.com/pkiservices/2009/07/PKCS10",
EncodingType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#base64binary",
Value = csr
}
},
nameValuePair = new[]
{
new NameValueType {name = "seat_id", value = mail},
new NameValueType {name = "common_name", value = string.Format("VMProtect Client {0}", id)},
new NameValueType {name = "mail_lastName", value = "Client"},
new NameValueType {name = "mail_firstName", value = string.Format("{0} VMProtect", id)},
new NameValueType {name = "emailAddress", value = mail},
new NameValueType {name = "mail_email", value = mail},
new NameValueType {name = "country", value = "ru"}
}
}
};
var enrollmentResponse = es.RequestSecurityToken(requestSecurityTokenType);
var certs = ((AttributedString)(enrollmentResponse.Item.requestedVSSecurityToken.Items[0])).Value;
var certPkcs7 = Convert.FromBase64String(certs);
var parser = new X509CertificateParser();
var cert = parser.ReadCertificate(certPkcs7);
using (var pw = new StringWriter())
{
new PemWriter(pw).WriteObject(cert);
pw.Flush();
return pw.ToString();
}
}
finally
{
LogXml("RequestSecurityToken", es, log);
}
}
private static string CreateCsr(TaggantConfig tc, string privateKey)
{
AsymmetricCipherKeyPair pair;
using (var reader = new StringReader(privateKey))
pair = (AsymmetricCipherKeyPair) new PemReader(reader).ReadObject();
var csr = new Pkcs10CertificationRequest(tc["CsrAlgorithm"], new X509Name(tc["CsrSubject"]), pair.Public, null, pair.Private);
using (var pw = new StringWriter())
{
new PemWriter(pw).WriteObject(csr);
pw.Flush();
return pw.ToString();
}
}
public static IEnumerable<OID> GetPolicies(TaggantConfig tc, List<LogItem> log)
{
var ps = new policyService.policyService(tc.ClientCertificate, tc["PolicyUrl"]);
try
{
var rp = ps.requestPolicies(new getPolicies {version = tc["PolicyVersion"]});
return rp.oIDs;
}
finally
{
LogXml("requestPolicies", ps, log);
}
}
private static void LogXml(string src, XmlReaderSpyService ss, ICollection<LogItem> log)
{
var req = new XmlDocument();
var resp = new XmlDocument();
var reqs = ss.GetRequestXml();
var resps = ss.GetResponseXml();
try
{
req.LoadXml(reqs);
}
catch (Exception)
{
req = null;
}
try
{
resp.LoadXml(resps);
}
catch (Exception)
{
resp = null;
}
if (req != null && string.IsNullOrWhiteSpace(req.InnerXml))
req = null;
if (resp != null && string.IsNullOrWhiteSpace(resp.InnerXml))
resp = null;
if (!string.IsNullOrWhiteSpace(reqs) || !string.IsNullOrWhiteSpace(resps))
log.Add(new LogItem {MsgId = 17, P = new[] {src, reqs, resps}, Xml = new[] {req, resp}});
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
namespace ipn_sqlclr
{
public partial class UserDefinedFunctions
{
[SqlFunction]
public static SqlString VmpLicenseKeyGenerateNew(SqlInt32 productId, SqlString customerName, SqlString eMail, SqlDateTime maxBuildDt)
{
return new SqlString (Keygen.GenerateKey(productId.Value, customerName.Value, eMail.Value, maxBuildDt.Value));
}
[SqlFunction(FillRowMethodName = "FillRowVmpLicenseParseKey",
TableDefinition = "[productId] int,[customerName] nvarchar(max),[eMail] nvarchar(max),maxBuildDT datetime")]
public static IEnumerable VmpLicenseParseKey(String key)
{
yield return key;
}
public static void FillRowVmpLicenseParseKey(Object obj, out SqlInt32 productId, out SqlString customerName, out SqlString eMail, out SqlDateTime maxBuildDt)
{
var key = (string)obj;
int productIdTmp;
string customerNameTmp, eMailTmp;
DateTime maxBuildDtTmp;
Keygen.ParseKey(key, out productIdTmp, out customerNameTmp, out eMailTmp, out maxBuildDtTmp);
productId = productIdTmp;
customerName = customerNameTmp;
eMail = eMailTmp;
maxBuildDt = maxBuildDtTmp;
}
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="BulkUpdateCertificateStatusResponseType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.certificateManagementService.BulkUpdateCertificateStatusResponseType, Web References.certificateManagementService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://schemas.verisign.com/pkiservices/2009/07/management" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/management" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="CertificateManagementService.xsd" namespace="http://schemas.verisign.com/pkiservices/2009/07/management" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="requestKeyRecoveryMessage">
<wsdl:part name="request" element="tns:requestKeyRecoveryMessage" />
</wsdl:message>
<wsdl:message name="requestKeyRecoveryResponseMessage">
<wsdl:part name="response" element="tns:requestKeyRecoveryResponseMessage" />
</wsdl:message>
<wsdl:message name="updateCertificateStatusRequest">
<wsdl:part name="request" element="tns:updateCertificateStatusRequest" />
</wsdl:message>
<wsdl:message name="updateCertificateStatusResponse">
<wsdl:part name="response" element="tns:updateCertificateStatusResponse" />
</wsdl:message>
<wsdl:message name="bulkUpdateCertificateStatusRequest">
<wsdl:part name="request" element="tns:bulkUpdateCertificateStatusRequest" />
</wsdl:message>
<wsdl:message name="bulkUpdateCertificateStatusResponse">
<wsdl:part name="response" element="tns:bulkUpdateCertificateStatusResponse" />
</wsdl:message>
<wsdl:message name="searchCertificateRequest">
<wsdl:part name="request" element="tns:searchCertificateRequest" />
</wsdl:message>
<wsdl:message name="searchCertificateResponse">
<wsdl:part name="response" element="tns:searchCertificateResponse" />
</wsdl:message>
<wsdl:portType name="certificateManagementOperations">
<wsdl:operation name="updateCertificateStatus">
<wsdl:input message="tns:updateCertificateStatusRequest" />
<wsdl:output message="tns:updateCertificateStatusResponse" />
</wsdl:operation>
<wsdl:operation name="bulkUpdateCertificateStatus">
<wsdl:input message="tns:bulkUpdateCertificateStatusRequest" />
<wsdl:output message="tns:bulkUpdateCertificateStatusResponse" />
</wsdl:operation>
<wsdl:operation name="keyRecovery">
<wsdl:input message="tns:requestKeyRecoveryMessage" />
<wsdl:output message="tns:requestKeyRecoveryResponseMessage" />
</wsdl:operation>
<wsdl:operation name="searchCertificate">
<wsdl:input message="tns:searchCertificateRequest" />
<wsdl:output message="tns:searchCertificateResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="certificateManagementServiceSOAP" type="tns:certificateManagementOperations">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="updateCertificateStatus">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/management/updateCertificateStatus" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="bulkUpdateCertificateStatus">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/management/bulkUpdateCertificateStatus" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="keyRecovery">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/management/keyRecovery" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="searchCertificate">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/management/searchCertificate" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="certificateManagementService">
<wsdl:port name="certificateManagementServiceSOAP" binding="tns:certificateManagementServiceSOAP">
<soap:address location="https://pki-ws.symauth.com/pki-ws/certificateManagementService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:vsmgmt="http://schemas.verisign.com/pkiservices/2009/07/management" xmlns:vswstep="http://www.verisign.com/2009/07/vswstep" elementFormDefault="qualified" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/management" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation xml:lang="en">
XML Schema for
certificateManagementService Web Services
version 1.0
</xs:documentation>
</xs:annotation>
<xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,3}\.\d{0,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TransactionIDType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CommentType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
</xs:restriction>
</xs:simpleType>
<xs:element name="requestKeyRecoveryMessage" type="vsmgmt:RequestKeyRecoveryMessageType" />
<xs:complexType name="RequestKeyRecoveryMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element minOccurs="0" name="pKCS12Password" type="xs:string" />
<xs:element name="certificateSerialNumber" type="xs:string" />
<xs:element name="certificateIssuer" type="xs:string" />
<xs:element name="adminID" type="xs:string" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="requestKeyRecoveryResponseMessage" type="vsmgmt:RequestKeyRecoveryResponseMessageType" />
<xs:complexType name="RequestKeyRecoveryResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element minOccurs="0" name="adminApprovalPendingCount" type="xs:int" />
<xs:element minOccurs="0" name="pKCS12Password" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="pKCS12Message" type="xs:string" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="updateCertificateStatusRequest" type="vsmgmt:UpdateCertificateStatusRequestType" />
<xs:complexType name="UpdateCertificateStatusRequestType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:element minOccurs="0" name="certificateIssuer" type="xs:string" />
<xs:element minOccurs="0" name="revocationReason" type="vsmgmt:RevokeReasonCodeEnum" />
<xs:element minOccurs="0" name="challenge" type="xs:string" />
<xs:element minOccurs="0" name="comment" type="vsmgmt:CommentType" />
<xs:choice>
<xs:element name="certificateSerialNumber" type="xs:string" />
<xs:element name="seatId" type="xs:string" />
</xs:choice>
<xs:element name="operationType" type="vsmgmt:OperationTypeEnum" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="updateCertificateStatusResponse" type="vsmgmt:UpdateCertificateStatusResponseType" />
<xs:complexType name="UpdateCertificateStatusResponseType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element minOccurs="0" name="serverTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:element name="successCode" type="xs:int" />
<xs:element name="successMsg" type="xs:string" />
<xs:element name="revocationCount" type="xs:int" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="bulkUpdateCertificateStatusRequest" type="vsmgmt:BulkUpdateCertificateStatusRequestType" />
<xs:complexType name="BulkUpdateCertificateStatusRequestType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:element minOccurs="0" name="revocationReason" type="vsmgmt:RevokeReasonCodeEnum" />
<xs:element minOccurs="0" name="comment" type="vsmgmt:CommentType" />
<xs:choice>
<xs:element maxOccurs="100" name="certificateSerialNumber" type="xs:string" />
<xs:element maxOccurs="100" name="seatId" type="xs:string" />
<xs:element maxOccurs="100" name="profileOID" type="xs:string" />
</xs:choice>
<xs:element name="operationType" type="vsmgmt:OperationTypeEnum" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="bulkUpdateCertificateStatusResponse" type="vsmgmt:BulkUpdateCertificateStatusResponseType" />
<xs:complexType name="BulkUpdateCertificateStatusResponseType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element minOccurs="0" name="serverTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:element name="successCode" type="xs:int" />
<xs:element name="successMsg" type="xs:string" />
<xs:element name="revocationCount" type="xs:int" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OperationTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Revoke" />
<xs:enumeration value="Suspend" />
<xs:enumeration value="Resume" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RevokeReasonCodeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Unspecified" />
<xs:enumeration value="KeyCompromise" />
<xs:enumeration value="CACompromise" />
<xs:enumeration value="AffiliationChanged" />
<xs:enumeration value="CessationOfOperation" />
<xs:enumeration value="PrivilegeWithdrawn" />
<xs:enumeration value="AACompromise" />
<xs:enumeration value="Superseded" />
</xs:restriction>
</xs:simpleType>
<xs:element name="searchCertificateRequest" type="vsmgmt:SearchCertificateRequestType" />
<xs:complexType name="SearchCertificateRequestType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element minOccurs="0" name="seatId" type="xs:string" />
<xs:element minOccurs="0" name="accountId" type="xs:string" />
<xs:element minOccurs="0" name="profileOID" type="xs:string" />
<xs:element minOccurs="0" name="commonName" type="xs:string" />
<xs:element minOccurs="0" name="status" type="vsmgmt:CertificateStatusEnum" />
<xs:element minOccurs="0" name="emailAddress" type="xs:string" />
<xs:element minOccurs="0" name="serialNumber" type="xs:string" />
<xs:element minOccurs="0" name="issuingCA" type="xs:base64Binary" />
<xs:element minOccurs="0" name="validFrom" type="xs:long" />
<xs:element minOccurs="0" name="validTo" type="xs:long" />
<xs:element minOccurs="0" name="startIndex" type="xs:int" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="searchCertificateResponse" type="vsmgmt:SearchCertificateResponseType" />
<xs:complexType name="SearchCertificateResponseType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="vsmgmt:TransactionIDType" />
<xs:element name="certificateCount" type="xs:int" />
<xs:element minOccurs="0" name="certificateList" type="vsmgmt:CertificateListType" />
<xs:element minOccurs="0" name="moreCertificateAvailable" type="xs:boolean" />
<xs:element name="version" type="vsmgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CertificateSearchResultType">
<xs:sequence>
<xs:element name="certificate" type="xs:base64Binary" />
<xs:element name="seatId" type="xs:string" />
<xs:element name="commonName" type="xs:string" />
<xs:element name="accountId" type="xs:string" />
<xs:element name="profileOID" type="xs:string" />
<xs:element name="emailAddress" nillable="true" type="xs:string" />
<xs:element name="status" type="vsmgmt:CertificateStatusEnum" />
<xs:element minOccurs="0" name="revokeAt" type="xs:long" />
<xs:element minOccurs="0" name="revokeReason" type="vsmgmt:RevokeReasonCodeEnum" />
<xs:element name="validFrom" type="xs:long" />
<xs:element name="validTo" type="xs:long" />
<xs:element name="serialNumber" type="xs:string" />
<xs:element name="isEscrowed" type="xs:boolean" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CertificateListType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="certificateInformation" type="vsmgmt:CertificateSearchResultType" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CertificateStatusEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="VALID" />
<xs:enumeration value="EXPIRED" />
<xs:enumeration value="REVOKED" />
<xs:enumeration value="SUSPENDED" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/CertificateManagementService.wsdl" filename="CertificateManagementService.wsdl" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/CertificateManagementService.xsd" filename="CertificateManagementService.xsd" />
</Results>
</DiscoveryClientResultsFile>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="RequestKeyRecoveryResponseMessageType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.certificateManagementService.RequestKeyRecoveryResponseMessageType, Web References.certificateManagementService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="SearchCertificateResponseType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.certificateManagementService.SearchCertificateResponseType, Web References.certificateManagementService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="UpdateCertificateStatusResponseType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.certificateManagementService.UpdateCertificateStatusResponseType, Web References.certificateManagementService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:vscep="http://schemas.verisign.com/pkiservices/2009/07/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/policy" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="CertificateEnrollmentPolicy.xsd" namespace="http://schemas.verisign.com/pkiservices/2009/07/policy" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="requestPoliciesMessage">
<wsdl:part name="request" element="vscep:getPolicies" />
</wsdl:message>
<wsdl:message name="requestPoliciesResponse">
<wsdl:part name="response" element="vscep:getPoliciesResponse" />
</wsdl:message>
<wsdl:portType name="policy">
<wsdl:operation name="requestPolicies">
<wsdl:input wsaw:Action="http://schemas.verisign.com/pkiservices/2009/07/policy/getPolicies" message="vscep:requestPoliciesMessage" />
<wsdl:output wsaw:Action="http://schemas.verisign.com/pkiservices/2009/07/policy/getPoliciesResponse" message="vscep:requestPoliciesResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="requestPoliciesServiceSOAP" type="vscep:policy">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="requestPolicies">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/policy/requestPolicies" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="policyService">
<wsdl:port name="requestPoliciesServiceSOAP" binding="vscep:requestPoliciesServiceSOAP">
<soap:address location="https://pki-ws.symauth.com/pki-ws/policyService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@@ -0,0 +1,388 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:vscep="http://schemas.verisign.com/pkiservices/2009/07/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation xml:lang="en">
XML Schema for policyService Web Services
version 2.0
</xs:documentation>
</xs:annotation>
<xs:element name="getPolicies">
<xs:complexType>
<xs:sequence>
<xs:element name="version" type="vscep:VersionType" />
<xs:element minOccurs="0" name="clientTransactionID" type="vscep:TransactionIDType" />
<xs:element minOccurs="0" name="client" type="vscep:Client" />
<xs:element name="requestFilter" nillable="true" type="vscep:RequestFilter" />
<xs:element minOccurs="0" name="signResponse" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,3}\.\d{0,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TransactionIDType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Client">
<xs:sequence>
<xs:element name="lastUpdatetime" nillable="true" type="xs:dateTime" />
<xs:element name="preferredLanguage" nillable="true" type="xs:language" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="RequestFilter">
<xs:sequence>
<xs:element name="policyIDs" nillable="true" type="vscep:FilterOIDCollection" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="FilterOIDCollection">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="oid" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="getPoliciesResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vscep:TransactionIDType" />
<xs:element name="serverTransactionID" type="vscep:TransactionIDType" />
<xs:element name="response" type="vscep:Response" />
<xs:element name="cAs" nillable="true" type="vscep:CACollection" />
<xs:element name="oIDs" nillable="true" type="vscep:OIDCollection" />
<xs:element minOccurs="0" name="signedEnrollmentPolicy" type="xs:base64Binary" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Response">
<xs:sequence>
<xs:element name="policyID" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="policyFriendlyName" type="xs:string" />
<xs:element name="nextUpdateHours" nillable="true" type="xs:unsignedInt" />
<xs:element name="policiesNotChanged" type="xs:boolean" />
<xs:element name="policies" nillable="true" type="vscep:PolicyCollection" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CACollection">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="cA" type="vscep:CA" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CA">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="uris" type="xs:anyURI" />
<xs:element name="certificate" type="xs:base64Binary" />
<xs:element name="cAIssuerName" nillable="true" type="xs:string" />
<xs:element name="cAReferenceID" type="xs:int" />
<xs:element name="cAType" nillable="true" type="vscep:CAType" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="intermediateCACertificates" type="xs:base64Binary" />
<xs:element name="rootCACertificate" type="xs:base64Binary" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OIDCollection">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="oID" type="vscep:OID" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OID">
<xs:sequence>
<xs:element name="value" type="xs:string" />
<xs:element name="oIDReferenceID" type="xs:int" />
<xs:element name="group" type="xs:unsignedInt" />
<xs:element name="defaultName" nillable="true" type="xs:string" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PolicyCollection">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="policy" type="vscep:CertificateEnrollmentPolicy" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CertificateEnrollmentPolicy">
<xs:sequence>
<xs:element name="policyOIDReference" type="xs:int" />
<xs:element name="cAs" type="vscep:CAReferenceCollection" />
<xs:element name="attributes" type="vscep:Attributes" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CAReferenceCollection">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="cAReference" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Attributes">
<xs:sequence>
<xs:element name="policySchema" type="xs:int" />
<xs:element name="certificateValidity" type="vscep:CertificateValidity" />
<xs:element minOccurs="0" maxOccurs="1" name="certificateOverrideValidity" type="vscep:OverrideValidity" />
<xs:element name="subjectNameInfo" nillable="true" type="vscep:subjectName" />
<xs:element name="extensions" nillable="true" type="vscep:Extensions" />
<xs:element name="privateKeyAttributes" type="vscep:PrivateKeyInfo" />
<xs:element name="clientPolicy" nillable="true" type="vscep:ClientPolicy" />
<xs:element minOccurs="0" maxOccurs="1" name="systemInfo" type="vscep:SystemInformation" />
<xs:element name="rAPolicy" nillable="true" type="vscep:RAPolicy" />
<xs:element minOccurs="0" name="seatIdInfo" type="vscep:SeatInfoType" />
<xs:element name="applicationInstructions" nillable="true" type="vscep:ApplicationInstructionsType" />
<xs:element name="deploymentMode" type="xs:string" />
<xs:element name="status" type="xs:string" />
<xs:element name="migrationOIDs" nillable="true" type="vscep:MigrationOIDCollection" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SystemInformation">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="searchCertificateData" type="vscep:SearchCertificateData" />
<xs:element minOccurs="0" maxOccurs="1" name="cACertPublish" type="vscep:PublishCert" />
<xs:element minOccurs="0" maxOccurs="1" name="cACertPublishNameValuePair" type="vscep:CACertPublishNameValuePair" />
<xs:element name="certificateDeliveryFormat" type="vscep:DeliveryFormat" />
<xs:element minOccurs="0" name="adminInfo" type="vscep:PersonalInfoType" />
<xs:element name="serviceEndpointList" nillable="true" type="vscep:ServiceEndpointListType" />
<xs:element name="duplicateCertPolicy" nillable="true" type="xs:string" />
<xs:element name="supersededPolicyOID" nillable="true" type="xs:string" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MigrationOIDCollection">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="migratedFromOID" type="xs:string" />
<xs:element name="migratedToOID" nillable="true" type="xs:string" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PersonalInfoType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="email" type="xs:string" />
<xs:element name="phone" nillable="true" type="xs:string" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceEndpointListType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="serviceEndpoint" type="vscep:ServiceEndpointType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceEndpointType">
<xs:sequence>
<xs:element name="type" type="xs:string" />
<xs:element name="endpointURI" type="xs:anyURI" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SeatInfoType">
<xs:sequence>
<xs:element name="attributeNameValue" type="vscep:AttributeValueType" />
<xs:element name="attributeNameValueProperty" type="vscep:AttributeNameValuePropertyType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ApplicationInstructionsType">
<xs:sequence>
<xs:element name="fileContentType" type="xs:string" />
<xs:element name="url" type="xs:anyURI" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="DeliveryFormat">
<xs:restriction base="xs:string">
<xs:enumeration value="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
<xs:enumeration value="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7" />
<xs:enumeration value="http://schemas.verisign.com/pkiservices/2009/07/PKCS12" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CACertPublishNameValuePair">
<xs:restriction base="xs:string">
<xs:enumeration value="$publish_flag" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SearchCertificateData">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="searchAttributeNameValuePair" type="vscep:AttributeNameValuePairType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CertificateValidity">
<xs:sequence>
<xs:element name="validityPeriodDays" type="xs:unsignedLong" />
<xs:element name="renewalPeriodDays" type="xs:unsignedLong" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OverrideValidity">
<xs:sequence>
<xs:element minOccurs="0" name="overrideFlag" type="xs:boolean" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="overrideNameValuePair" type="vscep:validityNameValuePairNames" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="validityNameValuePairNames">
<xs:restriction base="xs:string">
<xs:enumeration value="$overrideValidityDays" />
<xs:enumeration value="$overrideValidityStartDate" />
<xs:enumeration value="$overrideValidityEndDate" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="PrivateKeyInfo">
<xs:sequence>
<xs:element name="keysize" type="xs:int" />
<xs:element minOccurs="0" name="keyEscrowPolicy" type="vscep:KeyEscrowPolicyType" />
<xs:element name="keyexportable" type="xs:boolean" />
<xs:element minOccurs="0" name="keyprotect" type="xs:boolean" />
<xs:element name="algorithmOIDReference" nillable="true" type="xs:int" />
<xs:element name="cryptoProviders" nillable="true" type="vscep:CryptoProviders" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="KeyEscrowPolicyType">
<xs:sequence>
<xs:element name="keyEscrowEnabled" type="xs:boolean" />
<xs:element minOccurs="0" name="keyRecoveryDualAdminApprovalRequired" type="xs:boolean" />
<xs:element name="keyEscrowDeploymentMode" nillable="true" type="xs:string" />
<xs:element name="doKeyRecoveryForAdditionalEnrollRequest" nillable="true" type="xs:boolean" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CryptoProviders">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="provider" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClientPolicy">
<xs:sequence>
<xs:element minOccurs="0" name="clientName" type="xs:string" />
<xs:element minOccurs="0" name="maxPinLength" type="xs:int" />
<xs:element minOccurs="0" name="minPinLength" type="xs:int" />
<xs:element minOccurs="0" name="noOfBadAttempts" type="xs:int" />
<xs:element minOccurs="0" name="certRenewalOverlap" type="xs:int" />
<xs:element minOccurs="0" name="renewExpiredCerts" type="xs:boolean" />
<xs:element minOccurs="0" name="certRenewalMsg" type="xs:string" />
<xs:element minOccurs="0" name="certCleanUp" type="xs:boolean" />
<xs:element name="certPublish" type="vscep:PublishCert" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="PublishCert">
<xs:restriction base="xs:string">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
<xs:enumeration value="clientProvided" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RAPolicy">
<xs:sequence>
<xs:element name="registerUser" type="xs:boolean" />
<xs:element name="verifyUser" type="xs:boolean" />
<xs:element name="publishCert" type="vscep:PublishCert" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="authorizationInfo" type="vscep:AuthorizationInfoType" />
<xs:element name="pollingPolicy" nillable="true" type="vscep:PollingPolicyType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="AuthorizationInfoType">
<xs:sequence>
<xs:element name="userAuthorizationCollection" type="vscep:UserAuthorizationCollection" />
<xs:element name="directoryInfo" nillable="true" type="vscep:DirectoryInfoType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="DirectoryInfoType">
<xs:sequence>
<xs:element name="directoryType" type="xs:string" />
<xs:element name="domainName" type="xs:string" />
<xs:choice>
<xs:element name="ipAddress" type="xs:string" />
<xs:element name="hostName" type="xs:string" />
</xs:choice>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserAuthorizationCollection">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="authorizedGroup" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PollingPolicyType">
<xs:sequence>
<xs:element name="gatewayPollingTime" type="vscep:PollingTimeType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PollingTimeType">
<xs:sequence>
<xs:element name="nextUpdateHours" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Extensions">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Extension" type="vscep:Extension" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Extension">
<xs:sequence>
<xs:element name="extensionOIDReference" type="xs:int" />
<xs:element name="extensionCriticalFlag" type="xs:boolean" />
<xs:element name="extensionSyntax" nillable="true" type="vscep:extensionSyntax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="extensionSyntax">
<xs:sequence>
<xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" name="extensionAttributeNameValuePair" type="vscep:AttributeNameValuePairType" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="extensionValue" type="vscep:extensionValueType" />
</xs:choice>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="AttributeNameValuePairType">
<xs:sequence>
<xs:element name="attributeName" type="xs:string" />
<xs:element name="attributeNameValue" nillable="true" type="vscep:AttributeValueType" />
<xs:element minOccurs="0" name="attributeNameValueProperty" type="vscep:AttributeNameValuePropertyType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="AttributeValueType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="mandatory" type="xs:boolean" />
<xs:attribute name="type" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="AttributeNameValuePropertyType">
<xs:sequence>
<xs:element name="value" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="source" type="xs:string" />
<xs:element minOccurs="0" name="sourceAttributeName" type="xs:string" />
<xs:element name="mandatory" nillable="true" type="xs:boolean" />
<xs:element name="overridable" nillable="true" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="extensionValueType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="mandatory" type="xs:boolean" />
<xs:attribute name="type" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="subjectName">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="subjectNameAttribute" type="vscep:subjectNameAttribute" />
<xs:element name="overrideSubjectNameFormat" type="xs:boolean" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="subjectNameAttribute">
<xs:sequence>
<xs:element name="subjectNameAttributecount" nillable="true" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="unbounded" name="subjectNameAttributeNameValuePair" type="vscep:AttributeNameValuePairType" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CAType">
<xs:restriction base="xs:string">
<xs:enumeration value="public" />
<xs:enumeration value="private" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/CertificateEnrollmentPolicy.xsd" filename="CertificateEnrollmentPolicy.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/CertificateEnrollmentPolicy.wsdl" filename="CertificateEnrollmentPolicy.wsdl" />
</Results>
</DiscoveryClientResultsFile>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="getPoliciesResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.policyService.getPoliciesResponse, Web References.policyService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="PrepSignDataResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.signDataService.PrepSignDataResponse, Web References.signDataService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,793 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
// This source code was auto-generated by Microsoft.VSDesigner, Version 4.0.30319.34014.
//
using System.Security.Cryptography.X509Certificates;
#pragma warning disable 1591
namespace signDataService {
using System;
using System.Web.Services;
using System.Diagnostics;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.ComponentModel;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="signDataServiceSOAP", Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class signDataService : System.Web.Services.Protocols.SoapHttpClientProtocol {
private System.Threading.SendOrPostCallback prepSignDataOperationCompleted;
private System.Threading.SendOrPostCallback verifySignedDataOperationCompleted;
private System.Threading.SendOrPostCallback noOpOperationCompleted;
private bool useDefaultCredentialsSetExplicitly;
/// <remarks/>
public signDataService(X509Certificate clientCert, string url)
{
this.Url = url;
ClientCertificates.Add(clientCert);
}
public new string Url {
get {
return base.Url;
}
set {
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
&& (this.useDefaultCredentialsSetExplicitly == false))
&& (this.IsLocalFileSystemWebService(value) == false))) {
base.UseDefaultCredentials = false;
}
base.Url = value;
}
}
public new bool UseDefaultCredentials {
get {
return base.UseDefaultCredentials;
}
set {
base.UseDefaultCredentials = value;
this.useDefaultCredentialsSetExplicitly = true;
}
}
/// <remarks/>
public event prepSignDataCompletedEventHandler prepSignDataCompleted;
/// <remarks/>
public event verifySignedDataCompletedEventHandler verifySignedDataCompleted;
/// <remarks/>
public event noOpCompletedEventHandler noOpCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/prepSignD" +
"ataRequest", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("PrepSignDataResponse", Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public PrepSignDataResponse prepSignData([System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")] PrepSignDataRequest PrepSignDataRequest) {
object[] results = this.Invoke("prepSignData", new object[] {
PrepSignDataRequest});
return ((PrepSignDataResponse)(results[0]));
}
/// <remarks/>
public void prepSignDataAsync(PrepSignDataRequest PrepSignDataRequest) {
this.prepSignDataAsync(PrepSignDataRequest, null);
}
/// <remarks/>
public void prepSignDataAsync(PrepSignDataRequest PrepSignDataRequest, object userState) {
if ((this.prepSignDataOperationCompleted == null)) {
this.prepSignDataOperationCompleted = new System.Threading.SendOrPostCallback(this.OnprepSignDataOperationCompleted);
}
this.InvokeAsync("prepSignData", new object[] {
PrepSignDataRequest}, this.prepSignDataOperationCompleted, userState);
}
private void OnprepSignDataOperationCompleted(object arg) {
if ((this.prepSignDataCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.prepSignDataCompleted(this, new prepSignDataCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/verifySig" +
"nedDataRequest", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("VerifySignedDataResponse", Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public VerifySignedDataResponse verifySignedData([System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")] VerifySignedDataRequest VerifySignedDataRequest) {
object[] results = this.Invoke("verifySignedData", new object[] {
VerifySignedDataRequest});
return ((VerifySignedDataResponse)(results[0]));
}
/// <remarks/>
public void verifySignedDataAsync(VerifySignedDataRequest VerifySignedDataRequest) {
this.verifySignedDataAsync(VerifySignedDataRequest, null);
}
/// <remarks/>
public void verifySignedDataAsync(VerifySignedDataRequest VerifySignedDataRequest, object userState) {
if ((this.verifySignedDataOperationCompleted == null)) {
this.verifySignedDataOperationCompleted = new System.Threading.SendOrPostCallback(this.OnverifySignedDataOperationCompleted);
}
this.InvokeAsync("verifySignedData", new object[] {
VerifySignedDataRequest}, this.verifySignedDataOperationCompleted, userState);
}
private void OnverifySignedDataOperationCompleted(object arg) {
if ((this.verifySignedDataCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.verifySignedDataCompleted(this, new verifySignedDataCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/noOpReque" +
"st", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("ToBeSignedClientPKCS7BlobType", Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public ToBeSignedClientPKCS7BlobType noOp([System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")] ToBeSignedPKCS7BlobType ToBeSignedPKCS7BlobType) {
object[] results = this.Invoke("noOp", new object[] {
ToBeSignedPKCS7BlobType});
return ((ToBeSignedClientPKCS7BlobType)(results[0]));
}
/// <remarks/>
public void noOpAsync(ToBeSignedPKCS7BlobType ToBeSignedPKCS7BlobType) {
this.noOpAsync(ToBeSignedPKCS7BlobType, null);
}
/// <remarks/>
public void noOpAsync(ToBeSignedPKCS7BlobType ToBeSignedPKCS7BlobType, object userState) {
if ((this.noOpOperationCompleted == null)) {
this.noOpOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnoOpOperationCompleted);
}
this.InvokeAsync("noOp", new object[] {
ToBeSignedPKCS7BlobType}, this.noOpOperationCompleted, userState);
}
private void OnnoOpOperationCompleted(object arg) {
if ((this.noOpCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.noOpCompleted(this, new noOpCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
private bool IsLocalFileSystemWebService(string url) {
if (((url == null)
|| (url == string.Empty))) {
return false;
}
System.Uri wsUri = new System.Uri(url);
if (((wsUri.Port >= 1024)
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
return true;
}
return false;
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class PrepSignDataRequest {
private string clientTransactionIDField;
private SignDataInfoType signDataInfoField;
private byte[] toBeSignDataField;
private string versionField;
/// <remarks/>
public string clientTransactionID {
get {
return this.clientTransactionIDField;
}
set {
this.clientTransactionIDField = value;
}
}
/// <remarks/>
public SignDataInfoType signDataInfo {
get {
return this.signDataInfoField;
}
set {
this.signDataInfoField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] toBeSignData {
get {
return this.toBeSignDataField;
}
set {
this.toBeSignDataField = value;
}
}
/// <remarks/>
public string version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class SignDataInfoType {
private string descriptionField;
private CertificateFilterType certificateFilterField;
private HashAlgorithmType hashAlgorithmField;
private string urlFilterField;
/// <remarks/>
public string description {
get {
return this.descriptionField;
}
set {
this.descriptionField = value;
}
}
/// <remarks/>
public CertificateFilterType certificateFilter {
get {
return this.certificateFilterField;
}
set {
this.certificateFilterField = value;
}
}
/// <remarks/>
public HashAlgorithmType hashAlgorithm {
get {
return this.hashAlgorithmField;
}
set {
this.hashAlgorithmField = value;
}
}
/// <remarks/>
public string urlFilter {
get {
return this.urlFilterField;
}
set {
this.urlFilterField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class CertificateFilterType {
private string[] profileIDFilterSetField;
private UserFilterType[] userFilterSetField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("profileOID", IsNullable=false)]
public string[] profileIDFilterSet {
get {
return this.profileIDFilterSetField;
}
set {
this.profileIDFilterSetField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("userFilter", IsNullable=false)]
public UserFilterType[] userFilterSet {
get {
return this.userFilterSetField;
}
set {
this.userFilterSetField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class UserFilterType {
private UserAttributeNameType userAttributeNameField;
private string userAttributeValueField;
private bool ignoreCaseField;
private bool ignoreCaseFieldSpecified;
/// <remarks/>
public UserAttributeNameType userAttributeName {
get {
return this.userAttributeNameField;
}
set {
this.userAttributeNameField = value;
}
}
/// <remarks/>
public string userAttributeValue {
get {
return this.userAttributeValueField;
}
set {
this.userAttributeValueField = value;
}
}
/// <remarks/>
public bool ignoreCase {
get {
return this.ignoreCaseField;
}
set {
this.ignoreCaseField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool ignoreCaseSpecified {
get {
return this.ignoreCaseFieldSpecified;
}
set {
this.ignoreCaseFieldSpecified = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public enum UserAttributeNameType {
/// <remarks/>
CN,
/// <remarks/>
Email,
/// <remarks/>
UID,
/// <remarks/>
rfc822Name,
/// <remarks/>
UPN,
/// <remarks/>
DNSName,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public enum HashAlgorithmType {
/// <remarks/>
sha512,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class PrepSignDataResponse {
private string clientTransactionIDField;
private string serverTransactionIDField;
private byte[] pkcs7SignedBlobField;
private string versionField;
/// <remarks/>
public string clientTransactionID {
get {
return this.clientTransactionIDField;
}
set {
this.clientTransactionIDField = value;
}
}
/// <remarks/>
public string serverTransactionID {
get {
return this.serverTransactionIDField;
}
set {
this.serverTransactionIDField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] pkcs7SignedBlob {
get {
return this.pkcs7SignedBlobField;
}
set {
this.pkcs7SignedBlobField = value;
}
}
/// <remarks/>
public string version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class VerifySignedDataRequest {
private string clientTransactionIDField;
private byte[] clientPkcs7SignedBlobField;
private string versionField;
/// <remarks/>
public string clientTransactionID {
get {
return this.clientTransactionIDField;
}
set {
this.clientTransactionIDField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] clientPkcs7SignedBlob {
get {
return this.clientPkcs7SignedBlobField;
}
set {
this.clientPkcs7SignedBlobField = value;
}
}
/// <remarks/>
public string version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class VerifySignedDataResponse {
private string clientTransactionIDField;
private string serverTransactionIDField;
private StatusType statusField;
private string versionField;
/// <remarks/>
public string clientTransactionID {
get {
return this.clientTransactionIDField;
}
set {
this.clientTransactionIDField = value;
}
}
/// <remarks/>
public string serverTransactionID {
get {
return this.serverTransactionIDField;
}
set {
this.serverTransactionIDField = value;
}
}
/// <remarks/>
public StatusType status {
get {
return this.statusField;
}
set {
this.statusField = value;
}
}
/// <remarks/>
public string version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public enum StatusType {
/// <remarks/>
SUCCESS,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class ToBeSignedPKCS7BlobType {
private SignDataInfoType signDataInfoField;
private string organizationField;
private string requestIdField;
private byte[] hashValueField;
private string versionField;
/// <remarks/>
public SignDataInfoType signDataInfo {
get {
return this.signDataInfoField;
}
set {
this.signDataInfoField = value;
}
}
/// <remarks/>
public string organization {
get {
return this.organizationField;
}
set {
this.organizationField = value;
}
}
/// <remarks/>
public string requestId {
get {
return this.requestIdField;
}
set {
this.requestIdField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] hashValue {
get {
return this.hashValueField;
}
set {
this.hashValueField = value;
}
}
/// <remarks/>
public string version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.symantec.com/pkiservices/2011/11/sign")]
public partial class ToBeSignedClientPKCS7BlobType {
private byte[] pkcs7SignedBlobField;
private byte[] toBeSignDataField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] pkcs7SignedBlob {
get {
return this.pkcs7SignedBlobField;
}
set {
this.pkcs7SignedBlobField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
public byte[] toBeSignData {
get {
return this.toBeSignDataField;
}
set {
this.toBeSignDataField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void prepSignDataCompletedEventHandler(object sender, prepSignDataCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class prepSignDataCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal prepSignDataCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public PrepSignDataResponse Result {
get {
this.RaiseExceptionIfNecessary();
return ((PrepSignDataResponse)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void verifySignedDataCompletedEventHandler(object sender, verifySignedDataCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class verifySignedDataCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal verifySignedDataCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public VerifySignedDataResponse Result {
get {
this.RaiseExceptionIfNecessary();
return ((VerifySignedDataResponse)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void noOpCompletedEventHandler(object sender, noOpCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class noOpCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal noOpCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public ToBeSignedClientPKCS7BlobType Result {
get {
this.RaiseExceptionIfNecessary();
return ((ToBeSignedClientPKCS7BlobType)(this.results[0]));
}
}
}
}
#pragma warning restore 1591

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/SignerAPI.wsdl" filename="SignerAPI.wsdl" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/SignerAPI.xsd" filename="SignerAPI.xsd" />
</Results>
</DiscoveryClientResultsFile>

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:vssign="http://schemas.symantec.com/pkiservices/2011/11/sign" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.symantec.com/pkiservices/2011/11/sign" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="SignerAPI.xsd" namespace="http://schemas.symantec.com/pkiservices/2011/11/sign" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="prepSignDataRequest">
<wsdl:part name="request" element="vssign:PrepSignDataRequest" />
</wsdl:message>
<wsdl:message name="prepSignDataResponse">
<wsdl:part name="response" element="vssign:PrepSignDataResponse" />
</wsdl:message>
<wsdl:message name="verifySignedDataRequest">
<wsdl:part name="request" element="vssign:VerifySignedDataRequest" />
</wsdl:message>
<wsdl:message name="verifySignedDataResponse">
<wsdl:part name="response" element="vssign:VerifySignedDataResponse" />
</wsdl:message>
<wsdl:message name="noOpRequest">
<wsdl:part name="request" element="vssign:ToBeSignedPKCS7BlobType" />
</wsdl:message>
<wsdl:message name="noOpResponse">
<wsdl:part name="response" element="vssign:ToBeSignedClientPKCS7BlobType" />
</wsdl:message>
<wsdl:portType name="signDataOperations">
<wsdl:operation name="prepSignData">
<wsdl:input message="vssign:prepSignDataRequest" />
<wsdl:output message="vssign:prepSignDataResponse" />
</wsdl:operation>
<wsdl:operation name="verifySignedData">
<wsdl:input message="vssign:verifySignedDataRequest" />
<wsdl:output message="vssign:verifySignedDataResponse" />
</wsdl:operation>
<wsdl:operation name="noOp">
<wsdl:input message="vssign:noOpRequest" />
<wsdl:output message="vssign:noOpResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="signDataServiceSOAP" type="vssign:signDataOperations">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="prepSignData">
<soap:operation soapAction="http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/prepSignDataRequest" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="verifySignedData">
<soap:operation soapAction="http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/verifySignedDataRequest" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="noOp">
<soap:operation soapAction="http://schemas.symantec.com/pkiservices/2011/11/sign/signDataOperations/noOpRequest" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="signDataService">
<wsdl:port name="signDataServiceSOAP" binding="vssign:signDataServiceSOAP">
<soap:address location="https://egwhost/signDataService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:vssign="http://schemas.symantec.com/pkiservices/2011/11/sign" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" targetNamespace="http://schemas.symantec.com/pkiservices/2011/11/sign" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,3}\.\d{0,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TransactionIDType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DescriptionType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="512" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="UserAttributeNameType">
<xs:restriction base="xs:string">
<xs:enumeration value="CN" />
<xs:enumeration value="Email" />
<xs:enumeration value="UID" />
<xs:enumeration value="rfc822Name" />
<xs:enumeration value="UPN" />
<xs:enumeration value="DNSName" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HashAlgorithmType">
<xs:restriction base="xs:string">
<xs:enumeration value="sha512" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="UserFilterType">
<xs:sequence>
<xs:element name="userAttributeName" type="vssign:UserAttributeNameType" />
<xs:element name="userAttributeValue" type="xs:string" />
<xs:element minOccurs="0" name="ignoreCase" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProfileIDFilterSetType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="profileOID" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserFilterSetType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="userFilter" type="vssign:UserFilterType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CertificateFilterType">
<xs:sequence>
<xs:element name="profileIDFilterSet" type="vssign:ProfileIDFilterSetType" />
<xs:element minOccurs="0" name="userFilterSet" type="vssign:UserFilterSetType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SignDataInfoType">
<xs:sequence>
<xs:element minOccurs="0" name="description" type="vssign:DescriptionType" />
<xs:element name="certificateFilter" type="vssign:CertificateFilterType" />
<xs:element name="hashAlgorithm" type="vssign:HashAlgorithmType" />
<xs:element name="urlFilter" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="PrepSignDataRequest">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vssign:TransactionIDType" />
<xs:element name="signDataInfo" type="vssign:SignDataInfoType" />
<xs:element name="toBeSignData" type="xs:base64Binary" />
<xs:element name="version" type="vssign:VersionType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ToBeSignedPKCS7BlobType">
<xs:complexType>
<xs:sequence>
<xs:element name="signDataInfo" type="vssign:SignDataInfoType" />
<xs:element name="organization" type="xs:string" />
<xs:element name="requestId" type="vssign:TransactionIDType" />
<xs:element name="hashValue" type="xs:base64Binary" />
<xs:element name="version" type="vssign:VersionType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PrepSignDataResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vssign:TransactionIDType" />
<xs:element name="serverTransactionID" type="vssign:TransactionIDType" />
<xs:element name="pkcs7SignedBlob" type="xs:base64Binary" />
<xs:element name="version" type="vssign:VersionType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ToBeSignedClientPKCS7BlobType">
<xs:complexType>
<xs:sequence>
<xs:element name="pkcs7SignedBlob" type="xs:base64Binary" />
<xs:element name="toBeSignData" type="xs:base64Binary" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VerifySignedDataRequest">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vssign:TransactionIDType" />
<xs:element name="clientPkcs7SignedBlob" type="xs:base64Binary" />
<xs:element name="version" type="vssign:VersionType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="StatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="SUCCESS" />
</xs:restriction>
</xs:simpleType>
<xs:element name="VerifySignedDataResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vssign:TransactionIDType" />
<xs:element name="serverTransactionID" type="vssign:TransactionIDType" />
<xs:element name="status" type="vssign:StatusType" />
<xs:element name="version" type="vssign:VersionType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="ToBeSignedClientPKCS7BlobType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.signDataService.ToBeSignedClientPKCS7BlobType, Web References.signDataService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="VerifySignedDataResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.signDataService.VerifySignedDataResponse, Web References.signDataService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/UserManagementService.xsd" filename="UserManagementService.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/UserManagementService.wsdl" filename="UserManagementService.wsdl" />
</Results>
</DiscoveryClientResultsFile>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:usermgmt="http://schemas.verisign.com/pkiservices/2011/08/usermanagement" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.verisign.com/pkiservices/2011/08/usermanagement" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="UserManagementService.xsd" namespace="http://schemas.verisign.com/pkiservices/2011/08/usermanagement" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="createOrUpdateUserRequest">
<wsdl:part name="request" element="usermgmt:createOrUpdateUserRequest" />
</wsdl:message>
<wsdl:message name="createOrUpdateUserResponse">
<wsdl:part name="response" element="usermgmt:createOrUpdateUserResponse" />
</wsdl:message>
<wsdl:message name="createOrUpdatePasscodeRequest">
<wsdl:part name="request" element="usermgmt:createOrUpdatePasscodeRequest" />
</wsdl:message>
<wsdl:message name="createOrUpdatePasscodeResponse">
<wsdl:part name="response" element="usermgmt:createOrUpdatePasscodeResponse" />
</wsdl:message>
<wsdl:message name="deleteUserRequest">
<wsdl:part name="request" element="usermgmt:deleteUserRequest" />
</wsdl:message>
<wsdl:message name="deleteUserResponse">
<wsdl:part name="response" element="usermgmt:deleteUserResponse" />
</wsdl:message>
<wsdl:message name="bulkDeleteUserRequest">
<wsdl:part name="request" element="usermgmt:bulkDeleteUserRequest" />
</wsdl:message>
<wsdl:message name="bulkDeleteUserResponse">
<wsdl:part name="response" element="usermgmt:bulkDeleteUserResponse" />
</wsdl:message>
<wsdl:message name="getPasscodeInformationRequest">
<wsdl:part name="request" element="usermgmt:getPasscodeInformationRequest" />
</wsdl:message>
<wsdl:message name="getPasscodeInformationResponse">
<wsdl:part name="response" element="usermgmt:getPasscodeInformationResponse" />
</wsdl:message>
<wsdl:message name="getUserInformationRequest">
<wsdl:part name="request" element="usermgmt:getUserInformationRequest" />
</wsdl:message>
<wsdl:message name="getUserInformationResponse">
<wsdl:part name="response" element="usermgmt:getUserInformationResponse" />
</wsdl:message>
<wsdl:portType name="userManagementOperations">
<wsdl:operation name="createOrUpdateUser">
<wsdl:input message="usermgmt:createOrUpdateUserRequest" />
<wsdl:output message="usermgmt:createOrUpdateUserResponse" />
</wsdl:operation>
<wsdl:operation name="createOrUpdatePasscode">
<wsdl:input message="usermgmt:createOrUpdatePasscodeRequest" />
<wsdl:output message="usermgmt:createOrUpdatePasscodeResponse" />
</wsdl:operation>
<wsdl:operation name="deleteUser">
<wsdl:input message="usermgmt:deleteUserRequest" />
<wsdl:output message="usermgmt:deleteUserResponse" />
</wsdl:operation>
<wsdl:operation name="bulkDeleteUser">
<wsdl:input message="usermgmt:bulkDeleteUserRequest" />
<wsdl:output message="usermgmt:bulkDeleteUserResponse" />
</wsdl:operation>
<wsdl:operation name="getPasscodeInformation">
<wsdl:input message="usermgmt:getPasscodeInformationRequest" />
<wsdl:output message="usermgmt:getPasscodeInformationResponse" />
</wsdl:operation>
<wsdl:operation name="getUserInformation">
<wsdl:input message="usermgmt:getUserInformationRequest" />
<wsdl:output message="usermgmt:getUserInformationResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="userManagementServiceSOAP" type="usermgmt:userManagementOperations">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="createOrUpdateUser">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="createOrUpdatePasscode">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="deleteUser">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="bulkDeleteUser">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getPasscodeInformation">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getUserInformation">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="userManagementService">
<wsdl:port name="userManagementServiceSOAP" binding="usermgmt:userManagementServiceSOAP">
<soap:address location="https://pki-ws.symauth.com/pki-ws/userManagementService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:usermgmt="http://schemas.verisign.com/pkiservices/2011/08/usermanagement" elementFormDefault="qualified" targetNamespace="http://schemas.verisign.com/pkiservices/2011/08/usermanagement" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,3}\.\d{0,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TransactionIDType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:element name="createOrUpdateUserRequest" type="usermgmt:CreateOrUpdateUserRequestMessageType" />
<xs:complexType name="CreateOrUpdateUserRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="unbounded" name="userInformation" type="usermgmt:UserInformationType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserInformationType">
<xs:sequence>
<xs:element name="seatId" type="xs:string" />
<xs:element minOccurs="0" name="firstName" type="xs:string" />
<xs:element minOccurs="0" name="lastName" type="xs:string" />
<xs:element minOccurs="0" name="emailAddress" type="xs:string" />
<xs:element minOccurs="0" name="deskPhoneNumber" type="xs:string" />
<xs:element minOccurs="0" name="mobilePhoneNumber" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="userAttribute" type="usermgmt:NameValueType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NameValueType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="createOrUpdateUserResponse" type="usermgmt:CreateOrUpdateUserResponseMessageType" />
<xs:complexType name="CreateOrUpdateUserResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="unbounded" name="userCreationStatus" type="usermgmt:UserCreationStatusType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserCreationStatusType">
<xs:sequence>
<xs:element name="seatId" type="xs:string" />
<xs:element name="statusCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="createOrUpdatePasscodeRequest" type="usermgmt:CreateOrUpdatePasscodeRequestMessageType" />
<xs:complexType name="CreateOrUpdatePasscodeRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="unbounded" name="passcodeInformation" type="usermgmt:PasscodeInformationType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PasscodeInformationType">
<xs:sequence>
<xs:element minOccurs="0" name="passcode" type="xs:string" />
<xs:element minOccurs="0" name="numberOfBadAttempts" type="xs:int" />
<xs:element minOccurs="0" name="passcodeStatus" type="xs:string" />
<xs:element minOccurs="0" name="expiryDateTime" type="xs:dateTime" />
<xs:element minOccurs="0" name="creationDateTime" type="xs:dateTime" />
<xs:element name="seatId" type="xs:string" />
<xs:element name="certificateProfileOid" type="xs:string" />
<xs:element minOccurs="0" name="enrollmentURL" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="createOrUpdatePasscodeResponse" type="usermgmt:CreateOrUpdatePasscodeResponseMessageType" />
<xs:complexType name="CreateOrUpdatePasscodeResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="unbounded" name="passcodeCreationStatus" type="usermgmt:PasscodeCreationStatusType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PasscodeCreationStatusType">
<xs:sequence>
<xs:element name="passcodeInformation" type="usermgmt:PasscodeInformationType" />
<xs:element name="statusCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="RevokeReasonCodeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Unspecified" />
<xs:enumeration value="KeyCompromise" />
<xs:enumeration value="CACompromise" />
<xs:enumeration value="AffiliationChanged" />
<xs:enumeration value="CessationOfOperation" />
<xs:enumeration value="PrivilegeWithdrawn" />
<xs:enumeration value="AACompromise" />
<xs:enumeration value="Superseded" />
</xs:restriction>
</xs:simpleType>
<xs:element name="deleteUserRequest" type="usermgmt:DeleteUserRequestMessageType" />
<xs:complexType name="DeleteUserRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="seatId" type="xs:string" />
<xs:element minOccurs="0" name="revocationReason" type="usermgmt:RevokeReasonCodeEnum" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="DeleteUserStatusType">
<xs:sequence>
<xs:element name="status" type="xs:string" />
<xs:element name="errorCode" type="xs:string" />
<xs:element name="seatId" type="xs:string" />
<xs:element name="revocationCount" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:element name="deleteUserResponse" type="usermgmt:DeleteUserResponseMessageType" />
<xs:complexType name="DeleteUserResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="deleteUserStatus" type="usermgmt:DeleteUserStatusType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="bulkDeleteUserRequest" type="usermgmt:BulkDeleteUserRequestMessageType" />
<xs:complexType name="BulkDeleteUserRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="25" name="seatId" type="xs:string" />
<xs:element minOccurs="0" name="revocationReason" type="usermgmt:RevokeReasonCodeEnum" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="bulkDeleteUserResponse" type="usermgmt:BulkDeleteUserResponseMessageType" />
<xs:complexType name="BulkDeleteUserResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element maxOccurs="25" name="deleteUserStatus" type="usermgmt:DeleteUserStatusType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="getPasscodeInformationRequest" type="usermgmt:GetPasscodeInformationRequestMessageType" />
<xs:complexType name="GetPasscodeInformationRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="seatId" type="xs:string" />
<xs:element name="certificateProfileOid" type="xs:string" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="getPasscodeInformationResponse" type="usermgmt:GetPasscodeInformationResponseMessageType" />
<xs:complexType name="GetPasscodeInformationResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="passcodeInformation" type="usermgmt:PasscodeInformationType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="getUserInformationRequest" type="usermgmt:GetUserInformationRequestMessageType" />
<xs:complexType name="GetUserInformationRequestMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="seatId" type="xs:string" />
<xs:element minOccurs="0" name="getUserCertificate" type="xs:boolean" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserValidCertificatesType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="userCertificate" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="getUserInformationResponse" type="usermgmt:GetUserInformationResponseMessageType" />
<xs:complexType name="GetUserInformationResponseMessageType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="serverTransactionID" type="usermgmt:TransactionIDType" />
<xs:element name="userInformation" type="usermgmt:UserInformationType" />
<xs:element minOccurs="0" name="userValidCertificates" type="usermgmt:UserValidCertificatesType" />
<xs:element name="version" type="usermgmt:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:schema>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://schemas.xmlsoap.org/ws/2004/09/policy/ws-policy.xsd" filename="ws-policy.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/VS_WSTEP.wsdl" filename="certificateService.wsdl" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" filename="oasis-200401-wss-wssecurity-utility-1.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://www.w3.org/2001/xml.xsd" filename="xml.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://schemas.xmlsoap.org/ws/2006/12/authorization/ws-authorization.xsd" filename="ws-authorization.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://www.w3.org/2006/03/addressing/ws-addr.xsd" filename="ws-addr.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/ws-trust-1.3-verisign.wsdl" filename="ws-trust-1.wsdl" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/ws-trust-1.3-verisign.xsd" filename="ws-trust-1.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" filename="oasis-200401-wss-wssecurity-secext-1.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" filename="xmldsig-core-schema.xsd" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="file:///C:/Users/Youra/Documents/GitHub/my-vmprotect/tagg/VS_WSTEP.xsd" filename="VS_WSTEP.xsd" />
</Results>
</DiscoveryClientResultsFile>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="RequestSecurityTokenResponseCollectionType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.veriSignCertIssuingService.RequestSecurityTokenResponseCollectionType, Web References.veriSignCertIssuingService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="RequestSecurityTokenResponseType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>taggantWrapper.veriSignCertIssuingService.RequestSecurityTokenResponseType, Web References.veriSignCertIssuingService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:vswstep="http://schemas.verisign.com/pkiservices/2009/07/enrollment" xmlns:auth="http://schemas.xmlsoap.org/ws/2006/12/authorization" elementFormDefault="qualified" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/enrollment" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
<xs:import schemaLocation="http://schemas.xmlsoap.org/ws/2006/12/authorization/ws-authorization.xsd" namespace="http://schemas.xmlsoap.org/ws/2006/12/authorization" />
<xs:import schemaLocation="ws-trust-1.3-verisign.xsd" namespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" />
<xs:annotation>
<xs:documentation xml:lang="en">
XML Schema for veriSignCertIssuingService Web Services
version 1.0
</xs:documentation>
</xs:annotation>
<xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,3}\.\d{0,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TransactionIDType" final="restriction">
<xs:restriction base="xs:string">
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="NameValueType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="TokenType">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
<xs:enumeration value="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7" />
<xs:enumeration value="http://schemas.verisign.com/pkiservices/2009/07/PKCS12" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RequestTypeEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Renew" />
<xs:enumeration value="http://schemas.verisign.com/pkiservices/2009/07/QueryTokenStatus" />
</xs:restriction>
</xs:simpleType>
<xs:element name="requestVSSecurityToken" type="vswstep:RequestVSSecurityTokenEnrollmentType" />
<xs:complexType name="RequestVSSecurityTokenEnrollmentType">
<xs:sequence>
<xs:element name="certificateProfileID" type="xs:string" />
<xs:element minOccurs="0" name="clientTransactionID" type="vswstep:TransactionIDType" />
<xs:element minOccurs="0" name="tokenType" type="vswstep:TokenType" />
<xs:element name="requestType" type="vswstep:RequestTypeEnum" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="binarySecurityToken" type="wsse:BinarySecurityTokenType" />
<xs:element minOccurs="0" name="additionalContext" type="auth:AdditionalContextType" />
<xs:element minOccurs="0" name="pendingTokenReferenceID" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="nameValuePair" type="vswstep:NameValueType" />
<xs:element name="version" type="vswstep:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:attribute name="preferredLanguage" type="xs:language" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="RequestVSSecurityTokenResponse" type="vswstep:RequestVSSecurityTokenResponseEnrollmentType" />
<xs:complexType name="RequestVSSecurityTokenResponseEnrollmentType">
<xs:sequence>
<xs:element minOccurs="0" name="clientTransactionID" type="vswstep:TransactionIDType" />
<xs:element name="serverTransactionID" type="vswstep:TransactionIDType" />
<xs:element minOccurs="0" name="tokenType" type="vswstep:TokenType" />
<xs:element minOccurs="0" name="dispositionMessage" type="xs:string" />
<xs:element minOccurs="0" name="binarySecurityToken" type="wsse:BinarySecurityTokenType" />
<xs:element minOccurs="0" name="requestedVSSecurityToken" type="vswstep:RequestedVSSecurityTokenEnrollmentType" />
<xs:element name="version" type="vswstep:VersionType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace" processContents="lax" />
</xs:sequence>
<xs:attribute name="preferredLanguage" type="xs:language" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:complexType name="RequestedVSSecurityTokenEnrollmentType">
<xs:choice>
<xs:sequence>
<xs:element name="binarySecurityToken" type="wsse:BinarySecurityTokenType" />
<xs:element minOccurs="0" name="pKCS12Password" type="xs:string" />
</xs:sequence>
<xs:element name="pendingTokenReferenceID" type="xs:string" />
</xs:choice>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:vswstep="http://schemas.verisign.com/pkiservices/2009/07/enrollment" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="certificateService" targetNamespace="http://schemas.verisign.com/pkiservices/2009/07/enrollment" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<xsd:annotation>
<xsd:documentation xml:lang="en">
XML WSDL for VeriSign
Certificate Web Services
version 1.0
</xsd:documentation>
</xsd:annotation>
<wsdl:import namespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" location="ws-trust-1.3-verisign.wsdl" />
<wsdl:types />
<wsdl:binding name="veriSignCertIssuingServiceSOAP" type="wst:SecurityTokenService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="RequestSecurityToken">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/enrollment/requestSecurityToken" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RequestSecurityToken2">
<soap:operation soapAction="http://schemas.verisign.com/pkiservices/2009/07/enrollment/requestSecurityToken2" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="veriSignCertIssuingService">
<wsdl:port name="veriSignCertServiceSOAP" binding="vswstep:veriSignCertIssuingServiceSOAP">
<soap:address location="https://pki-ws.symauth.com/pki-ws/enrollmentService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" attributeFormDefault="unqualified" blockDefault="#all" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" version="0.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xsd:import schemaLocation="http://www.w3.org/2001/xml.xsd" namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:import schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#" />
<xsd:complexType name="AttributedString">
<xsd:annotation>
<xsd:documentation>This type represents an element with arbitrary attributes.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="wsu:Id" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="PasswordString">
<xsd:annotation>
<xsd:documentation>This type is used for password elements per Section 4.1.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="wsse:AttributedString">
<xsd:attribute name="Type" type="xsd:anyURI" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="EncodedString">
<xsd:annotation>
<xsd:documentation>This type is used for elements containing stringified binary data.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="wsse:AttributedString">
<xsd:attribute name="EncodingType" type="xsd:anyURI" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="UsernameTokenType">
<xsd:annotation>
<xsd:documentation>This type represents a username token per Section 4.1</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Username" type="wsse:AttributedString" />
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
</xsd:sequence>
<xsd:attribute ref="wsu:Id" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:complexType name="BinarySecurityTokenType">
<xsd:annotation>
<xsd:documentation>A security token that is encoded in binary</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="wsse:EncodedString">
<xsd:attribute name="ValueType" type="xsd:anyURI" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="KeyIdentifierType">
<xsd:annotation>
<xsd:documentation>A security token key identifier</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="wsse:EncodedString">
<xsd:attribute name="ValueType" type="xsd:anyURI" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="tUsage">
<xsd:annotation>
<xsd:documentation>Typedef to allow a list of usages (as URIs).</xsd:documentation>
</xsd:annotation>
<xsd:list itemType="xsd:anyURI" />
</xsd:simpleType>
<xsd:attribute name="Usage" type="wsse:tUsage">
<xsd:annotation>
<xsd:documentation>This global attribute is used to indicate the usage of a referenced or indicated token within the containing context</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:complexType name="ReferenceType">
<xsd:annotation>
<xsd:documentation>This type represents a reference to an external security token.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="URI" type="xsd:anyURI" />
<xsd:attribute name="ValueType" type="xsd:anyURI" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:complexType name="EmbeddedType">
<xsd:annotation>
<xsd:documentation>This type represents a reference to an embedded security token.</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any processContents="lax" />
</xsd:choice>
<xsd:attribute name="ValueType" type="xsd:anyURI" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:complexType name="SecurityTokenReferenceType">
<xsd:annotation>
<xsd:documentation>This type is used reference a security token.</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any processContents="lax" />
</xsd:choice>
<xsd:attribute ref="wsu:Id" />
<xsd:attribute ref="wsse:Usage" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:complexType name="SecurityHeaderType">
<xsd:annotation>
<xsd:documentation>This complexType defines header block to use for security-relevant data directed at a specific SOAP actor.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax">
<xsd:annotation>
<xsd:documentation>The use of "any" is to allow extensibility and different forms of security data.</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:sequence>
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:complexType name="TransformationParametersType">
<xsd:annotation>
<xsd:documentation>This complexType defines a container for elements to be specified from any namespace as properties/parameters of a DSIG transformation.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax">
<xsd:annotation>
<xsd:documentation>The use of "any" is to allow extensibility from any namespace.</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:sequence>
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
<xsd:element name="UsernameToken" type="wsse:UsernameTokenType">
<xsd:annotation>
<xsd:documentation>This element defines the wsse:UsernameToken element per Section 4.1.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="BinarySecurityToken" type="wsse:BinarySecurityTokenType">
<xsd:annotation>
<xsd:documentation>This element defines the wsse:BinarySecurityToken element per Section 4.2.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Reference" type="wsse:ReferenceType">
<xsd:annotation>
<xsd:documentation>This element defines a security token reference</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Embedded" type="wsse:EmbeddedType">
<xsd:annotation>
<xsd:documentation>This element defines a security token embedded reference</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="KeyIdentifier" type="wsse:KeyIdentifierType">
<xsd:annotation>
<xsd:documentation>This element defines a key identifier reference</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="SecurityTokenReference" type="wsse:SecurityTokenReferenceType">
<xsd:annotation>
<xsd:documentation>This element defines the wsse:SecurityTokenReference per Section 4.3.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Security" type="wsse:SecurityHeaderType">
<xsd:annotation>
<xsd:documentation>This element defines the wsse:Security SOAP header element per Section 4.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="TransformationParameters" type="wsse:TransformationParametersType">
<xsd:annotation>
<xsd:documentation>This element contains properties for transformations from any namespace, including DSIG.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Password" type="wsse:PasswordString" />
<xsd:element name="Nonce" type="wsse:EncodedString" />
<xsd:simpleType name="FaultcodeEnum">
<xsd:restriction base="xsd:QName">
<xsd:enumeration value="wsse:UnsupportedSecurityToken" />
<xsd:enumeration value="wsse:UnsupportedAlgorithm" />
<xsd:enumeration value="wsse:InvalidSecurity" />
<xsd:enumeration value="wsse:InvalidSecurityToken" />
<xsd:enumeration value="wsse:FailedAuthentication" />
<xsd:enumeration value="wsse:FailedCheck" />
<xsd:enumeration value="wsse:SecurityTokenUnavailable" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" version="0.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="tTimestampFault">
<xsd:annotation>
<xsd:documentation>
This type defines the fault code value for Timestamp message expiration.
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:QName">
<xsd:enumeration value="wsu:MessageExpired" />
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:documentation>
This global attribute supports annotating arbitrary elements with an ID.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attributeGroup name="commonAtts">
<xsd:annotation>
<xsd:documentation>
Convenience attribute group used to simplify this schema.
</xsd:documentation>
</xsd:annotation>
<xsd:attribute ref="wsu:Id" use="optional" />
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:attributeGroup>
<xsd:complexType name="AttributedDateTime">
<xsd:annotation>
<xsd:documentation>
This type is for elements whose [children] is a psuedo-dateTime and can have arbitrary attributes.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="wsu:commonAtts" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="AttributedURI">
<xsd:annotation>
<xsd:documentation>
This type is for elements whose [children] is an anyURI and can have arbitrary attributes.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:anyURI">
<xsd:attributeGroup ref="wsu:commonAtts" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="TimestampType">
<xsd:annotation>
<xsd:documentation>
This complex type ties together the timestamp related elements into a composite type.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element minOccurs="0" ref="wsu:Created" />
<xsd:element minOccurs="0" ref="wsu:Expires" />
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="lax" />
</xsd:choice>
</xsd:sequence>
<xsd:attributeGroup ref="wsu:commonAtts" />
</xsd:complexType>
<xsd:element name="Timestamp" type="wsu:TimestampType">
<xsd:annotation>
<xsd:documentation>
This element allows Timestamps to be applied anywhere element wildcards are present,
including as a SOAP header.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Expires" type="wsu:AttributedDateTime">
<xsd:annotation>
<xsd:documentation>
This element allows an expiration time to be applied anywhere element wildcards are present.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Created" type="wsu:AttributedDateTime">
<xsd:annotation>
<xsd:documentation>
This element allows a creation time to be applied anywhere element wildcards are present.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:schema>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://www.w3.org/2005/08/addressing" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/08/addressing" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EndpointReference" type="tns:EndpointReferenceType" />
<xs:complexType name="EndpointReferenceType">
<xs:sequence>
<xs:element name="Address" type="tns:AttributedURIType" />
<xs:element minOccurs="0" ref="tns:ReferenceParameters" />
<xs:element minOccurs="0" ref="tns:Metadata" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="ReferenceParameters" type="tns:ReferenceParametersType" />
<xs:complexType name="ReferenceParametersType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="Metadata" type="tns:MetadataType" />
<xs:complexType name="MetadataType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="MessageID" type="tns:AttributedURIType" />
<xs:element name="RelatesTo" type="tns:RelatesToType" />
<xs:complexType name="RelatesToType">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute default="http://www.w3.org/2005/08/addressing/reply" name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="RelationshipTypeOpenEnum">
<xs:union memberTypes="tns:RelationshipType xs:anyURI" />
</xs:simpleType>
<xs:simpleType name="RelationshipType">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://www.w3.org/2005/08/addressing/reply" />
</xs:restriction>
</xs:simpleType>
<xs:element name="ReplyTo" type="tns:EndpointReferenceType" />
<xs:element name="From" type="tns:EndpointReferenceType" />
<xs:element name="FaultTo" type="tns:EndpointReferenceType" />
<xs:element name="To" type="tns:AttributedURIType" />
<xs:element name="Action" type="tns:AttributedURIType" />
<xs:complexType name="AttributedURIType">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:attribute name="IsReferenceParameter" type="xs:boolean" />
<xs:simpleType name="FaultCodesOpenEnumType">
<xs:union memberTypes="tns:FaultCodesType xs:QName" />
</xs:simpleType>
<xs:simpleType name="FaultCodesType">
<xs:restriction base="xs:QName">
<xs:enumeration value="tns:InvalidAddressingHeader" />
<xs:enumeration value="tns:InvalidAddress" />
<xs:enumeration value="tns:InvalidEPR" />
<xs:enumeration value="tns:InvalidCardinality" />
<xs:enumeration value="tns:MissingAddressInEPR" />
<xs:enumeration value="tns:DuplicateMessageID" />
<xs:enumeration value="tns:ActionMismatch" />
<xs:enumeration value="tns:MessageAddressingHeaderRequired" />
<xs:enumeration value="tns:DestinationUnreachable" />
<xs:enumeration value="tns:ActionNotSupported" />
<xs:enumeration value="tns:EndpointUnavailable" />
</xs:restriction>
</xs:simpleType>
<xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType" />
<xs:complexType name="AttributedUnsignedLongType">
<xs:simpleContent>
<xs:extension base="xs:unsignedLong">
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType" />
<xs:complexType name="AttributedQNameType">
<xs:simpleContent>
<xs:extension base="xs:QName">
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemIRI" type="tns:AttributedURIType" />
<xs:element name="ProblemAction" type="tns:ProblemActionType" />
<xs:complexType name="ProblemActionType">
<xs:sequence>
<xs:element minOccurs="0" ref="tns:Action" />
<xs:element minOccurs="0" name="SoapAction" type="xs:anyURI" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.xmlsoap.org/ws/2006/12/authorization" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/ws/2006/12/authorization" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AdditionalContext" type="tns:AdditionalContextType" />
<xs:complexType name="AdditionalContextType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ContextItem" type="tns:ContextItemType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:complexType name="ContextItemType">
<xs:choice minOccurs="0">
<xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:string" />
<xs:any minOccurs="1" maxOccurs="1" namespace="##other" processContents="lax" />
</xs:choice>
<xs:attribute name="Name" type="xs:anyURI" use="required" />
<xs:attribute name="Scope" type="xs:anyURI" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="ClaimType" type="tns:ClaimType" />
<xs:complexType name="ClaimType">
<xs:choice minOccurs="0">
<xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:string" />
<xs:any minOccurs="1" maxOccurs="1" namespace="##other" processContents="lax" />
</xs:choice>
<xs:attribute name="Uri" type="xs:anyURI" use="required" />
<xs:attribute name="Optional" type="xs:boolean" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:tns="http://schemas.xmlsoap.org/ws/2004/09/policy" blockDefault="#all" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
<xs:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xs:element name="Policy">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:OperatorContentType">
<xs:attribute name="Name" type="xs:anyURI" />
<xs:attribute ref="wsu:Id" />
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="All" type="tns:OperatorContentType" />
<xs:element name="ExactlyOne" type="tns:OperatorContentType" />
<xs:complexType name="OperatorContentType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tns:Policy" />
<xs:element ref="tns:All" />
<xs:element ref="tns:ExactlyOne" />
<xs:element ref="tns:PolicyReference" />
<xs:any namespace="##other" processContents="lax" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="PolicyReference">
<xs:complexType>
<xs:attribute name="URI" type="xs:anyURI" use="required" />
<xs:attribute name="Digest" type="xs:base64Binary" />
<xs:attribute default="http://schemas.xmlsoap.org/ws/2004/09/policy/Sha1Exc" name="DigestAlgorithm" type="xs:anyURI" />
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:complexType>
</xs:element>
<xs:attribute default="false" name="Optional" type="xs:boolean" />
<xs:attribute name="PolicyURIs">
<xs:simpleType>
<xs:list itemType="xs:anyURI" />
</xs:simpleType>
</xs:attribute>
<xs:element name="PolicyAttachment">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:AppliesTo" />
<xs:choice maxOccurs="unbounded">
<xs:element ref="tns:Policy" />
<xs:element ref="tns:PolicyReference" />
</xs:choice>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:complexType>
</xs:element>
<xs:element name="AppliesTo">
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" targetNamespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:schema>
<xs:import schemaLocation="ws-trust-1.3-verisign.xsd" namespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" />
</xs:schema>
</wsdl:types>
<wsdl:message name="RequestSecurityTokenMsg">
<wsdl:part name="request" element="tns:RequestSecurityToken" />
</wsdl:message>
<wsdl:message name="RequestSecurityTokenCollectionMsg">
<wsdl:part name="request" element="tns:RequestSecurityTokenCollection" />
</wsdl:message>
<wsdl:message name="RequestSecurityTokenResponseMsg">
<wsdl:part name="response" element="tns:RequestSecurityTokenResponse" />
</wsdl:message>
<wsdl:message name="RequestSecurityTokenResponseCollectionMsg">
<wsdl:part name="responseCollection" element="tns:RequestSecurityTokenResponseCollection" />
</wsdl:message>
<wsdl:portType name="WSSecurityRequestor">
<wsdl:operation name="SecurityTokenResponse">
<wsdl:input message="tns:RequestSecurityTokenResponseMsg" />
</wsdl:operation>
<wsdl:operation name="SecurityTokenResponse2">
<wsdl:input message="tns:RequestSecurityTokenResponseCollectionMsg" />
</wsdl:operation>
<wsdl:operation name="Challenge">
<wsdl:input message="tns:RequestSecurityTokenResponseMsg" />
<wsdl:output message="tns:RequestSecurityTokenResponseMsg" />
</wsdl:operation>
<wsdl:operation name="Challenge2">
<wsdl:input message="tns:RequestSecurityTokenResponseMsg" />
<wsdl:output message="tns:RequestSecurityTokenResponseCollectionMsg" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="SecurityTokenRequestService">
<wsdl:operation name="RequestSecurityToken">
<wsdl:input message="tns:RequestSecurityTokenMsg" />
</wsdl:operation>
<wsdl:operation name="RequestSecurityTokenCollection">
<wsdl:input message="tns:RequestSecurityTokenCollectionMsg" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="SecurityTokenService">
<wsdl:operation name="RequestSecurityToken">
<wsdl:input message="tns:RequestSecurityTokenMsg" />
<wsdl:output message="tns:RequestSecurityTokenResponseMsg" />
</wsdl:operation>
<wsdl:operation name="RequestSecurityToken2">
<wsdl:input message="tns:RequestSecurityTokenMsg" />
<wsdl:output message="tns:RequestSecurityTokenResponseCollectionMsg" />
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>

View File

@@ -0,0 +1,359 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:vswstep="http://schemas.verisign.com/pkiservices/2009/07/enrollment" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
<xs:import schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xs:import schemaLocation="http://schemas.xmlsoap.org/ws/2004/09/policy/ws-policy.xsd" namespace="http://schemas.xmlsoap.org/ws/2004/09/policy" />
<xs:import schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd" namespace="http://www.w3.org/2005/08/addressing" />
<xs:import schemaLocation="VS_WSTEP.xsd" namespace="http://schemas.verisign.com/pkiservices/2009/07/enrollment" />
<xs:element name="RequestSecurityToken" type="wst:RequestSecurityTokenType" />
<xs:complexType name="RequestSecurityTokenType">
<xs:annotation>
<xs:documentation>
Actual content model is non-deterministic, hence wildcard. The following shows intended content model:
&lt;xs:element ref='wst:TokenType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:RequestType' /&gt;
&lt;xs:element ref='wsp:AppliesTo' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Claims' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Entropy' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Lifetime' minOccurs='0' /&gt;
&lt;xs:element ref='wst:AllowPostdating' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Renewing' minOccurs='0' /&gt;
&lt;xs:element ref='wst:OnBehalfOf' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Issuer' minOccurs='0' /&gt;
&lt;xs:element ref='wst:AuthenticationType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:KeyType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:KeySize' minOccurs='0' /&gt;
&lt;xs:element ref='wst:SignatureAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Encryption' minOccurs='0' /&gt;
&lt;xs:element ref='wst:EncryptionAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:CanonicalizationAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:ProofEncryption' minOccurs='0' /&gt;
&lt;xs:element ref='wst:UseKey' minOccurs='0' /&gt;
&lt;xs:element ref='wst:SignWith' minOccurs='0' /&gt;
&lt;xs:element ref='wst:EncryptWith' minOccurs='0' /&gt;
&lt;xs:element ref='wst:DelegateTo' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Forwardable' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Delegatable' minOccurs='0' /&gt;
&lt;xs:element ref='wsp:Policy' minOccurs='0' /&gt;
&lt;xs:element ref='wsp:PolicyReference' minOccurs='0' /&gt;
&lt;xs:any namespace='##other' processContents='lax' minOccurs='0' maxOccurs='unbounded' /&gt;
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element ref="vswstep:requestVSSecurityToken" />
</xs:choice>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:attribute name="Context" type="xs:anyURI" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="TokenType" type="xs:anyURI" />
<xs:element name="RequestType" type="wst:RequestTypeOpenEnum" />
<xs:simpleType name="RequestTypeOpenEnum">
<xs:union memberTypes="wst:RequestTypeEnum xs:anyURI" />
</xs:simpleType>
<xs:simpleType name="RequestTypeEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Renew" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Cancel" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/STSCancel" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Validate" />
</xs:restriction>
</xs:simpleType>
<xs:element name="RequestSecurityTokenResponse" type="wst:RequestSecurityTokenResponseType" />
<xs:complexType name="RequestSecurityTokenResponseType">
<xs:annotation>
<xs:documentation>
Actual content model is non-deterministic, hence wildcard. The following shows intended content model:
&lt;xs:element ref='wst:TokenType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:RequestType' /&gt;
&lt;xs:element ref='wst:RequestedSecurityToken' minOccurs='0' /&gt;
&lt;xs:element ref='wsp:AppliesTo' minOccurs='0' /&gt;
&lt;xs:element ref='wst:RequestedAttachedReference' minOccurs='0' /&gt;
&lt;xs:element ref='wst:RequestedUnattachedReference' minOccurs='0' /&gt;
&lt;xs:element ref='wst:RequestedProofToken' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Entropy' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Lifetime' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Status' minOccurs='0' /&gt;
&lt;xs:element ref='wst:AllowPostdating' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Renewing' minOccurs='0' /&gt;
&lt;xs:element ref='wst:OnBehalfOf' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Issuer' minOccurs='0' /&gt;
&lt;xs:element ref='wst:AuthenticationType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Authenticator' minOccurs='0' /&gt;
&lt;xs:element ref='wst:KeyType' minOccurs='0' /&gt;
&lt;xs:element ref='wst:KeySize' minOccurs='0' /&gt;
&lt;xs:element ref='wst:SignatureAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Encryption' minOccurs='0' /&gt;
&lt;xs:element ref='wst:EncryptionAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:CanonicalizationAlgorithm' minOccurs='0' /&gt;
&lt;xs:element ref='wst:ProofEncryption' minOccurs='0' /&gt;
&lt;xs:element ref='wst:UseKey' minOccurs='0' /&gt;
&lt;xs:element ref='wst:SignWith' minOccurs='0' /&gt;
&lt;xs:element ref='wst:EncryptWith' minOccurs='0' /&gt;
&lt;xs:element ref='wst:DelegateTo' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Forwardable' minOccurs='0' /&gt;
&lt;xs:element ref='wst:Delegatable' minOccurs='0' /&gt;
&lt;xs:element ref='wsp:Policy' minOccurs='0' /&gt;
&lt;xs:element ref='wsp:PolicyReference' minOccurs='0' /&gt;
&lt;xs:any namespace='##other' processContents='lax' minOccurs='0' maxOccurs='unbounded' /&gt;
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element ref="vswstep:RequestVSSecurityTokenResponse" />
</xs:choice>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:attribute name="Context" type="xs:anyURI" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="RequestedSecurityToken" type="wst:RequestedSecurityTokenType" />
<xs:complexType name="RequestedSecurityTokenType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="BinarySecret" type="wst:BinarySecretType" />
<xs:complexType name="BinarySecretType">
<xs:simpleContent>
<xs:extension base="xs:base64Binary">
<xs:attribute name="Type" type="wst:BinarySecretTypeOpenEnum" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="BinarySecretTypeEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/AsymmetricKey" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Nonce" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BinarySecretTypeOpenEnum">
<xs:union memberTypes="wst:BinarySecretTypeEnum xs:anyURI" />
</xs:simpleType>
<xs:element name="Claims" type="wst:ClaimsType" />
<xs:complexType name="ClaimsType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:attribute name="Dialect" type="xs:anyURI" use="optional" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="Entropy" type="wst:EntropyType" />
<xs:complexType name="EntropyType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="Lifetime" type="wst:LifetimeType" />
<xs:complexType name="LifetimeType">
<xs:sequence>
<xs:element minOccurs="0" ref="wsu:Created" />
<xs:element minOccurs="0" ref="wsu:Expires" />
</xs:sequence>
</xs:complexType>
<xs:element name="RequestSecurityTokenCollection" type="wst:RequestSecurityTokenCollectionType" />
<xs:complexType name="RequestSecurityTokenCollectionType">
<xs:annotation>
<xs:documentation>
The RequestSecurityTokenCollection (RSTC) element is used to provide multiple RST requests.
One or more RSTR elements in an RSTRC element are returned in the response to the RequestSecurityTokenCollection.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="2" maxOccurs="unbounded" name="RequestSecurityToken" type="wst:RequestSecurityTokenType" />
</xs:sequence>
</xs:complexType>
<xs:element name="RequestSecurityTokenResponseCollection" type="wst:RequestSecurityTokenResponseCollectionType" />
<xs:complexType name="RequestSecurityTokenResponseCollectionType">
<xs:annotation>
<xs:documentation>
The &lt;wst:RequestSecurityTokenResponseCollection&gt; element (RSTRC) MUST be used to return a security token or
response to a security token request on the final response.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="wst:RequestSecurityTokenResponse" />
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
<xs:element name="ComputedKey" type="wst:ComputedKeyOpenEnum" />
<xs:simpleType name="ComputedKeyEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/HASH" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ComputedKeyOpenEnum">
<xs:union memberTypes="wst:ComputedKeyEnum xs:anyURI" />
</xs:simpleType>
<xs:element name="RequestedAttachedReference" type="wst:RequestedReferenceType" />
<xs:element name="RequestedUnattachedReference" type="wst:RequestedReferenceType" />
<xs:complexType name="RequestedReferenceType">
<xs:sequence>
<xs:element ref="wsse:SecurityTokenReference" />
</xs:sequence>
</xs:complexType>
<xs:element name="RequestedProofToken" type="wst:RequestedProofTokenType" />
<xs:complexType name="RequestedProofTokenType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="IssuedTokens" type="wst:RequestSecurityTokenResponseCollectionType" />
<xs:element name="RenewTarget" type="wst:RenewTargetType" />
<xs:complexType name="RenewTargetType">
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="1" namespace="##other" />
</xs:sequence>
</xs:complexType>
<xs:element name="AllowPostdating" type="wst:AllowPostdatingType" />
<xs:complexType name="AllowPostdatingType" />
<xs:element name="Renewing" type="wst:RenewingType" />
<xs:complexType name="RenewingType">
<xs:attribute name="Allow" type="xs:boolean" use="optional" />
<xs:attribute name="OK" type="xs:boolean" use="optional" />
</xs:complexType>
<xs:element name="CancelTarget" type="wst:CancelTargetType" />
<xs:complexType name="CancelTargetType">
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="1" namespace="##other" />
</xs:sequence>
</xs:complexType>
<xs:element name="RequestedTokenCancelled" type="wst:RequestedTokenCancelledType" />
<xs:complexType name="RequestedTokenCancelledType" />
<xs:element name="ValidateTarget" type="wst:ValidateTargetType" />
<xs:complexType name="ValidateTargetType">
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="1" namespace="##other" />
</xs:sequence>
</xs:complexType>
<xs:element name="Status" type="wst:StatusType" />
<xs:complexType name="StatusType">
<xs:sequence>
<xs:element name="Code" type="wst:StatusCodeOpenEnum" />
<xs:element minOccurs="0" name="Reason" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="StatusCodeEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/status/valid" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/status/invalid" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatusCodeOpenEnum">
<xs:union memberTypes="wst:StatusCodeEnum xs:anyURI" />
</xs:simpleType>
<xs:element name="SignChallenge" type="wst:SignChallengeType" />
<xs:element name="SignChallengeResponse" type="wst:SignChallengeType" />
<xs:complexType name="SignChallengeType">
<xs:sequence>
<xs:element ref="wst:Challenge" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:complexType>
<xs:element name="Challenge" type="xs:string" />
<xs:element name="BinaryExchange" type="wst:BinaryExchangeType" />
<xs:complexType name="BinaryExchangeType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ValueType" type="xs:anyURI" use="required" />
<xs:attribute name="EncodingType" type="xs:anyURI" use="required" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="RequestKET" type="wst:RequestKETType" />
<xs:complexType name="RequestKETType" />
<xs:element name="KeyExchangeToken" type="wst:KeyExchangeTokenType" />
<xs:complexType name="KeyExchangeTokenType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="Authenticator" type="wst:AuthenticatorType" />
<xs:complexType name="AuthenticatorType">
<xs:sequence>
<xs:element minOccurs="0" ref="wst:CombinedHash" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="CombinedHash" type="xs:base64Binary" />
<xs:element name="OnBehalfOf" type="wst:OnBehalfOfType" />
<xs:complexType name="OnBehalfOfType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="Issuer" type="wsa:EndpointReferenceType" />
<xs:element name="AuthenticationType" type="xs:anyURI" />
<xs:element name="KeyType" type="wst:KeyTypeOpenEnum" />
<xs:simpleType name="KeyTypeEnum">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/PublicKey" />
<xs:enumeration value="http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey" />
<xs:enumeration value="http://docs.oasis-open.org/wssx/wstrust/200512/Bearer" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="KeyTypeOpenEnum">
<xs:union memberTypes="wst:KeyTypeEnum xs:anyURI" />
</xs:simpleType>
<xs:element name="KeySize" type="xs:unsignedInt" />
<xs:element name="SignatureAlgorithm" type="xs:anyURI" />
<xs:element name="EncryptionAlgorithm" type="xs:anyURI" />
<xs:element name="CanonicalizationAlgorithm" type="xs:anyURI" />
<xs:element name="ComputedKeyAlgorithm" type="xs:anyURI" />
<xs:element name="Encryption" type="wst:EncryptionType" />
<xs:complexType name="EncryptionType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="ProofEncryption" type="wst:ProofEncryptionType" />
<xs:complexType name="ProofEncryptionType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="UseKey" type="wst:UseKeyType" />
<xs:complexType name="UseKeyType">
<xs:sequence>
<xs:any minOccurs="0" namespace="##any" processContents="lax" />
</xs:sequence>
<xs:attribute name="Sig" type="xs:anyURI" use="optional" />
</xs:complexType>
<xs:element name="KeyWrapAlgorithm" type="xs:anyURI" />
<xs:element name="SignWith" type="xs:anyURI" />
<xs:element name="EncryptWith" type="xs:anyURI" />
<xs:element name="DelegateTo" type="wst:DelegateToType" />
<xs:complexType name="DelegateToType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:element name="Forwardable" type="xs:boolean" />
<xs:element name="Delegatable" type="xs:boolean" />
<xs:element name="Participants" type="wst:ParticipantsType" />
<xs:complexType name="ParticipantsType">
<xs:sequence>
<xs:element minOccurs="0" name="Primary" type="wst:ParticipantType" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="Participant" type="wst:ParticipantType" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ParticipantType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.w3.org/1999/xhtml" targetNamespace="http://www.w3.org/XML/1998/namespace" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>About the XML namespace</h1>
<div class="bodytext">
<p>
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
</p>
<p>
See <a href="http://www.w3.org/XML/1998/namespace.html">
http://www.w3.org/XML/1998/namespace.html</a> and
<a href="http://www.w3.org/TR/REC-xml">
http://www.w3.org/TR/REC-xml</a> for information
about this namespace.
</p>
<p>
Note that local names in this namespace are intended to be
defined only by the World Wide Web Consortium or its subgroups.
The names currently defined in this namespace are listed below.
They should not be used with conflicting semantics by any Working
Group, specification, or document instance.
</p>
<p>
See further below in this document for more information about <a href="#usage">how to refer to this schema document from your own
XSD schema documents</a> and about <a href="#nsversioning">the
namespace-versioning policy governing this schema document</a>.
</p>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h3>lang (as an attribute name)</h3>
<p>
denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.</p>
</div>
<div xmlns="http://www.w3.org/1999/xhtml">
<h4>Notes</h4>
<p>
Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility.
</p>
<p>
See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
and the IANA language subtag registry at
<a href="http://www.iana.org/assignments/language-subtag-registry">
http://www.iana.org/assignments/language-subtag-registry</a>
for further information.
</p>
<p>
The union allows for the 'un-declaration' of xml:lang with
the empty string.
</p>
</div>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union memberTypes="xs:language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="space">
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h3>space (as an attribute name)</h3>
<p>
denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.</p>
</div>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="default" />
<xs:enumeration value="preserve" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="base" type="xs:anyURI">
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h3>base (as an attribute name)</h3>
<p>
denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.</p>
<p>
See <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
for information about this attribute.
</p>
</div>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h3>id (as an attribute name)</h3>
<p>
denotes an attribute whose value
should be interpreted as if declared to be of type ID.
This name is reserved by virtue of its definition in the
xml:id specification.</p>
<p>
See <a href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
for information about this attribute.
</p>
</div>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup name="specialAttrs">
<xs:attribute ref="xml:base" />
<xs:attribute ref="xml:lang" />
<xs:attribute ref="xml:space" />
<xs:attribute ref="xml:id" />
</xs:attributeGroup>
<xs:annotation>
<xs:documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<h3>Father (in any context at all)</h3>
<div class="bodytext">
<p>
denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
</p>
<blockquote>
<p>
In appreciation for his vision, leadership and
dedication the W3C XML Plenary on this 10th day of
February, 2000, reserves for Jon Bosak in perpetuity
the XML name "xml:Father".
</p>
</blockquote>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
<div xml:id="usage" id="usage" xmlns="http://www.w3.org/1999/xhtml">
<h2>
<a name="usage">About this schema document</a>
</h2>
<div class="bodytext">
<p>
This schema defines attributes and an attribute group suitable
for use by schemas wishing to allow <code>xml:base</code>,
<code>xml:lang</code>, <code>xml:space</code> or
<code>xml:id</code> attributes on elements they define.
</p>
<p>
To enable this, such a schema must import this schema for
the XML namespace, e.g. as follows:
</p>
<pre>
&lt;schema . . .&gt;
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/&gt;
</pre>
<p>
or
</p>
<pre>
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/&gt;
</pre>
<p>
Subsequently, qualified reference to any of the attributes or the
group defined below will have the desired effect, e.g.
</p>
<pre>
&lt;type . . .&gt;
. . .
&lt;attributeGroup ref="xml:specialAttrs"/&gt;
</pre>
<p>
will define a type which will schema-validate an instance element
with any of those attributes.
</p>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
<div id="nsversioning" xml:id="nsversioning" xmlns="http://www.w3.org/1999/xhtml">
<h2>
<a name="nsversioning">Versioning policy for this schema document</a>
</h2>
<div class="bodytext">
<p>
In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
<a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd</a>.
</p>
<p>
At the date of issue it can also be found at
<a href="http://www.w3.org/2001/xml.xsd">
http://www.w3.org/2001/xml.xsd</a>.
</p>
<p>
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML
Schema itself, or with the XML namespace itself. In other words,
if the XML Schema or XML namespaces change, the version of this
document at <a href="http://www.w3.org/2001/xml.xsd">
http://www.w3.org/2001/xml.xsd
</a>
will change accordingly; the version at
<a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd
</a>
will not change.
</p>
<p>
Previous dated (and unchanging) versions of this schema
document are at:
</p>
<ul>
<li>
<a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd</a>
</li>
<li>
<a href="http://www.w3.org/2007/08/xml.xsd">
http://www.w3.org/2007/08/xml.xsd</a>
</li>
<li>
<a href="http://www.w3.org/2004/10/xml.xsd">
http://www.w3.org/2004/10/xml.xsd</a>
</li>
<li>
<a href="http://www.w3.org/2001/03/xml.xsd">
http://www.w3.org/2001/03/xml.xsd</a>
</li>
</ul>
</div>
</div>
</xs:documentation>
</xs:annotation>
</xs:schema>

View File

@@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" xmlns="http://www.w3.org/2001/XMLSchema">
<simpleType name="CryptoBinary">
<restriction base="base64Binary" />
</simpleType>
<element name="Signature" type="ds:SignatureType" />
<complexType name="SignatureType">
<sequence>
<element ref="ds:SignedInfo" />
<element ref="ds:SignatureValue" />
<element minOccurs="0" ref="ds:KeyInfo" />
<element minOccurs="0" maxOccurs="unbounded" ref="ds:Object" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureValue" type="ds:SignatureValueType" />
<complexType name="SignatureValueType">
<simpleContent>
<extension base="base64Binary">
<attribute name="Id" type="ID" use="optional" />
</extension>
</simpleContent>
</complexType>
<element name="SignedInfo" type="ds:SignedInfoType" />
<complexType name="SignedInfoType">
<sequence>
<element ref="ds:CanonicalizationMethod" />
<element ref="ds:SignatureMethod" />
<element maxOccurs="unbounded" ref="ds:Reference" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType" />
<complexType name="CanonicalizationMethodType" mixed="true">
<sequence>
<any minOccurs="0" maxOccurs="unbounded" namespace="##any" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="SignatureMethod" type="ds:SignatureMethodType" />
<complexType name="SignatureMethodType" mixed="true">
<sequence>
<element minOccurs="0" name="HMACOutputLength" type="ds:HMACOutputLengthType" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="Reference" type="ds:ReferenceType" />
<complexType name="ReferenceType">
<sequence>
<element minOccurs="0" ref="ds:Transforms" />
<element ref="ds:DigestMethod" />
<element ref="ds:DigestValue" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
<attribute name="URI" type="anyURI" use="optional" />
<attribute name="Type" type="anyURI" use="optional" />
</complexType>
<element name="Transforms" type="ds:TransformsType" />
<complexType name="TransformsType">
<sequence>
<element maxOccurs="unbounded" ref="ds:Transform" />
</sequence>
</complexType>
<element name="Transform" type="ds:TransformType" />
<complexType name="TransformType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax" />
<element name="XPath" type="string" />
</choice>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="DigestMethod" type="ds:DigestMethodType" />
<complexType name="DigestMethodType" mixed="true">
<sequence>
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="DigestValue" type="ds:DigestValueType" />
<simpleType name="DigestValueType">
<restriction base="base64Binary" />
</simpleType>
<element name="KeyInfo" type="ds:KeyInfoType" />
<complexType name="KeyInfoType" mixed="true">
<choice maxOccurs="unbounded">
<element ref="ds:KeyName" />
<element ref="ds:KeyValue" />
<element ref="ds:RetrievalMethod" />
<element ref="ds:X509Data" />
<element ref="ds:PGPData" />
<element ref="ds:SPKIData" />
<element ref="ds:MgmtData" />
<any namespace="##other" processContents="lax" />
</choice>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="KeyName" type="string" />
<element name="MgmtData" type="string" />
<element name="KeyValue" type="ds:KeyValueType" />
<complexType name="KeyValueType" mixed="true">
<choice>
<element ref="ds:DSAKeyValue" />
<element ref="ds:RSAKeyValue" />
<any namespace="##other" processContents="lax" />
</choice>
</complexType>
<element name="RetrievalMethod" type="ds:RetrievalMethodType" />
<complexType name="RetrievalMethodType">
<sequence>
<element minOccurs="0" ref="ds:Transforms" />
</sequence>
<attribute name="URI" type="anyURI" />
<attribute name="Type" type="anyURI" use="optional" />
</complexType>
<element name="X509Data" type="ds:X509DataType" />
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType" />
<element name="X509SKI" type="base64Binary" />
<element name="X509SubjectName" type="string" />
<element name="X509Certificate" type="base64Binary" />
<element name="X509CRL" type="base64Binary" />
<any namespace="##other" processContents="lax" />
</choice>
</sequence>
</complexType>
<complexType name="X509IssuerSerialType">
<sequence>
<element name="X509IssuerName" type="string" />
<element name="X509SerialNumber" type="integer" />
</sequence>
</complexType>
<element name="PGPData" type="ds:PGPDataType" />
<complexType name="PGPDataType">
<choice>
<sequence>
<element name="PGPKeyID" type="base64Binary" />
<element minOccurs="0" name="PGPKeyPacket" type="base64Binary" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
<sequence>
<element name="PGPKeyPacket" type="base64Binary" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
</choice>
</complexType>
<element name="SPKIData" type="ds:SPKIDataType" />
<complexType name="SPKIDataType">
<sequence maxOccurs="unbounded">
<element name="SPKISexp" type="base64Binary" />
<any minOccurs="0" namespace="##other" processContents="lax" />
</sequence>
</complexType>
<element name="Object" type="ds:ObjectType" />
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
<attribute name="MimeType" type="string" use="optional" />
<attribute name="Encoding" type="anyURI" use="optional" />
</complexType>
<element name="Manifest" type="ds:ManifestType" />
<complexType name="ManifestType">
<sequence>
<element maxOccurs="unbounded" ref="ds:Reference" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureProperties" type="ds:SignaturePropertiesType" />
<complexType name="SignaturePropertiesType">
<sequence>
<element maxOccurs="unbounded" ref="ds:SignatureProperty" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureProperty" type="ds:SignaturePropertyType" />
<complexType name="SignaturePropertyType" mixed="true">
<choice maxOccurs="unbounded">
<any namespace="##other" processContents="lax" />
</choice>
<attribute name="Target" type="anyURI" use="required" />
<attribute name="Id" type="ID" use="optional" />
</complexType>
<simpleType name="HMACOutputLengthType">
<restriction base="integer" />
</simpleType>
<element name="DSAKeyValue" type="ds:DSAKeyValueType" />
<complexType name="DSAKeyValueType">
<sequence>
<sequence minOccurs="0">
<element name="P" type="ds:CryptoBinary" />
<element name="Q" type="ds:CryptoBinary" />
</sequence>
<element minOccurs="0" name="G" type="ds:CryptoBinary" />
<element name="Y" type="ds:CryptoBinary" />
<element minOccurs="0" name="J" type="ds:CryptoBinary" />
<sequence minOccurs="0">
<element name="Seed" type="ds:CryptoBinary" />
<element name="PgenCounter" type="ds:CryptoBinary" />
</sequence>
</sequence>
</complexType>
<element name="RSAKeyValue" type="ds:RSAKeyValueType" />
<complexType name="RSAKeyValueType">
<sequence>
<element name="Modulus" type="ds:CryptoBinary" />
<element name="Exponent" type="ds:CryptoBinary" />
</sequence>
</complexType>
</schema>

View File

@@ -0,0 +1,280 @@
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Web.Services.Protocols;
using System.Xml;
using System.IO;
namespace ipn_sqlclr
{
public class XmlReaderSpy : StreamReader
{
private readonly StringBuilder _sb = new StringBuilder();
public XmlReaderSpy(Stream stream, Encoding encoding, bool p, int bufferSize) : base(stream, encoding, p, bufferSize)
{
}
public override int Read(char[] buffer, int index, int count)
{
var ret = base.Read(buffer, index, count);
if(ret > 0)
_sb.Append(buffer, index, ret);
return ret;
}
public override string ReadToEnd()
{
var ret = base.ReadToEnd();
_sb.Append(ret);
return ret;
}
public override string ReadLine()
{
var ret = base.ReadLine();
_sb.Append(ret);
return ret;
}
public override int ReadBlock(char[] buffer, int index, int count)
{
return Read(buffer, index, count);
}
public string Xml
{
get { return _sb.ToString().Replace("<?xml version='1.0' encoding='UTF-8'?>", ""); }
}
}
public class XmlWriterSpy : XmlWriter
{
private readonly XmlWriter _base;
private readonly XmlTextWriter _xtw;
private readonly StringWriter _sw;
/// <summary>
/// Extracted XML.
/// </summary>
public string Xml
{
get
{
return (_sw != null) ? _sw.ToString() : string.Empty;
}
}
public XmlWriterSpy(XmlWriter parent)
{
_base = parent;
_sw = new StringWriter();
_xtw = new XmlTextWriter(_sw);
}
#region Abstract properties and methods that must be implemented
public override WriteState WriteState
{
get
{
return _base.WriteState;
}
}
public override void Close()
{
_base.Close();
_xtw.Close();
_sw.Close();
}
public override void Flush()
{
_base.Flush();
_xtw.Flush();
_sw.Flush();
}
public override string LookupPrefix(string ns)
{
return _base.LookupPrefix(ns);
}
public override void WriteBase64(byte[] buffer, int index, int count)
{
_base.WriteBase64(buffer, index, count);
_xtw.WriteBase64(buffer, index, count);
}
public override void WriteCData(string text)
{
_base.WriteCData(text);
_xtw.WriteCData(text);
}
public override void WriteCharEntity(char ch)
{
_base.WriteCharEntity(ch);
_xtw.WriteCharEntity(ch);
}
public override void WriteChars(char[] buffer, int index, int count)
{
_base.WriteChars(buffer, index, count);
_xtw.WriteChars(buffer, index, count);
}
public override void WriteComment(string text)
{
_base.WriteComment(text);
_xtw.WriteComment(text);
}
public override void WriteDocType(string name, string pubid, string sysid, string subset)
{
_base.WriteDocType(name, pubid, sysid, subset);
_xtw.WriteDocType(name, pubid, sysid, subset);
}
public override void WriteEndAttribute()
{
_base.WriteEndAttribute();
_xtw.WriteEndAttribute();
}
public override void WriteEndDocument()
{
_base.WriteEndDocument();
_xtw.WriteEndDocument();
}
public override void WriteEndElement()
{
_base.WriteEndElement();
_xtw.WriteEndElement();
}
public override void WriteEntityRef(string name)
{
_base.WriteEntityRef(name);
_xtw.WriteEntityRef(name);
}
public override void WriteFullEndElement()
{
_base.WriteFullEndElement();
_xtw.WriteFullEndElement();
}
public override void WriteProcessingInstruction(string name, string text)
{
_base.WriteProcessingInstruction(name, text);
_xtw.WriteProcessingInstruction(name, text);
}
public override void WriteRaw(string data)
{
_base.WriteRaw(data);
_xtw.WriteRaw(data);
}
public override void WriteRaw(char[] buffer, int index, int count)
{
_base.WriteRaw(buffer, index, count);
_xtw.WriteRaw(buffer, index, count);
}
public override void WriteStartAttribute(string prefix, string localName, string ns)
{
_base.WriteStartAttribute(prefix, localName, ns);
_xtw.WriteStartAttribute(prefix, localName, ns);
}
public override void WriteStartDocument(bool standalone)
{
_base.WriteStartDocument(standalone);
_xtw.WriteStartDocument(standalone);
}
public override void WriteStartDocument()
{
_base.WriteStartDocument();
_xtw.WriteStartDocument();
}
public override void WriteStartElement(string prefix, string localName, string ns)
{
_base.WriteStartElement(prefix, localName, ns);
_xtw.WriteStartElement(prefix, localName, ns);
}
public override void WriteString(string text)
{
_base.WriteString(text);
_xtw.WriteString(text);
}
public override void WriteSurrogateCharEntity(char lowChar, char highChar)
{
_base.WriteSurrogateCharEntity(lowChar, highChar);
_xtw.WriteSurrogateCharEntity(lowChar, highChar);
}
public override void WriteWhitespace(string ws)
{
_base.WriteWhitespace(ws);
_xtw.WriteWhitespace(ws);
}
#endregion
}
public class XmlReaderSpyService : SoapHttpClientProtocol
{
protected XmlReaderSpyService(X509Certificate clientCert, string url)
{
Url = url;
ClientCertificates.Add(clientCert);
}
private XmlReaderSpy _xmlReaderSpy;
private XmlWriterSpy _xmlWriterSpy;
public string GetRequestXml()
{
if (_xmlWriterSpy != null)
return _xmlWriterSpy.Xml;
return string.Empty;
}
public string GetResponseXml()
{
if (_xmlReaderSpy != null)
{
return _xmlReaderSpy.Xml;
}
return string.Empty;
}
protected override XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
{
Encoding encoding = Encoding.UTF8;
if (bufferSize < 0x200)
{
bufferSize = 0x200;
}
var reader = new XmlTextReader(_xmlReaderSpy = new XmlReaderSpy(message.Stream, encoding, true, bufferSize))
{
DtdProcessing = DtdProcessing.Prohibit,
Normalization = true,
XmlResolver = null
};
return reader;
}
protected override XmlWriter GetWriterForMessage(SoapClientMessage message, int bufferSize)
{
_xmlWriterSpy = new XmlWriterSpy(base.GetWriterForMessage(message, bufferSize));
return _xmlWriterSpy;
}
}
}

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Name>ipn_sqlclr</Name>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>4.1</ProjectVersion>
<ProjectGuid>{046364af-635b-4f62-9c8c-d3866b8f622f}</ProjectGuid>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql110DatabaseSchemaProvider</DSP>
<OutputType>Database</OutputType>
<RootPath>
</RootPath>
<RootNamespace>ipn_sqlclr</RootNamespace>
<AssemblyName>ipn_sqlclr</AssemblyName>
<ModelCollation>1033, CI</ModelCollation>
<DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>
<DeployToDatabase>True</DeployToDatabase>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetLanguage>CS</TargetLanguage>
<AppDesignerFolder>Properties</AppDesignerFolder>
<SqlServerVerification>False</SqlServerVerification>
<TargetDatabaseSet>True</TargetDatabaseSet>
<PermissionSet>UNSAFE</PermissionSet>
<GenerateCreateScript>True</GenerateCreateScript>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<!-- VS10 without SP1 will not have VisualStudioVersion set, so do that here -->
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<ItemGroup>
<Folder Include="Properties" />
<Folder Include="Web References\" />
<Folder Include="Web References\certificateManagementService\" />
<Folder Include="Web References\policyService\" />
<Folder Include="Web References\signDataService\" />
<Folder Include="Web References\veriSignCertIssuingService\" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Web.Services" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Numerics" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="VmpLicenseKey.cs" />
<Compile Include="keygen.cs" />
<Compile Include="Taggant.cs" />
<Compile Include="Web References\certificateManagementService\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="Web References\policyService\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="Web References\signDataService\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="Web References\veriSignCertIssuingService\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="TaggantWebService.cs" />
<Compile Include="LogItem.cs" />
<Compile Include="XmlReaderSpy.cs" />
</ItemGroup>
<ItemGroup>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\CertificateEnrollmentPolicy.wsdl">
<Link>Web References\CertificateEnrollmentPolicy.wsdl</Link>
</None>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\CertificateManagementService.wsdl">
<Link>Web References\CertificateManagementService.wsdl</Link>
</None>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\SignerAPI.wsdl">
<Link>Web References\SignerAPI.wsdl</Link>
</None>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\UserManagementService.wsdl">
<Link>Web References\UserManagementService.wsdl</Link>
</None>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\VS_WSTEP.wsdl">
<Link>Web References\VS_WSTEP.wsdl</Link>
</None>
<None Include="C:\Users\Youra\Documents\GitHub\my-vmprotect\tagg\ws-trust-1.3-verisign.wsdl">
<Link>Web References\ws-trust-1.3-verisign.wsdl</Link>
</None>
<None Include="ipn_sqlclr.publish.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\bc\crypto\crypto.csproj">
<Name>crypto</Name>
<Project>{38872a5f-e87e-4fad-b109-8eb7b2e6a4a0}</Project>
<Private>True</Private>
<IsModelAware>True</IsModelAware>
<GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</ProjectReference>
</ItemGroup>
</Project>

212
utils/ipn_sqlclr/keygen.cs Normal file
View File

@@ -0,0 +1,212 @@
using System;
using System.IO;
using System.Numerics;
using System.Security.Cryptography;
using System.Text;
namespace ipn_sqlclr
{
enum SerialNumberChunks : byte
{
Version = 0x01, // 1 byte of data - version
UserName = 0x02, // 1 + N bytes - length + N bytes of customer's name (without enging \0).
Email = 0x03, // 1 + N bytes - length + N bytes of customer's email (without ending \0).
ProductCode = 0x07, // 8 bytes - used for decrypting some parts of exe-file
UserData = 0x08, // 1 + N bytes - length + N bytes of user data
MaxBuild = 0x09, // 4 bytes - (year << 16) + (month << 8) + (day)
End = 0xFF // 4 bytes - checksum: the first four bytes of sha-1 hash from the data before that chunk
};
public static class Rsa
{
private const string PublicExpB64 = "AAEAAQ==";
private const string PrivateExpB64 = "CXHXWx/Z9JqetQWwFpvmD72wrDiqQOXMQs18fhAMjWCfJ/f2r3p2io+iB3gqIuu3LGH3WJ8PQuIzvDMnbwAx+8BbAyYhWhGEbxDdifndjQ2KlDV2Hu8NQgCbc5Wjok0rKwQ+Bxeb2i1+Gu3FsnhRNv9RhSyiwcnH/4Q3+ySE3AFAcAUwuQABePjDKCYOfIyx7RKz5h0sG+v10nkPuuCGPSnh+AXDTBIJFH+yNIjkrfweC9A3dv7URyRJumAMgm/SnDU76rTkFw9vZpupQeMtMtIsZIkeFSngip9KImD5zzbb2vKD63Cg9W/Yvqgvro/d+cR5n6P0t4DzfanNIFRGpFrX8/Q5VjuezDKw/4YbsFYwOhzJPRxglmCEjh8cpfxJ11cUXa/hNBV4c4Dp29D0F+w01OlBnFb1Ck9VXur2qJCsqcWtjsnt/VITsxa1jzr+3C2+uvaI4JSd7yLEnTqSaSsRfWuhDXgjY/YWhmyvMzeQeXBGOXKt2j2lY2Fm0WJx";
private const string ModulusB64 = "pwUqwaM8IOukyx06Lvi5YNQ70JE7pwg7K+pmM/vCe1CUseHKFM1v1m11geDjVsAt38AnaiFs3JhtTs80ySCIxOSyvMw6Cd52k6N6dn7LAx1mxQLJLhYeMMJYbplMHnMLwYN0+IO58OVbEqRyaJV2ExolnK2EYZL7QRXujGY7/sOoOMF3p6GsWJK6kkBJICIoL9hHWBQMO6/9rmls/+EhaWuP80Vx0+H2OlrQ58K+TJeyE393cvb4QufiEPpCNaB50Klee9QUnsjSW/bTnmGn4Bi5+cowRbawUY73Q5I58fMAXiH9ueDPuNMR9YKDgW9GxunLmYkbuwqIp/v7kw3cfMBM0ihhB0B8UhjyAMAGLzJWX3H/H6Zrz41g9PbPjTAxfsTaCrxoqjaTaO4zk9YsI//VX9Fhivcy913SevBpNandziGfYH/oHW2xDy9AfwkE1wuIBlLj7c/k8U1YmmRAmkoCzlmB7EU4ClNltboh1uARUQ6wW30upppnuYhGkTy7";
static BigInteger B2Bi(byte[] b) //reverse & make positive
{
Array.Reverse(b);
var b2 = new byte[b.Length + 1];
Array.Copy(b, b2, b.Length);
return new BigInteger(b2);
}
private static readonly BigInteger PublicExp = B2Bi(Convert.FromBase64String(PublicExpB64));
private static readonly BigInteger PrivateExp = B2Bi(Convert.FromBase64String(PrivateExpB64));
private static readonly BigInteger Modulus = B2Bi(Convert.FromBase64String(ModulusB64));
public static byte[] Encrypt(byte[] paddedData)
{
var x = B2Bi(paddedData);
var y = BigInteger.ModPow(x, PrivateExp, Modulus);
byte[] ret = y.ToByteArray();
Array.Resize(ref ret, paddedData.Length);
Array.Reverse(ret);
return ret;
}
public static byte[] Decrypt(byte[] data)
{
var x = B2Bi(data);
var y = BigInteger.ModPow(x, PublicExp, Modulus);
byte[] ret = y.ToByteArray();
Array.Reverse(ret);
return ret;
}
}
public static class Keygen
{
public static void ParseKey(string key, out int productId, out string customerName, out string eMail, out DateTime maxBuildDt)
{
productId = -1;
customerName = null;
eMail = null;
maxBuildDt = new DateTime();
var crypted = Convert.FromBase64String(key);
var data = Rsa.Decrypt(crypted);
int i;
for (i = 2; i < data.Length && data[i] != 0; i++) {
}
i++;
var pos = i;
while (pos < data.Length)
{
var b = data[pos++];
switch (b)
{
case (byte) SerialNumberChunks.Version:
b = data[pos++];
if (b < 1 || b > 2)
throw new InvalidDataException("SerialNumberChunks.Version");
break;
case (byte) SerialNumberChunks.UserName:
b = data[pos++];
customerName = Encoding.UTF8.GetString(data, pos, b);
pos += b;
break;
case (byte) SerialNumberChunks.Email:
b = data[pos++];
eMail = Encoding.UTF8.GetString(data, pos, b);
pos += b;
break;
case (byte)SerialNumberChunks.ProductCode:
pos += 8;
break;
case (byte) SerialNumberChunks.UserData:
b = data[pos++];
if (b == 0)
productId = 0;
else if(b != 1)
throw new InvalidDataException("Invalid ProductID");
else
productId = data[pos];
pos += b;
break;
case (byte) SerialNumberChunks.MaxBuild:
maxBuildDt = new DateTime(data[pos + 2] + 256 * data[pos + 3], data[pos + 1],data[pos]);
pos += 4;
break;
case (byte) SerialNumberChunks.End:
if (pos + 4 > data.Length)
throw new InvalidDataException("No checksum");
{
SHA1 sha = new SHA1Managed();
sha.Initialize();
var hash = sha.ComputeHash(data, i, pos - 1 - i);
for (int j = 0; j < 4; j++)
{
if(data[pos + j] == hash[3 - j])
continue;
throw new InvalidDataException("Invalid checksum");
}
}
return;
}
}
throw new InvalidDataException("No checksum");
}
public static string GenerateKey(int productId, string customerName, string eMail, DateTime maxBuildDt)
{
var data = new MemoryStream();
data.WriteByte((byte)SerialNumberChunks.Version);
data.WriteByte(1);
data.WriteByte((byte)SerialNumberChunks.UserName);
var utfCustomer = Encoding.UTF8.GetBytes(customerName);
if (utfCustomer.Length > 255)
throw new ArgumentException("Customer name too long", "customerName");
data.WriteByte((byte)utfCustomer.Length);
data.Write(utfCustomer, 0, utfCustomer.Length);
data.WriteByte((byte)SerialNumberChunks.Email);
byte[] utfeMail = Encoding.UTF8.GetBytes(eMail);
if (utfeMail.Length > 255)
throw new ArgumentException("EMail too long", "eMail");
data.WriteByte((byte)utfeMail.Length);
data.Write(utfeMail, 0, utfeMail.Length);
data.WriteByte((byte)SerialNumberChunks.ProductCode);
data.Write(new byte[] { 41, 65, 36, 150, 5, 175, 174, 137 }, 0, 8);
data.WriteByte((byte)SerialNumberChunks.UserData);
data.WriteByte(1);
data.WriteByte((byte)productId);
data.WriteByte((byte)SerialNumberChunks.MaxBuild);
data.WriteByte((byte)maxBuildDt.Day);
data.WriteByte((byte)maxBuildDt.Month);
data.WriteByte((byte)maxBuildDt.Year);
data.WriteByte((byte)(maxBuildDt.Year >> 8));
SHA1 sha = new SHA1Managed();
sha.Initialize();
data.Position = 0;
var hash = sha.ComputeHash(data);
data.WriteByte((byte)SerialNumberChunks.End);
data.WriteByte(hash[3]);
data.WriteByte(hash[2]);
data.WriteByte(hash[1]);
data.WriteByte(hash[0]);
const int minPadding = 8 + 3;
const int maxPadding = minPadding + 16;
const int maxBytes = 3072 / 8;
if (data.Length + minPadding > maxBytes)
throw new ApplicationException("Serial number too long");
var rnd = new Random();
var paddingBytes = rnd.Next(minPadding, maxPadding + 1);
if (data.Length + paddingBytes > maxBytes)
paddingBytes = maxBytes - (int)data.Length;
var paddedData = new byte[maxBytes];
var nonPaddedData = data.ToArray();
Array.Copy(nonPaddedData, paddedData, paddingBytes);
Array.Copy(nonPaddedData, 0, paddedData, paddingBytes, data.Length);
paddedData[0] = 0;
paddedData[1] = 2;
paddedData[paddingBytes - 1] = 0;
var i = 2;
for (; i < paddingBytes - 1; i++) {
byte b = 0;
while (b == 0) {
b = (byte)rnd.Next(256);
}
paddedData[i] = b;
}
i = nonPaddedData.Length + paddingBytes;
while (i < maxBytes) {
paddedData[i++] = (byte)rnd.Next(256);
}
var res = Convert.ToBase64String(Rsa.Encrypt(paddedData), Base64FormattingOptions.InsertLineBreaks);
return res;
}
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
</configuration>

View File

@@ -0,0 +1,170 @@
using System;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
namespace ipn_tool
{
internal static class CheckSsvTest
{
/* GOOD sequence
Taggant Test Application
Taggant Library version 1
<fist filename not chacked>
- correct PE file
- taggant is found
- taggant object created
- taggant is correct
- taggant does not contain timestamp
- file protected by packer with 1 id, version .+
- hashmap covers following regions:
\d.+ any lines
- hashmap is valid
- full file hash is valid
- full file hash covers first \d+ bytes
- SPV Certificate
30 82 05 5b 30 82 03 43 a0 03 02 01 02 02 10 25 many lines
- User Certificate
30 82 04 04 30 82 02 ec a0 03 02 01 02 02 10 05 many lines
<second filename not chacked> etc
*/
internal static int Result(string logFile, string pemFile)
{
var expectedLines = new[]
{
/*00*/ new Regex("^Taggant Test Application$"),
/*01*/ null,
/*02*/ new Regex("^Taggant Library version 1$"),
/*03*/ null,
/*04*/ new Regex(@"^.+"),
/*05*/ new Regex(@"^ - correct PE file$"),
/*06*/ new Regex(@"^ - taggant is found$"),
/*07*/ new Regex(@"^ - taggant object created$"),
/*08*/ new Regex(@"^ - taggant is correct$"),
/*09*/ new Regex(@"^ - taggant does not contain timestamp$"),
/*10*/ new Regex(@"^ - file protected by packer with 1 id, version .+$"),
/*11*/ new Regex(@"^ - hashmap covers following regions:$"),
/*12*/ new Regex(@"^\d.+$"), //any lines
/*13*/ new Regex(@"^ - hashmap is valid$"),
/*14*/ new Regex(@"^ - full file hash is valid$"),
/*15*/ new Regex(@"^ - full file hash covers first \d+ bytes$"),
/*16*/ new Regex(@"^ - SPV Certificate$"),
/*17*/ null,
/*18*/ new Regex(@"^ - User Certificate"),
/*19*/ null
};
try
{
var stateIndex = 0;
var lineNo = 0;
var spv = new MemoryStream();
var usr = new MemoryStream();
var curFile = "unknown";
foreach (var line in File.ReadAllLines(logFile))
{
if (stateIndex == 4)
curFile = line;
var re = expectedLines[stateIndex];
var needCheck = true;
switch (stateIndex)
{
case 13:
needCheck = false;
if (re.IsMatch(line))
++stateIndex;
else if (!expectedLines[stateIndex - 1].IsMatch(line))
throw new InvalidDataException(string.Format("Regex '{0}' or '{1}' match was expected at line #{2} but got '{3}'", re, expectedLines[stateIndex - 1], lineNo, line));
break;
case 17:
if (!AppendToMemoryStream(line, spv))
{
stateIndex = 18;
re = expectedLines[stateIndex];
}
else
{
needCheck = false;
}
break;
case 19:
if (!AppendToMemoryStream(line, usr))
{
if (!CompareCertificates(pemFile, curFile, spv, usr))
return 1;
spv = new MemoryStream();
usr = new MemoryStream();
stateIndex = 4;
re = expectedLines[stateIndex];
}
else
{
needCheck = false;
}
break;
}
if(needCheck)
{
if (re == null && line != string.Empty)
throw new InvalidDataException(string.Format("Empty line #{0} was expected but got '{1}'", lineNo, line));
if (re != null && !re.IsMatch(line))
throw new InvalidDataException(string.Format("Regex '{0}' match was expected at line #{1} but got '{2}'", re, lineNo, line));
++stateIndex;
}
++lineNo;
}
return CompareCertificates(pemFile, curFile, spv, usr) ? 0 : 1;
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
return 1;
}
}
private static bool CompareCertificates(string pemFile, string binaryName, MemoryStream spv, MemoryStream usr)
{
var pemContents = File.ReadAllText(pemFile);
var m = Regex.Match(pemContents,
@"^-----BEGIN CERTIFICATE-----[\s]*(?<spv>([^-]+))[\s]*-----END CERTIFICATE-----[\s]*-----BEGIN CERTIFICATE-----[\s]*(?<usr>([^-]+))[\s]*-----END CERTIFICATE-----[\s]*-----BEGIN RSA PRIVATE KEY-----[\s]*(?<pkey>([^-]+))[\s]*-----END RSA PRIVATE KEY-----[\s]*$",
RegexOptions.Multiline);
if (!m.Success)
throw new InvalidDataException("Cannot parse " + pemFile);
var expectedSpv = Convert.FromBase64String(m.Groups["spv"].Value);
var expectedUsr = Convert.FromBase64String(m.Groups["usr"].Value);
//TODO: check private key if need
return CompareBa("SPV", binaryName, expectedSpv, spv.ToArray()) && CompareBa("USER", binaryName, expectedUsr, usr.ToArray());
}
private static bool CompareBa(string partName, string binaryName, byte[] p1, byte[] p2)
{
if (p1.Length == p2.Length && p1.Length > 0)
{
for(var i = 0; i < p1.Length; i++)
if (p1[i] != p2[i])
throw new InvalidDataException(string.Format("taggant.pem {0} did not match to file {1} signature at position {2}.", partName, binaryName, i));
return true;
}
throw new InvalidDataException(string.Format("taggant.pem {0} did not match to file {1} signature", partName, binaryName));
}
// 30 82 05 5b 30 82 03 43 a0 03 02 01 02 02 10 25 - typical line
private static bool AppendToMemoryStream(string line, Stream spv)
{
if (!Regex.IsMatch(line, @"^[\s0-9A-F]+$", RegexOptions.IgnoreCase))
return false;
var chunk = StringToByteArray(line.Replace(" ", ""));
spv.Write(chunk, 0, chunk.Length);
return true;
}
private static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
}
}

301
utils/ipn_tool/Program.cs Normal file
View File

@@ -0,0 +1,301 @@
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Text;
using System.Xml;
namespace ipn_tool
{
static class Program
{
static int Main(string[] args)
{
switch (args.Length)
{
case 2:
if (args[0] == "-export_wm")
return ExportWatermarks(args[1]);
break;
case 3:
switch (args[0])
{
case "-export_bl":
return MergeBlacklist(args[1], args[2]);
case "-export_tasks":
return ExportTasks(null, args[1], args[2]);
case "-check_ssvtest":
return CheckSsvTest.Result(args[1], args[2]);
}
break;
case 4:
if (args[0] == "-export_task")
return ExportTasks(args[1], args[2], args[3]);
if (args[0] == "-check_wm")
return Watermarks.CheckIfPresent(args[1], args[2], args[3]);
break;
case 5:
if (args[0] == "-register_result")
return RegisterResult(args[1], args[2], args[3], args[4]);
break;
}
Console.WriteLine("IPN database tool. USAGE:");
Console.WriteLine("a) Export watermarks: ipn_tool -export_wm <filename.dat>");
Console.WriteLine("b) Merge project with blacklist: ipn_tool -export_bl <filenamein.vmp> <filenameout.vmp>");
Console.WriteLine("c) Prepare for all actual end-user builds: ipn_tool -export_tasks <destPath> <version>");
Console.WriteLine("d) Prepare for actual end-user build: ipn_tool -export_task <licenseID> <destPath> <version>");
Console.WriteLine("e) Register build result: ipn_tool -register_result <licenseID> <bambooBuildUrl> <true|false> <version>");
Console.WriteLine("f) Parse and check ssvtest.log: ipn_tool -check_ssvtest <ssvtest.log> <taggant.pem>");
Console.WriteLine("g) Check if watermark present: ipn_tool -check_wm <filename.dat> <wm_id> <binary_file>");
return 1;
}
private static int RegisterResult(string licenseId, string bambooBuildUrl, string success, string version)
{
int ret;
using (var con = IpnConn())
{
using (var cmd = new SqlCommand("dbo.RegisterBuildTaskResult", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
cmd.Parameters.AddWithValue("@licenseID", int.Parse(licenseId));
cmd.Parameters.AddWithValue("@bambooBuildUrl", bambooBuildUrl);
cmd.Parameters.AddWithValue("@success", bool.Parse(success));
cmd.Parameters.AddWithValue("@version", version);
con.Open();
ret = (int)cmd.ExecuteScalar();
Console.WriteLine("RegisterResult (0 - OK): {0}.", ret);
}
}
return ret;
}
private enum Platform
{
Windows,
Linux,
Mac
}
private static Platform RunningPlatform()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.Unix:
// Well, there are chances MacOSX is reported as Unix instead of MacOSX.
// Instead of platform check, we'll do a feature checks (Mac specific root folders)
if (Directory.Exists("/Applications")
& Directory.Exists("/System")
& Directory.Exists("/Users")
& Directory.Exists("/Volumes"))
return Platform.Mac;
else
return Platform.Linux;
case PlatformID.MacOSX:
return Platform.Mac;
default:
return Platform.Windows;
}
}
private static int ExportTasks(string licenseId, string rootPath, string version)
{
var ret = 1;
if (!rootPath.EndsWith(Path.DirectorySeparatorChar + @"licenses"))
{
Console.WriteLine(@"RootPath '{0}' check failed (should ends with {1}licenses)", rootPath, Path.DirectorySeparatorChar);
}
else using (var con = IpnConn())
{
using (var cmd = new SqlCommand("dbo.ExportBuildTaskInfo", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
cmd.Parameters.AddWithValue("@licenseID", licenseId == null ? DBNull.Value : (object)int.Parse(licenseId));
cmd.Parameters.AddWithValue("@filterOutVersion", version);
cmd.Parameters.AddWithValue("@filterByOperatingSystem", RunningPlatform().ToString());
con.Open();
var cnt = 0;
using (var r = cmd.ExecuteReader())
{
if (licenseId == null)
{
Directory.Delete(rootPath, true);
}
while (r.Read())
{
++cnt;
var lId = r.GetInt32(0);
var task = r.GetString(1);
var key = r.GetString(2);
var taggant = r.GetString(3);
Directory.CreateDirectory(Path.Combine(rootPath, lId.ToString(CultureInfo.InvariantCulture)));
var taskIniName = Path.Combine(rootPath, lId.ToString(), "task.ini");
using (var taskIni = new StreamWriter(new FileStream(taskIniName, FileMode.OpenOrCreate, FileAccess.Write), new UTF8Encoding(false)))
{
var doc = new XmlDocument();
doc.LoadXml(task);
// ReSharper disable once PossibleNullReferenceException
foreach (XmlAttribute attr in doc.DocumentElement.Attributes)
{
taskIni.WriteLine("{0}={1}", attr.Name, attr.Value);
}
}
var keyName = Path.Combine(rootPath, lId.ToString(), "VMProtect.key");
File.WriteAllText(keyName, key);
var tagName = Path.Combine(rootPath, lId.ToString(), "taggant.pem");
File.WriteAllText(tagName,
String.Join("\r\n", taggant.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries)));
}
Console.WriteLine("ExportTasks: {0} item(s) exported.", cnt);
if (cnt > 0)
ret = 0;
}
}
}
return ret;
}
private static int MergeBlacklist(string filenameIn, string filenameOut)
{
var ret = 1;
using (var con = IpnConn())
{
using (var cmd = new SqlCommand("dbo.ExportBlacklist", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
con.Open();
var xml = new XmlDocument();
xml.Load(filenameIn);
var lm = xml.SelectSingleNode("Document/LicenseManager");
if (lm != null)
{
lm.InnerXml = "";
var cnt = 0;
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
XmlNode license = xml.CreateElement("License");
XmlAttribute adate = xml.CreateAttribute("Date");
adate.Value = r.GetDateTime(1).ToString("yyyy-MM-dd");
XmlAttribute aname = xml.CreateAttribute("CustomerName");
aname.Value = r.GetString(2);
XmlAttribute aemail = xml.CreateAttribute("CustomerEmail");
aemail.Value = r.GetString(3);
XmlAttribute akey = xml.CreateAttribute("SerialNumber");
akey.Value = r.GetString(4);
if (license.Attributes != null)
{
license.Attributes.Append(adate);
license.Attributes.Append(aname);
license.Attributes.Append(aemail);
license.Attributes.Append(akey);
XmlAttribute ablocked = xml.CreateAttribute("Blocked");
ablocked.Value = "1";
license.Attributes.Append(ablocked);
}
lm.AppendChild(license);
cnt++;
}
}
xml.Save(filenameOut);
Console.WriteLine("MergeBlacklist: {0} item(s) exported.", cnt);
if (cnt > 0)
ret = 0;
}
}
}
return ret;
}
private static int ExportWatermarks(string filenameOut)
{
var ret = 1;
using (var con = IpnConn())
{
using (var cmd = new SqlCommand("dbo.ExportWatermarks", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
con.Open();
var xml = new XmlDocument();
xml.InsertBefore(xml.CreateXmlDeclaration("1.0",null,null), xml.DocumentElement);
XmlNode rootNode = xml.CreateElement("Document");
xml.AppendChild(rootNode);
XmlNode wms = xml.CreateElement("Watermarks");
rootNode.AppendChild(wms);
int cnt = 0;
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
XmlNode wm = xml.CreateElement("Watermark");
XmlAttribute aid = xml.CreateAttribute("Id");
aid.Value = cnt.ToString(CultureInfo.InvariantCulture);
XmlAttribute aname = xml.CreateAttribute("Name");
aname.Value = r.GetString(0);
XmlAttribute areadablename = xml.CreateAttribute("ReadableName");
areadablename.Value = r.GetString(1);
XmlAttribute aemail = xml.CreateAttribute("EMail");
aemail.Value = r.GetString(2);
wm.InnerText = r.GetString(3);
if (wm.Attributes != null)
{
wm.Attributes.Append(aid);
wm.Attributes.Append(aname);
wm.Attributes.Append(areadablename);
wm.Attributes.Append(aemail);
if (r.GetInt32(4) == 0)
{
XmlAttribute aenabled = xml.CreateAttribute("Enabled");
aenabled.Value = "0";
wm.Attributes.Append(aenabled);
}
}
wms.AppendChild(wm);
cnt++;
}
}
XmlAttribute acnt = xml.CreateAttribute("Id");
acnt.Value = cnt.ToString(CultureInfo.InvariantCulture);
if (wms.Attributes != null)
wms.Attributes.Append(acnt);
xml.Save(filenameOut);
Console.WriteLine("ExportWatermarks: {0} item(s) exported.", cnt);
if (cnt > 0)
ret = 0;
}
}
return ret;
}
private static SqlConnection IpnConn()
{
return new SqlConnection("server=scb-serv;database=ipn;user id=ipn_reader;password=rAqiEiGBOh39;Connection Timeout=300");
}
}
}

View File

@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ipn_tool")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ipn_tool")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a555f928-8e1a-4b21-b346-ad777bddebab")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml;
namespace ipn_tool
{
internal static class Watermarks
{
internal static int CheckIfPresent(string xmlDb, string id, string binFile)
{
try
{
var wm = LoadWm(xmlDb, id);
return FindWm(wm, binFile) ? 0 : 1;
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
return 1;
}
}
private static string LoadWm(string xmlDb, string id)
{
var s = new FileStream(xmlDb, FileMode.Open, FileAccess.Read);
using (var x = new XmlTextReader(s))
{
while (x.Read())
{
if (x.NodeType == XmlNodeType.Element && x.Name == "Watermark" && x.GetAttribute("Name") == id)
{
if(x.Read() && x.NodeType == XmlNodeType.Text && !string.IsNullOrEmpty(x.Value))
return x.Value;
}
}
}
throw new KeyNotFoundException("WM.id=" + id);
}
private static bool FindWm(string wm, string binFile)
{
var wmna = WmStringToNibbleArray(wm.ToUpper());
var filesToCheck = new List<string>();
if (Directory.Exists(binFile))
{
filesToCheck.AddRange(Directory.EnumerateFiles(binFile));
}
else
{
filesToCheck.Add(binFile);
}
return filesToCheck.All(s => CheckFile(s, wmna));
}
private static bool CheckFile(string binFile, int[] wmna)
{
var filena = new List<int>(wmna.Length + 1);
using (var s = new FileStream(binFile, FileMode.Open, FileAccess.Read))
{
while (true)
{
var nextByte = s.ReadByte();
if (nextByte == -1)
{
Console.Error.WriteLine("Watermark was not found in {0}", binFile);
return false;
}
filena.Add(nextByte >> 4);
filena.Add(nextByte & 15);
while (filena.Count >= wmna.Length)
{
if (MatchWm(wmna, filena))
{
Console.WriteLine("Watermark in {0}: FOUND", binFile);
return true;
}
filena.RemoveAt(0);
}
}
}
}
private static bool MatchWm(IEnumerable<int> wmna, IList<int> filena)
{
return !wmna.Where((t, i) => t != -1 && t != filena[i]).Any();
}
private static int[] WmStringToNibbleArray(string wm)
{
if(!Regex.IsMatch(wm, @"[A-Z0-9\?]+"))
throw new ArgumentException("Watermark contains bad symbols: " + wm, "wm");
var ret = new int[wm.Length];
var idx = 0;
foreach (var ch in wm)
{
if (ch == '?')
ret[idx++] = -1;
else if (ch <= '9')
ret[idx++] = ch - '0';
else
ret[idx++] = ch - 'A' + 10;
}
return ret;
}
}
}

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ipn_tool</RootNamespace>
<AssemblyName>ipn_tool</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CheckSsvTest.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Watermarks.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ipn_tool", "ipn_tool.csproj", "{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4ADE08C2-D14E-4FE6-BF66-95EE29C953C6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,93 @@
import os
import platform
import sys
sys.path.append("../..")
import fileop
def get_arg(arg_str):
return int((ARGUMENTS.get(arg_str, '0'))) != 0
release = get_arg('release')
clean = get_arg('clean')
amd64 = get_arg('amd64')
system = platform.system().lower()
linux = (system == 'linux')
macosx = (system == 'darwin')
win = (system == 'windows')
assert win or linux or macosx, 'Unsupported platform'
defs = {}
if win:
if release:
compiler_flags = '-MD -Ox -Oy '
defs['NDEBUG'] = None
else:
compiler_flags = '-WX -MTd -Zi -Od '
defs['_DEBUG'] = None
defs['_DPRINT'] = None
compiler_flags += ' -GS -GF -EHsc '
defs['WIN'] = None
defs['_CRT_SECURE_NO_DEPRECATE'] = None
defs['_FILE_OFFSET_BITS'] = '64'
defs['WIN32'] = None
defs['_CONSOLE'] = None
linker_flags = '-debug -opt:ref'
elif linux or macosx:
if release:
compiler_flags = '-O3 -fomit-frame-pointer'
defs['NDEBUG'] = None
else:
compiler_flags = '-g'
defs['_DPRINT'] = None
if linux:
defs['LIN'] = None
else:
defs['MACOSX'] = None
linker_flags = ' -pthread '
else:
assert False, 'Unsupported OS'
defs['UNITTEST'] = None
incdirs = ['../../third-party/libudis86']
if amd64:
defs['AMD64'] = None
target_arch = 'x86_64'
else:
defs['I386'] = None
target_arch = 'x86'
project_name = 'x86disasm'
env = Environment(
ENV = os.environ,
CCFLAGS = compiler_flags,
CPPPATH = incdirs,
CPPDEFINES = defs,
LINKFLAGS = linker_flags,
NAME = project_name,
TARGET_ARCH = target_arch
)
if win:
obj_ext = '.obj'
elif linux or macosx:
obj_ext = '.o'
else:
assert False
dirs = ['.', '../../third-party/libudis86']
if clean:
fileop.clean_dirs(dirs, obj_ext)
else:
# Build file list
sources = []
sources += Glob('./*.cc')
sources += Glob('../../third-party/libudis86/*.c')
# Perform build
env.Program(project_name, sources)

295
utils/x86disasm/disasm.cc Normal file
View File

@@ -0,0 +1,295 @@
#include <stdlib.h>
#include <vector>
#include <set>
#include <stdio.h>
#include <iostream>
#include <assert.h>
#include <algorithm>
#include <cctype>
#include "disasm.h"
#include "../../third-party/libudis86/extern.h"
const size_t kBufSize = 20;
typedef unsigned char uint8_t;
static void GenerateBuffer(std::vector<uint8_t> * buf)
{
size_t i;
buf->resize(kBufSize);
for (i = 0; i < kBufSize; i++)
(*buf)[i] = 0x10 + i;
}
typedef unsigned int operand_encoding_t;
#define OP_ENC_REG 0x80000000UL
#define OP_ENC_MEM 0x40000000UL
struct InsnDef {
unsigned insn_enc;
size_t count;
operand_encoding_t enc[3];
uint8_t pfx_rex;
uint8_t pfx_seg;
uint8_t pfx_opr;
uint8_t pfx_adr;
uint8_t pfx_lock;
uint8_t pfx_rep;
uint8_t pfx_repe;
uint8_t pfx_repne;
uint8_t pfx_insn;
InsnDef(const struct ud & u);
friend bool operator == (const InsnDef & left, const InsnDef & right)
{
return 0 == memcmp(&left, &right, sizeof(InsnDef));
}
friend bool operator < (const InsnDef & left, const InsnDef & right)
{
return 0 > memcmp(&left, &right, sizeof(InsnDef));
}
friend bool operator > (const InsnDef & left, const InsnDef & right)
{
return 0 < memcmp(&left, &right, sizeof(InsnDef));
}
};
struct InsnDefCompare {
bool operator() (const InsnDef & left, const InsnDef & right)
{
return left < right;
}
};
typedef std::set<InsnDef, InsnDefCompare> insn_set_t;
InsnDef::InsnDef(const struct ud & u)
: count(0)
{
int i;
const struct ud_operand *op;
pfx_adr = u.pfx_adr;
pfx_insn = u.pfx_insn;
pfx_lock = u.pfx_lock;
pfx_opr = u.pfx_opr;
pfx_rep = u.pfx_rep;
pfx_repe = u.pfx_repe;
pfx_repne = u.pfx_repne;
pfx_rex = u.pfx_rex;
pfx_seg = u.pfx_seg;
insn_enc = u.mnemonic;
memset(enc, 0, sizeof(enc));
/*
* Encode registers and operand types. Do not encode offsets and
* immediate values.
*/
for (i = 0; i < 3; i++) {
op = &u.operand[i];
switch (op->type) {
case UD_OP_REG:
enc[i] |= OP_ENC_REG;
enc[i] |= op->base;
break;
case UD_OP_MEM:
/* Encode only registers and scales. */
enc[i] |= OP_ENC_MEM;
enc[i] |= op->base | (op->index << 8) | (op->scale << 16);
break;
default:
/* Encode operand type other than OP_ENC_MEM or OP_ENC_REG. */
enc[i] |= op->type;
break;
}
if (op->type != UD_NONE)
count++;
}
}
static std::string ReplaceAll(const std::string & str,
const std::string & prev_val,
const std::string & new_val)
{
size_t pos;
std::string s = str;
while (true) {
pos = s.find(prev_val);
if (std::string::npos == pos)
break;
s = s.replace(pos, prev_val.size(), new_val);
}
return s;
}
static const struct {
const char *from;
const char *to;
} repl[] = {
{"retn", "ret"},
{"retnw", "ret"},
{"iretw", "iret"},
{"pushfw", "pushf"},
{"popfw", "popf"},
{"enterw", "enter"},
{"cmovae", "cmovnb"},
{"cmova", "cmovnbe"},
{"cmovge", "cmovnl"},
{"cmovg", "cmovnle"},
{"setae", "setnb"},
{"seta", "setnbe"},
{"setge", "setnl"},
{"setg", "setnle"},
{"leavew", "leave"},
{"int1", "int 01"},
{"int3", "int 03"}
};
/* trim from start */
static inline std::string &ltrim(std::string &s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
return s;
}
/* trim from end */
static inline std::string &rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
return s;
}
/* trim from both ends */
static inline std::string &trim(std::string &s) {
return ltrim(rtrim(s));
}
static const char *pfx[] = {
"cs", "es", "fs", "gs", "ss", "ds"
};
static std::string FixDisassembly(const std::string & disasm)
{
size_t i, j;
std::string s,s2;
s = ReplaceAll(disasm, "0x", "");
s = ReplaceAll(s, "o16 ", "");
s = ReplaceAll(s, "a16 ", "");
s = ReplaceAll(s, "a32 ", "");
for (i = 0; i < _countof(repl); i++) {
s2 = ReplaceAll(s, repl[i].from, repl[i].to);
if (s2 != s) {
s = s2;
break;
}
}
s = trim(s);
for (i = 0; i < 6; i++) {
if (s.substr(0, 3).compare(std::string(pfx[i]) + " ") == 0) {
s = s.substr(3);
break;
} else {
j = s.find(" " + std::string(pfx[i]) + " ");
if (j != s.npos) {
s = s.substr(0, j) + s.substr(j + 3);
break;
}
}
}
return s;
}
static bool IsInsnUnique(const struct ud & u, insn_set_t *is)
{
InsnDef insn_def(u);
insn_set_t::iterator it = is->lower_bound(insn_def);
if (it != is->end() && *it == insn_def) {
return false;
}
is->insert(insn_def);
return true;
}
static void WriteOutput(FILE * f, const std::vector<uint8_t> & buf, size_t size,
const char *disasm)
{
size_t i;
assert(size <= buf.size());
for (i = 0; i < size; i++)
fprintf(f, "%02x", buf[i]);
fprintf(f, " %s\n", FixDisassembly(disasm).c_str());
fflush(f);
}
static void GenerateToFile(FILE * f, bool x64)
{
/* Generate buffer */
std::vector<uint8_t> buf;
unsigned int p0, p1, p2;
insn_set_t is;
struct ud u;
unsigned int insn_len, n;
bool disasm_ok;
n = 0;
GenerateBuffer(&buf);
/*
for (p0 = 0x10; p0 < 0x110; p0++) {
for (p1 = 0x10; p1 < 0x110; p1++) {
for (p2 = 0x10; p2 < 0x110; p2++) {
*/
for (p0 = 0x10; p0 < 0x110; p0++) {
for (p1 = 0x10; p1 < 0x110; p1++) {
for (p2 = 0x10; p2 < 0x110; p2++) {
buf[0] = (p0 & 0xff);
buf[1] = (p1 & 0xff);
buf[2] = (p2 & 0xff);
ud_init(&u);
ud_set_input_buffer(&u, &buf[0], buf.size());
ud_set_pc(&u, 0x401000);
ud_set_mode(&u, x64 ? 64 : 32);
ud_set_syntax(&u, UD_SYN_INTEL);
ud_set_vendor(&u, UD_VENDOR_INTEL);
disasm_ok = false;
if ((insn_len = ud_disassemble(&u)) != 0) {
char *disasm = ud_insn_asm(&u);
if (0 != strncmp(disasm, "invalid", 7)) {
disasm_ok = true;
if (IsInsnUnique(u, &is)) {
WriteOutput(f, buf, insn_len, disasm);
n++;
if (n % 10000 == 0)
std::cout << n << " opcodes processed\n";
}
}
}
if (!disasm_ok) {
/* Cannot disassemble. */
WriteOutput(f, buf, 10, "db");
n++;
if (n % 10000 == 0)
std::cout << n << " opcodes processed\n";
}
}
}
}
}
int GenerateInstructions(const std::string & out_filename, bool x64)
{
FILE *f;
f = fopen(out_filename.c_str(), "wt");
if (f == NULL) {
std::cerr << "ERROR Cannot open file " << out_filename << "\n";
return GEN_INSN_IOERROR;
}
GenerateToFile(f, x64);
fclose(f);
return GEN_INSN_OKAY;
}

15
utils/x86disasm/disasm.h Normal file
View File

@@ -0,0 +1,15 @@
#ifndef DISASM_H
#define DISASM_H
#include <string>
#define GEN_INSN_OKAY 0
#define GEN_INSN_IOERROR 1
#define GEN_INSN_ERROR 2
int GenerateInstructions(const std::string & out_filename, bool x64);
#endif

24
utils/x86disasm/main.cc Normal file
View File

@@ -0,0 +1,24 @@
#include <iostream>
#include "disasm.h"
int main(int argc, char **argv)
{
int rc;
bool x64;
std::cout << "x86 Disassembly Generator (C) 2012\n";
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " <output_file_name> [x64]\n";
return 1;
}
if (argc >= 3) {
x64 = (0 == _strnicmp(argv[2], "x64", 3));
} else {
x64 = false;
}
rc = GenerateInstructions(argv[1], x64);
if (rc == GEN_INSN_OKAY)
std::cout << "Finished\n";
else
std::cerr << "ERROR Failed with error " << rc << "\n";
return rc;
}

View File

@@ -0,0 +1,59 @@
#!/usr/bin/python
import os
import os.path
import sys
sys.path.append("../..")
import fileop
import utils
name = "x86disasm"
def do_clean():
fileop.clean_dir(".", ".obj")
fileop.clean_dir(".", ".pdb")
fileop.clean_dir(".", ".ilk")
fileop.clean_dir(".", ".exe")
fileop.remove_file(os.path.join(bin_dir, name))
fileop.remove_file(os.path.join(bin_dir, name + '.exe'))
fileop.remove_file(os.path.join(bin_dir, name + '.pdb'))
fileop.remove_file(os.path.join(bin_dir, name + '.ilk'))
return 0
def make(clean, release, x64):
if clean:
do_clean()
result = os.system("scons -f Sconstruct-%s release=%d clean=%d amd64=%d" % (name, release, clean, x64))
if 0 == result:
# Scons does not put file in the required directory. Do it ourselves.
if utils.get_platform() == 'windows':
os.system("move " + name + ".exe " + bin_dir)
os.system("move " + name + ".pdb " + bin_dir)
os.system("move " + name + ".ilk " + bin_dir)
else:
os.system("mv " + name + " " + bin_dir)
return result
def title(clean, release, x64):
print "*** %s making ... ***" % name
print "clean = ", clean
print "release = ", release
print "x64 = ", x64
def print_result(result):
if 0 == result:
print "*** %s make: OK ***" % name
else:
print "*** %s make: error %d" % (name, result)
clean = 'clean' in sys.argv
release = 'release' in sys.argv
x64 = 'x64' in sys.argv
bin_dir = fileop.get_bin_dir('../..', x64, release)
assert os.path.isdir(bin_dir)
title(clean, release, x64)
result = make(clean, release, x64)
print_result(result)
sys.exit(result)

View File

@@ -0,0 +1,26 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x86disasm", "x86disasm.vcxproj", "{C4688533-8E09-4F65-A04D-39201C9B2D33}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Debug|Win32.ActiveCfg = Debug|Win32
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Debug|Win32.Build.0 = Debug|Win32
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Debug|x64.ActiveCfg = Debug|x64
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Debug|x64.Build.0 = Debug|x64
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Release|Win32.ActiveCfg = Release|Win32
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Release|Win32.Build.0 = Release|Win32
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Release|x64.ActiveCfg = Release|x64
{C4688533-8E09-4F65-A04D-39201C9B2D33}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C4688533-8E09-4F65-A04D-39201C9B2D33}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>x86disasm</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(ProjectDir)../../bin/i386/$(Configuration)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(ProjectDir)../../bin/amd64/$(Configuration)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(ProjectDir)../../bin/i386/$(Configuration)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(ProjectDir)../../bin/amd64/$(Configuration)</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)../../third-party/libudis86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)../../third-party/libudis86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)../../third-party/libudis86</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)../../third-party/libudis86</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\third-party\libudis86\decode.c" />
<ClCompile Include="..\..\third-party\libudis86\input.c" />
<ClCompile Include="..\..\third-party\libudis86\itab.c" />
<ClCompile Include="..\..\third-party\libudis86\mnem.c" />
<ClCompile Include="..\..\third-party\libudis86\syn-intel.c" />
<ClCompile Include="..\..\third-party\libudis86\syn.c" />
<ClCompile Include="..\..\third-party\libudis86\udis86.c" />
<ClCompile Include="disasm.cc" />
<ClCompile Include="main.cc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\third-party\libudis86\decode.h" />
<ClInclude Include="..\..\third-party\libudis86\extern.h" />
<ClInclude Include="..\..\third-party\libudis86\input.h" />
<ClInclude Include="..\..\third-party\libudis86\itab.h" />
<ClInclude Include="..\..\third-party\libudis86\mnem.h" />
<ClInclude Include="..\..\third-party\libudis86\syn.h" />
<ClInclude Include="..\..\third-party\libudis86\types.h" />
<ClInclude Include="disasm.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="libudis86">
<UniqueIdentifier>{0fa6ebf3-658c-4c86-89c7-425c16cf7ba6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cc">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="disasm.cc">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\udis86.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\decode.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\input.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\itab.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\mnem.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\syn.c">
<Filter>libudis86</Filter>
</ClCompile>
<ClCompile Include="..\..\third-party\libudis86\syn-intel.c">
<Filter>libudis86</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="disasm.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\decode.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\extern.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\input.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\itab.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\mnem.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\syn.h">
<Filter>libudis86</Filter>
</ClInclude>
<ClInclude Include="..\..\third-party\libudis86\types.h">
<Filter>libudis86</Filter>
</ClInclude>
</ItemGroup>
</Project>