mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2025-08-02 05:00:12 +03:00
first commit
Version 3.x.x
This commit is contained in:
121
utils/arm-32bit.py
Normal file
121
utils/arm-32bit.py
Normal 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
122
utils/arm-thumb.py
Normal 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
283
utils/intel-x86.py
Normal 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()
|
||||
|
||||
|
11
utils/ipn_sqlclr/LogItem.cs
Normal file
11
utils/ipn_sqlclr/LogItem.cs
Normal 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
274
utils/ipn_sqlclr/Taggant.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
159
utils/ipn_sqlclr/TaggantWebService.cs
Normal file
159
utils/ipn_sqlclr/TaggantWebService.cs
Normal 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}});
|
||||
}
|
||||
}
|
||||
}
|
36
utils/ipn_sqlclr/VmpLicenseKey.cs
Normal file
36
utils/ipn_sqlclr/VmpLicenseKey.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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>
|
@@ -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>
|
@@ -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
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
2512
utils/ipn_sqlclr/Web References/policyService/Reference.cs
Normal file
2512
utils/ipn_sqlclr/Web References/policyService/Reference.cs
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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>
|
@@ -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>
|
@@ -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>
|
793
utils/ipn_sqlclr/Web References/signDataService/Reference.cs
Normal file
793
utils/ipn_sqlclr/Web References/signDataService/Reference.cs
Normal 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
|
@@ -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>
|
@@ -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>
|
127
utils/ipn_sqlclr/Web References/signDataService/SignerAPI.xsd
Normal file
127
utils/ipn_sqlclr/Web References/signDataService/SignerAPI.xsd
Normal 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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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:
|
||||
|
||||
<xs:element ref='wst:TokenType' minOccurs='0' />
|
||||
<xs:element ref='wst:RequestType' />
|
||||
<xs:element ref='wsp:AppliesTo' minOccurs='0' />
|
||||
<xs:element ref='wst:Claims' minOccurs='0' />
|
||||
<xs:element ref='wst:Entropy' minOccurs='0' />
|
||||
<xs:element ref='wst:Lifetime' minOccurs='0' />
|
||||
<xs:element ref='wst:AllowPostdating' minOccurs='0' />
|
||||
<xs:element ref='wst:Renewing' minOccurs='0' />
|
||||
<xs:element ref='wst:OnBehalfOf' minOccurs='0' />
|
||||
<xs:element ref='wst:Issuer' minOccurs='0' />
|
||||
<xs:element ref='wst:AuthenticationType' minOccurs='0' />
|
||||
<xs:element ref='wst:KeyType' minOccurs='0' />
|
||||
<xs:element ref='wst:KeySize' minOccurs='0' />
|
||||
<xs:element ref='wst:SignatureAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:Encryption' minOccurs='0' />
|
||||
<xs:element ref='wst:EncryptionAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:CanonicalizationAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:ProofEncryption' minOccurs='0' />
|
||||
<xs:element ref='wst:UseKey' minOccurs='0' />
|
||||
<xs:element ref='wst:SignWith' minOccurs='0' />
|
||||
<xs:element ref='wst:EncryptWith' minOccurs='0' />
|
||||
<xs:element ref='wst:DelegateTo' minOccurs='0' />
|
||||
<xs:element ref='wst:Forwardable' minOccurs='0' />
|
||||
<xs:element ref='wst:Delegatable' minOccurs='0' />
|
||||
<xs:element ref='wsp:Policy' minOccurs='0' />
|
||||
<xs:element ref='wsp:PolicyReference' minOccurs='0' />
|
||||
<xs:any namespace='##other' processContents='lax' minOccurs='0' maxOccurs='unbounded' />
|
||||
|
||||
</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:
|
||||
|
||||
<xs:element ref='wst:TokenType' minOccurs='0' />
|
||||
<xs:element ref='wst:RequestType' />
|
||||
<xs:element ref='wst:RequestedSecurityToken' minOccurs='0' />
|
||||
<xs:element ref='wsp:AppliesTo' minOccurs='0' />
|
||||
<xs:element ref='wst:RequestedAttachedReference' minOccurs='0' />
|
||||
<xs:element ref='wst:RequestedUnattachedReference' minOccurs='0' />
|
||||
<xs:element ref='wst:RequestedProofToken' minOccurs='0' />
|
||||
<xs:element ref='wst:Entropy' minOccurs='0' />
|
||||
<xs:element ref='wst:Lifetime' minOccurs='0' />
|
||||
<xs:element ref='wst:Status' minOccurs='0' />
|
||||
<xs:element ref='wst:AllowPostdating' minOccurs='0' />
|
||||
<xs:element ref='wst:Renewing' minOccurs='0' />
|
||||
<xs:element ref='wst:OnBehalfOf' minOccurs='0' />
|
||||
<xs:element ref='wst:Issuer' minOccurs='0' />
|
||||
<xs:element ref='wst:AuthenticationType' minOccurs='0' />
|
||||
<xs:element ref='wst:Authenticator' minOccurs='0' />
|
||||
<xs:element ref='wst:KeyType' minOccurs='0' />
|
||||
<xs:element ref='wst:KeySize' minOccurs='0' />
|
||||
<xs:element ref='wst:SignatureAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:Encryption' minOccurs='0' />
|
||||
<xs:element ref='wst:EncryptionAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:CanonicalizationAlgorithm' minOccurs='0' />
|
||||
<xs:element ref='wst:ProofEncryption' minOccurs='0' />
|
||||
<xs:element ref='wst:UseKey' minOccurs='0' />
|
||||
<xs:element ref='wst:SignWith' minOccurs='0' />
|
||||
<xs:element ref='wst:EncryptWith' minOccurs='0' />
|
||||
<xs:element ref='wst:DelegateTo' minOccurs='0' />
|
||||
<xs:element ref='wst:Forwardable' minOccurs='0' />
|
||||
<xs:element ref='wst:Delegatable' minOccurs='0' />
|
||||
<xs:element ref='wsp:Policy' minOccurs='0' />
|
||||
<xs:element ref='wsp:PolicyReference' minOccurs='0' />
|
||||
<xs:any namespace='##other' processContents='lax' minOccurs='0' maxOccurs='unbounded' />
|
||||
|
||||
</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 <wst:RequestSecurityTokenResponseCollection> 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>
|
@@ -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>
|
||||
<schema . . .>
|
||||
. . .
|
||||
<import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||
</pre>
|
||||
<p>
|
||||
or
|
||||
</p>
|
||||
<pre>
|
||||
<import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
|
||||
</pre>
|
||||
<p>
|
||||
Subsequently, qualified reference to any of the attributes or the
|
||||
group defined below will have the desired effect, e.g.
|
||||
</p>
|
||||
<pre>
|
||||
<type . . .>
|
||||
. . .
|
||||
<attributeGroup ref="xml:specialAttrs"/>
|
||||
</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>
|
@@ -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>
|
280
utils/ipn_sqlclr/XmlReaderSpy.cs
Normal file
280
utils/ipn_sqlclr/XmlReaderSpy.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
130
utils/ipn_sqlclr/ipn_sqlclr.sqlproj
Normal file
130
utils/ipn_sqlclr/ipn_sqlclr.sqlproj
Normal 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
212
utils/ipn_sqlclr/keygen.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
6
utils/ipn_tool/App.config
Normal file
6
utils/ipn_tool/App.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||
</startup>
|
||||
</configuration>
|
170
utils/ipn_tool/CheckSsvTest.cs
Normal file
170
utils/ipn_tool/CheckSsvTest.cs
Normal 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
301
utils/ipn_tool/Program.cs
Normal 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");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
35
utils/ipn_tool/Properties/AssemblyInfo.cs
Normal file
35
utils/ipn_tool/Properties/AssemblyInfo.cs
Normal 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")]
|
111
utils/ipn_tool/Watermarks.cs
Normal file
111
utils/ipn_tool/Watermarks.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
63
utils/ipn_tool/ipn_tool.csproj
Normal file
63
utils/ipn_tool/ipn_tool.csproj
Normal 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>
|
22
utils/ipn_tool/ipn_tool.sln
Normal file
22
utils/ipn_tool/ipn_tool.sln
Normal 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
|
93
utils/x86disasm/Sconstruct-x86disasm
Normal file
93
utils/x86disasm/Sconstruct-x86disasm
Normal 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
295
utils/x86disasm/disasm.cc
Normal 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 <rim(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
15
utils/x86disasm/disasm.h
Normal 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
24
utils/x86disasm/main.cc
Normal 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;
|
||||
}
|
59
utils/x86disasm/make-x86disasm.py
Normal file
59
utils/x86disasm/make-x86disasm.py
Normal 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)
|
||||
|
26
utils/x86disasm/x86disasm.sln
Normal file
26
utils/x86disasm/x86disasm.sln
Normal 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
|
169
utils/x86disasm/x86disasm.vcxproj
Normal file
169
utils/x86disasm/x86disasm.vcxproj
Normal 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>
|
75
utils/x86disasm/x86disasm.vcxproj.filters
Normal file
75
utils/x86disasm/x86disasm.vcxproj.filters
Normal 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>
|
Reference in New Issue
Block a user