Asunto: Acceso a certificados digitales con CAPICOM y VBScript
¿Se puede acceder a los datos de los certificados digitales instalados en el equipo con VBScript y CAPICOM?
Publicado:
Dom Sep 05, 2010 8:47 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Acceso a certificados digitales con CAPICOM y VBScript
Anuncios
varios escribió:
¿Se puede acceder a los datos de los certificados digitales instalados en el equipo con VBScript y CAPICOM?
Sí que es posible, a continuación te mostramos un ejemplo completo sacado de la propia web de Microsoft:
Código:
'******************************************************************************
'
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
'
' Copyright (C) 1999- 2002. Microsoft Corporation. All rights reserved.
'
'******************************************************************************
'
' CEncrypt.vbs
'
' This is a sample script to illustrate how to use the CAPICOM's EncryptedData
' to encrypt/decrypt text file.
'
' Note: For simplicity, this script does not handle exception.
'
'******************************************************************************
' Command line arguments.
Dim Command : Command = Unknown
Dim Password : Password = Null
Dim Algorithm : Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2
Dim KeyLength : KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM
Dim Verbose : Verbose = False
Dim FileNames()
' First make sure the script is executed by CScript.exe.
If InStr(1, UCase(Wscript.FullName), "CSCRIPT.EXE", vbTextCompare) = 0 Then
Wscript.Echo "This script can only be executed by CScript.exe." & vbCRLF & vbCRLF &_
"You can either:" & vbCRLF & vbCRLF & _
"1. Set CScript.exe as the default (Run CScript //h:cscript), or" & vbCRLF & _
"2. Run CScript.exe directly as in, CScript " & Wscript.ScriptName & "."
Wscript.Quit(-1)
End If
' Parse the command line.
ParseCommandLine
' Now process the command.
Select Case Command
Case Encrypt
DoEncryptCommand FileNames, Algorithm, KeyLength, Password
' Parse command line.
Dim Arg
Dim ArgState : ArgState = ARG_STATE_COMMAND
For Each Arg In Wscript.Arguments
Select Case ArgState
Case ARG_STATE_COMMAND
Select Case UCase(Arg)
Case "ENCRYPT"
Command = Encrypt
Case "DECRYPT"
Command = Decrypt
Case Else
DisplayUsage
End Select
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_OPTIONS
Select Case UCase(Arg)
Case "-ALG", "/ALG"
ArgState = ARG_STATE_ALGORITHM
Case "-LENGTH", "/LENGTH"
ArgState = ARG_STATE_LENGTH
Case "-V", "/V"
Verbose = True
Case "-?", "/?"
DisplayUsage
Case Else
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
ReDim FileNames(0)
FileNames(0) = Arg
End If
ArgState = ARG_STATE_FILENAME
End Select
Case ARG_STATE_ALGORITHM
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Select Case UCase(Arg)
Case "RC2"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2
Case "RC4"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC4
Case "DES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES
Case "3DES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_3DES
Case "AES"
Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_AES
Case Else
DisplayUsage
End Select
End If
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_LENGTH
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Select Case UCase(Arg)
Case "40"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS
Case "56"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS
Case "128"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS
Case "192"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS
Case "256"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
Case "MAX"
KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM
Case Else
DisplayUsage
End Select
End If
ArgState = ARG_STATE_OPTIONS
Case ARG_STATE_FILENAME
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
ReDim Preserve FileNames(UBound(FileNames) + 1)
FileNames(UBound(FileNames)) = Arg
End If
ArgState = ARG_STATE_PASSWORD
Case ARG_STATE_PASSWORD
If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then
DisplayUsage
Else
Password = Arg
End If
ArgState = ARG_STATE_END
Case Else
Wscript.Stdout.Writeline "Internal script error: Unknown argument state (" & CStr(ArgState) & ") encountered."
Wscript.Quit(-3)
End Select
Next
' Make sure we are in good state.
If ArgState <> ARG_STATE_END Then
DisplayUsage
End If
End Sub ' ParseCommandLine
'******************************************************************************
'
' Subroutine: DisplayUsage
'
' Synopsis : Display the usage screen, and then exit with a negative error
' code.
'
' Parameter : None.
'
'******************************************************************************
Sub DisplayUsage
Select Case Command
Case Unknown
Wscript.Stdout.Writeline "Usage: CEncrypt Command [Options] InFile OutFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Command:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " Encrypt -- Encrypt a text file"
Wscript.Stdout.Writeline " Decrypt -- Decrypt an encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "For help on a specific command, enter ""CEncrypt Command -?"""
Case Encrypt
Wscript.Stdout.Writeline "Usage: CEncrypt Encrypt [Options] ContentFile EncryptedFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "The Encrypt command is used to encrypt a text file based on a secret password."
Wscript.Stdout.Writeline "Encrypting protects the data from being read by others except those who know"
Wscript.Stdout.Writeline "the secret password."
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Options:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " -alg <algorithm> -- RC2, RC4, DES, 3DES, or AES (default to RC2)"
Wscript.Stdout.Writeline " -length <key length> -- 40, 56, 128, 192, 256, or MAX (default to MAX,"
Wscript.Stdout.Writeline " and ignored for DES or 3DES)"
Wscript.Stdout.Writeline " -v -- Verbose operation"
Wscript.Stdout.Writeline " -? -- This help screen"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " ContentFile -- Text file to be encrypted"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " EncryptedFile -- Encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."
Wscript.Stdout.Writeline
Case Decrypt
Wscript.Stdout.Writeline "Usage: CEncrypt Decrypt [Options] EncryptedFile ContentFile Password"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "The Decrypt command is used to decrypt an encrypted text file."
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Options:"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " -v -- Verbose operation"
Wscript.Stdout.Writeline " -? -- This help screen"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " EncryptedFile -- Encrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline " ContentFile -- Decrypted text file"
Wscript.Stdout.Writeline
Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."
Wscript.Stdout.Writeline
Case Else
Wscript.Stdout.Writeline "Internal script error: Unknown help state (Command = " & CStr(Command) & ")."
Wscript.Quit(-2)
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A