%
Class clsSHA1
' ------------------------------------------------------------------------------
Private Function AndW(ByRef pBytWord1Ary, ByRef pBytWord2Ary)
Dim lBytWordAry(3)
Dim lLngIndex
For lLngIndex = 0 To 3
lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) And pBytWord2Ary(lLngIndex))
Next
AndW = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function OrW(ByRef pBytWord1Ary, ByRef pBytWord2Ary)
Dim lBytWordAry(3)
Dim lLngIndex
For lLngIndex = 0 To 3
lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) Or pBytWord2Ary(lLngIndex))
Next
OrW = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function XorW(ByRef pBytWord1Ary, ByRef pBytWord2Ary)
Dim lBytWordAry(3)
Dim lLngIndex
For lLngIndex = 0 To 3
lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) Xor pBytWord2Ary(lLngIndex))
Next
XorW = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function NotW(ByRef pBytWordAry)
Dim lBytWordAry(3)
Dim lLngIndex
For lLngIndex = 0 To 3
lBytWordAry(lLngIndex) = Not CByte(pBytWordAry(lLngIndex))
Next
NotW = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function AddW(ByRef pBytWord1Ary, ByRef pBytWord2Ary)
Dim lLngIndex
Dim lIntTotal
Dim lBytWordAry(3)
For lLngIndex = 3 To 0 Step -1
If lLngIndex = 3 Then
lIntTotal = CInt(pBytWord1Ary(lLngIndex)) + pBytWord2Ary(lLngIndex)
lBytWordAry(lLngIndex) = lIntTotal Mod 256
Else
lIntTotal = CInt(pBytWord1Ary(lLngIndex)) + pBytWord2Ary(lLngIndex) + (lIntTotal \ 256)
lBytWordAry(lLngIndex) = lIntTotal Mod 256
End If
Next
AddW = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function CircShiftLeftW(ByRef pBytWordAry, ByRef pLngShift)
Dim lDbl1
Dim lDbl2
lDbl1 = WordToDouble(pBytWordAry)
lDbl2 = lDbl1
lDbl1 = CDbl(lDbl1 * (2 ^ pLngShift))
lDbl2 = CDbl(lDbl2 / (2 ^ (32 - pLngShift)))
CircShiftLeftW = OrW(DoubleToWord(lDbl1), DoubleToWord(lDbl2))
End Function
' ------------------------------------------------------------------------------
Private Function WordToHex(ByRef pBytWordAry)
Dim lLngIndex
For lLngIndex = 0 To 3
WordToHex = WordToHex & Right("0" & Hex(pBytWordAry(lLngIndex)), 2)
Next
End Function
' ------------------------------------------------------------------------------
Private Function HexToWord(ByRef pStrHex)
HexToWord = DoubleToWord(CDbl("&h" & pStrHex)) ' needs "#" at end for VB?
End Function
' ------------------------------------------------------------------------------
Private Function DoubleToWord(ByRef pDblValue)
Dim lBytWordAry(3)
lBytWordAry(0) = Int(DMod(pDblValue, 2 ^ 32) / (2 ^ 24))
lBytWordAry(1) = Int(DMod(pDblValue, 2 ^ 24) / (2 ^ 16))
lBytWordAry(2) = Int(DMod(pDblValue, 2 ^ 16) / (2 ^ 8))
lBytWordAry(3) = Int(DMod(pDblValue, 2 ^ 8))
DoubleToWord = lBytWordAry
End Function
' ------------------------------------------------------------------------------
Private Function WordToDouble(ByRef pBytWordAry)
WordToDouble = CDbl((pBytWordAry(0) * (2 ^ 24)) + (pBytWordAry(1) * (2 ^ 16)) + (pBytWordAry(2) * (2 ^ 8)) + pBytWordAry(3))
End Function
' ------------------------------------------------------------------------------
Private Function DMod(ByRef pDblValue, ByRef pDblDivisor)
Dim lDblMod
lDblMod = CDbl(CDbl(pDblValue) - (Int(CDbl(pDblValue) / CDbl(pDblDivisor)) * CDbl(pDblDivisor)))
If lDblMod < 0 Then
lDblMod = CDbl(lDblMod + pDblDivisor)
End If
DMod = lDblMod
End Function
' ------------------------------------------------------------------------------
Private Function F( _
ByRef lIntT, _
ByRef pBytWordBAry, _
ByRef pBytWordCAry, _
ByRef pBytWordDAry _
)
If lIntT <= 19 Then
F = OrW(AndW(pBytWordBAry, pBytWordCAry), AndW((NotW(pBytWordBAry)), pBytWordDAry))
ElseIf lIntT <= 39 Then
F = XorW(XorW(pBytWordBAry, pBytWordCAry), pBytWordDAry)
ElseIf lIntT <= 59 Then
F = OrW(OrW(AndW(pBytWordBAry, pBytWordCAry), AndW(pBytWordBAry, pBytWordDAry)), AndW(pBytWordCAry, pBytWordDAry))
Else
F = XorW(XorW(pBytWordBAry, pBytWordCAry), pBytWordDAry)
End If
End Function
' ------------------------------------------------------------------------------
Public Function SecureHash(ByVal pStrMessage)
Dim lLngLen
Dim lBytLenW
Dim lStrPadMessage
Dim lLngNumBlocks
Dim lVarWordWAry(79)
Dim lLngTempWordWAry
Dim lStrBlockText
Dim lStrWordText
Dim lLngBlock
Dim lIntT
Dim lBytTempAry
Dim lVarWordKAry(3)
Dim lBytWordH0Ary
Dim lBytWordH1Ary
Dim lBytWordH2Ary
Dim lBytWordH3Ary
Dim lBytWordH4Ary
Dim lBytWordAAry
Dim lBytWordBAry
Dim lBytWordCAry
Dim lBytWordDAry
Dim lBytWordEAry
Dim lBytWordFAry
lLngLen = Len(pStrMessage)
lBytLenW = DoubleToWord(CDbl(lLngLen) * 8)
lStrPadMessage = pStrMessage & Chr(128) & String((128 - (lLngLen Mod 64) - 9) Mod 64, Chr(0)) & _
String(4, Chr(0)) & Chr(lBytLenW(0)) & Chr(lBytLenW(1)) & Chr(lBytLenW(2)) & Chr(lBytLenW(3))
lLngNumBlocks = Len(lStrPadMessage) / 64
lVarWordKAry(0) = HexToWord("5A827999")
lVarWordKAry(1) = HexToWord("6ED9EBA1")
lVarWordKAry(2) = HexToWord("8F1BBCDC")
lVarWordKAry(3) = HexToWord("CA62C1D6")
lBytWordH0Ary = HexToWord("67452301")
lBytWordH1Ary = HexToWord("EFCDAB89")
lBytWordH2Ary = HexToWord("98BADCFE")
lBytWordH3Ary = HexToWord("10325476")
lBytWordH4Ary = HexToWord("C3D2E1F0")
For lLngBlock = 0 To lLngNumBlocks - 1
lStrBlockText = Mid(lStrPadMessage, (lLngBlock * 64) + 1, 64)
For lIntT = 0 To 15
lStrWordText = Mid(lStrBlockText, (lIntT * 4) + 1, 4)
lVarWordWAry(lIntT) = Array(Asc(Mid(lStrWordText, 1, 1)), Asc(Mid(lStrWordText, 2, 1)), Asc(Mid(lStrWordText, 3, 1)), Asc(Mid(lStrWordText, 4, 1)))
Next
For lIntT = 16 To 79
lVarWordWAry(lIntT) = CircShiftLeftW(XorW(XorW(XorW(lVarWordWAry(lIntT - 3), lVarWordWAry(lIntT - 8)), lVarWordWAry(lIntT - 14)), lVarWordWAry(lIntT - 16)), 1)
Next
lBytWordAAry = lBytWordH0Ary
lBytWordBAry = lBytWordH1Ary
lBytWordCAry = lBytWordH2Ary
lBytWordDAry = lBytWordH3Ary
lBytWordEAry = lBytWordH4Ary
For lIntT = 0 To 79
lBytWordFAry = F(lIntT, lBytWordBAry, _
lBytWordCAry, lBytWordDAry)
lBytTempAry = AddW(AddW(AddW(AddW(CircShiftLeftW(lBytWordAAry, 5), lBytWordFAry), lBytWordEAry), lVarWordWAry(lIntT)), lVarWordKAry(lIntT \ 20))
lBytWordEAry = lBytWordDAry
lBytWordDAry = lBytWordCAry
lBytWordCAry = CircShiftLeftW(lBytWordBAry, 30)
lBytWordBAry = lBytWordAAry
lBytWordAAry = lBytTempAry
Next
lBytWordH0Ary = AddW(lBytWordH0Ary, lBytWordAAry)
lBytWordH1Ary = AddW(lBytWordH1Ary, lBytWordBAry)
lBytWordH2Ary = AddW(lBytWordH2Ary, lBytWordCAry)
lBytWordH3Ary = AddW(lBytWordH3Ary, lBytWordDAry)
lBytWordH4Ary = AddW(lBytWordH4Ary, lBytWordEAry)
Next
SecureHash = _
WordToHex(lBytWordH0Ary) & _
WordToHex(lBytWordH1Ary) & _
WordToHex(lBytWordH2Ary) & _
WordToHex(lBytWordH3Ary) & _
WordToHex(lBytWordH4Ary)
End Function
' ------------------------------------------------------------------------------
End Class
' ------------------------------------------------------------------------------
URL_TPVVIRTUAL = "https://sis.sermepa.es/sis/realizarPago"
Ds_Merchant_MerchantName = "PLAY DOC TUI"
Ds_Merchant_MerchantCode = "322111162"
Ds_Merchant_Terminal = 1
Ds_Merchant_Password = "5Q1608IR540618NA"
Ds_Merchant_Currency = "978"
Ds_Merchant_Amount = "1000"
Ds_Merchant_Order = ""
Ds_Merchant_TransactionType = "0"
Ds_Merchant_MerchantURL = "http://www.sermepa.es"
session.LCID=3082
dia = Right("00" & Day(Date()), 2)
mes = Right("00" & Month(Date()), 2)
hor = time()
anyo = Right(Cstr(Year(Date)), 2)
hor="#" & replace (hor,":","#")
order= dia & mes & anyo & hor
tborder= split(order,"#")
for i=0 to 3
Ds_Merchant_Order= Ds_Merchant_Order & tborder(i)
Next
Dim ObjSHA1
Dim StrDigest
Set ObjSHA1 = New clsSHA1
cadenaFirma = Ds_Merchant_Amount & Ds_Merchant_Order & Ds_Merchant_MerchantCode & Ds_Merchant_Currency & Ds_Merchant_TransactionType & Ds_Merchant_MerchantURL & Ds_Merchant_Password
StrDigest = ObjSHA1.SecureHash(cadenaFirma)
Set ObjSHA1 = Nothing
session("idioma") = "eng"
%>
Support Play-Doc 2015 | International Documentary Festival
SUPPORT PLAY-DOC !
Si deseas colaborar activamente con Play-Doc ahora puedes hacerlo mediante una donación económica a través de Play-Doc Support!. Tu apoyo es muy importante para nosotros. En estos tiempos que corren cualquier ayuda es poca, y tu aportación, por pequeña que sea, contribuirá a fortalecer el festival y continuar adelante con este proyecto.
Nosotros, como muestra de nuestro infinito agradecimiento, te daremos algo a cambio.
Con una aportación mínima de 10 euros podrás lucir nuestra exclusiva chapita de colaborador. A partir de 50 euros podrás obtener una acreditación especial que te permitirá acceder de manera gratuita a todas las proyecciones y a todas las actividades que programe el festival.
Pero lo que realmente cuenta es tu apoyo, que nos ayudará sin duda a que podamos seguir celebrando futuras ediciones.
¡Desde ya te damos las gracias!