标签: cryptoapi

Java安全性 - MSCAPI提供者:如何在没有密码弹出的情况下使用?

我已经设法在我的应用程序中使用Sun的MSCAPI提供程序.我现在遇到的问题是它总是弹出一个窗口,要求输入密码,即使我已经在代码中提供了密码.这是一个问题,因为我需要在Web服务中使用加密功能.

这是我现在的代码:

String alias = "Alias to my PK";
char[] pass = "MyPassword".toCharArray();

KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, pass);
Provider p =  ks.getProvider();

Signature sig = Signature.getInstance("SHA1withRSA",p);
PrivateKey key = (PrivateKey) ks.getKey(alias, pass)

sig.initSign(key);
sig.update("Testing".getBytes());
sig.sign();
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但是当最后一行运行时,我会弹出一个要求输入密码的弹出窗口.我该如何预防呢?

java security cryptography cryptoapi

7
推荐指数
1
解决办法
6583
查看次数

如何提交Microsoft知识库?

我最近发现了一个非常明显的Microsoft CryptoAPI问题解决方案.由于(看似无关的)CREDHIST文件上的只读标志,整个CryptoAPI堆栈从CryptAcquireContext()向上突然行为不端.为了更大的共同利益,我希望在MS KB中记录它,它属于它.

从我过去对MS KB的攻击我知道陌生人不应该提交文章; 只有MS员工和承包商才这样做.所以我正在寻找一个MS代表赞助商,代表我提交文章.信用无关紧要; 文章无论如何都是匿名的.

完整的文章:http: //social.msdn.microsoft.com/Forums/en/windowssecurity/thread/11b08625-b432-4667-ab82-a7e0ed008fc3

cryptoapi

7
推荐指数
1
解决办法
263
查看次数

VS2010 - CryptoAPI中的结构更改 - v7.0A Vs v6.0A - WinCrypt.h

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h,定义CERT_CHAIN_ENGINE_CONFIG

typedef struct _CERT_CHAIN_ENGINE_CONFIG {

    DWORD       cbSize;
    HCERTSTORE  hRestrictedRoot;
    HCERTSTORE  hRestrictedTrust;
    HCERTSTORE  hRestrictedOther;
    DWORD       cAdditionalStore;
    HCERTSTORE* rghAdditionalStore;
    DWORD       dwFlags;
    DWORD       dwUrlRetrievalTimeout;      // milliseconds
    DWORD       MaximumCachedCertificates;
    DWORD       CycleDetectionModulus;

*#if (NTDDI_VERSION >= NTDDI_WIN7)
    HCERTSTORE  hExclusiveRoot;
    HCERTSTORE  hExclusiveTrustedPeople;
#endif*

} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;
Run Code Online (Sandbox Code Playgroud)

我在XP sp3机器中使用visual studio 2010,在这种情况下,我希望上面结构中的以下两个成员变灰.但这不会发生,

#if (NTDDI_VERSION >= NTDDI_WIN7)
    HCERTSTORE  hExclusiveRoot;
    HCERTSTORE  hExclusiveTrustedPeople;
#endif
Run Code Online (Sandbox Code Playgroud)

NTDDI_VERSION反过来定义sdkddkver.h如下,并且_WIN32_WINNT以某种方式取得NTDDI_WIN7我的情况下的值不正确,因为我的是XP SP3机器.

#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
#define  _WIN32_WINNT   0x0601
#endif
#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// …
Run Code Online (Sandbox Code Playgroud)

c++ certificate visual-studio-2010 cryptoapi visual-c++

7
推荐指数
1
解决办法
1747
查看次数

openssl与windows capi

哪个更好的使用openssl或windows capi进行ecnryption问题是什么是两者的pro和con列表.如果有可能在openssl上编写我的加密程序并使用windows capi解密它没有问题或者存在一些问题.

c++ encryption openssl cryptography cryptoapi

6
推荐指数
1
解决办法
2357
查看次数

需要帮助以使用CertFindCertificateInStore()按主题名称(X500格式,CERT_X500_NAME_STR)查找证书?

客户端应用程序必须从Windows证书存储区访问证书.搜索输入是X500字符串格式的主题名称,如下所示.

"C=CH, S=Aargau, L=Baden, O=Test, OU=FF, CN= Test Root"
Run Code Online (Sandbox Code Playgroud)

需要完全匹配(不使用CERT_FIND_SUBJECT_STR进行子字符串匹配).为此我做了以下几点

CERT_NAME_BLOB subjectname = {0};

/*convert the input X500 string to encoded subject name*/
bRet = CertStrToNameA(X509_ASN_ENCODING, "C=CH, S=Aargau, L=Baden, O=Test, OU=S1, CN= Test Root", CERT_X500_NAME_STR, NULL, NULL, &size, NULL);
  if(TRUE == bRet)
  {
     subjectname.pbData  = (BYTE*)malloc(size);
     subjectname.cbData = size;

     bRet = CertStrToNameA(X509_ASN_ENCODING , "C=CH, S=Aargau, L=Baden, O=Test, OU=S1, CN=Test Root", CERT_X500_NAME_STR, NULL, subjectname.pbData, &subjectname.cbData, NULL);
     if(TRUE == bRet)
     {
          capiCertificate = CertFindCertificateInStore(hStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &subjectname, NULL);
         if (NULL == …
Run Code Online (Sandbox Code Playgroud)

windows certificate cryptoapi

6
推荐指数
1
解决办法
3207
查看次数

使用CryptoAPI从PFX证书获取X509数据

美好的一天.Stackoverflow以前帮了我很多次,但是我有点困在这个上,希望有人可以给我一些指示.

背景:我需要将证书的X509数据传递给Adobe的SDK CertListCab,以便使用我的Acrobat插件api对PDF进行签名.

我的问题是如何使用CryptoAPI从PFX证书中获取X509数据?

我做了以下事情:

  • 将我的PFX证书转换为内存存储.

    CRYPT_DATA_BLOB data;

  • 打开文件并填充数据.

    FILE *fIn = fopen("C:\\certificate\\MyPfx.pfx", "rb")
        fseek(fIn, 0, SEEK_END);
        data.cbData = ftell(fIn);
        fseek(fIn, 0, SEEK_SET);
        data.pbData = (BYTE *)malloc(data.cbData);
        fread(data.pbData, 1, data.cbData, fIn);
        fclose(fIn);
    
    Run Code Online (Sandbox Code Playgroud)

    HCERTSTORE hCertStore = PFXImportCertStore(&data, L"password", 0);

  • 找到证书.只有一个.

    PCCERT_CONTEXT hContext = CertFindCertificateInStore (hCertStore, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_ANY, NULL, NULL);

  • 获取证书的公钥信息.

    BOOL bFreeHandle; HCRYPTPROV hProv; DWORD dwKeySpec; HCRYPTKEY hCertPubKey; CryptAcquireCertificatePrivateKey (hContext, 0, NULL, &hProv, &dwKeySpec, &bFreeHandle);

    CryptImportPublicKeyInfo(hProv, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &hContext->pCertInfo->SubjectPublicKeyInfo, &hCertPubKey));

  • 现在我尝试为X509数据腾出空间.

    DWORD dwX509Len; BYTE *x509Data; CryptGetKeyParam(hCertPubKey,KP_CERTIFICATE,NULL,&dwX509Len,0);

    x509Data …

c++ cryptoapi pfx x509

6
推荐指数
1
解决办法
2459
查看次数

OpenSSL:打印EC_POINT的X和Y.

这是我的代码:

EC_KEY *eckey = EC_KEY_new();
EC_KEY_generate_key(eckey);
const EC_POINT *pub = EC_KEY_get0_public_key(eckey);
printf("%s", pub->X);
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,上面写着"类型'struct ec_point_st'的不完整定义".我也尝试过:

EC_GROUP *curve = EC_GROUP_new_by_curve_name(NID_secp521r1);
BN_CTX *ecctx= BN_CTX_new();
EC_KEY *eckey = EC_KEY_new();
EC_KEY_generate_key(eckey);
const EC_POINT *pub = EC_KEY_get0_public_key(eckey);
NSLog(@"%s", EC_POINT_point2hex(curve, pub, POINT_CONVERSION_HYBRID, ecctx));
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我收到一个EXC_BAD_ACCESS错误.如何打印(用于调试)公钥的x和y点?

openssl cryptography objective-c cryptoapi public-key-encryption

6
推荐指数
1
解决办法
4269
查看次数

在Windows 7上使用SHA2-512(CALG_SHA_512)返回"指定的无效算法"

我试图在Windows 7上使用带有CryptoAPI的SHA2-512,但是,调用CryptCreateHash失败GetLastError()= 2148073480 = 0x80090008,即"指定了无效的算法".根据https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspx,自Windows XP SP3起,SHA2应该可用.

这是我正在使用的代码:

HCRYPTPROV hCryptProv;
CryptAcquireContext(&hCryptProv, nullptr, nullptr, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);

HCRYPTHASH hHash;
if (!CryptCreateHash(hCryptProv, CALG_SHA_512, 0, 0, &hHash)) {
    DWORD err = GetLastError(); // -> 2148073480=0x80090008
}
Run Code Online (Sandbox Code Playgroud)

CALG_SHA1而不是CALG_SHA512工作.

我是否必须进行一些进一步的初始化,例如明确激活SHA2?

c c++ cryptography sha cryptoapi

6
推荐指数
1
解决办法
2626
查看次数

CryptGenRandom 和 CNG BCryptGenRandom API 之间的区别

我们的一款产品目前使用CryptGenRandom API 来生成随机数。最近,我遇到了 Cryptography API: Next Generation (CNG),它为此提供了一个新的 API BCryptGenRandom(在 bcrypt.h 中)。根据 MSDN 中提供的描述 - 两个 API 均符合 Windows Vista Service Pack 1 (SP1) 及更高版本中的 NIST SP800-90 标准。

  1. 如果我使用默认的 Microsoft 提供程序,这两个 API 之间的随机数生成过程有什么不同吗?
  2. 如果没有任何区别,我是否应该转向 CNG API,因为 CNG 是 CryptoAPI 的长期替代品?

c++ windows winapi cryptography cryptoapi

6
推荐指数
1
解决办法
3036
查看次数

CCXT okex5 掉期合约 - 参数 posSide 错误

我正在尝试在 okex 交易所版本 5 上使用 ccxt 创建永久限价订单。该 API 成功在现货交易所下订单(限价订单和市价订单),但在永续交易所上失败。这就是我正在尝试的-

exchange_swap = ccxt.okex5({
'apiKey': credentials['okex']['apikey'],
'secret': credentials['okex']['secretkey'],
'password': credentials['okex']['password'],
'options': {
    'defaultType': 'swap', 
      }
})
params =  {
   "test":True
}
order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7)
Run Code Online (Sandbox Code Playgroud)

错误信息-

ccxt.base.errors.BadRequest: okex5 {"code":"1","data":[{"clOrdId":"","ordId":"","sCode":"51000","sMsg":"Parameter posSide  error ","tag":""}],"msg":""}
Run Code Online (Sandbox Code Playgroud)

在搜索此错误后,我在他们的文档中发现了这一点-

Error message           Http status code     Error code
Parameter {0} error.    400                  51000
Run Code Online (Sandbox Code Playgroud)

文档链接 - Okex v5

PS - 我可以通过 okex 上的交易仪表板放置此内容,但不能通过 API 放置。我有足够的余额来创建此订单。

整个错误消息是这样的——

Traceback (most recent call last):
File "C:\Users\ishaa\Desktop\trading\Crypto Vibhor\Testing Files\ccxt_test.py", line 70, in 
 <module>
  order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7) …
Run Code Online (Sandbox Code Playgroud)

python rest trading cryptoapi ccxt

6
推荐指数
1
解决办法
2254
查看次数