[BACK]Return to crypto_openssl.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / crypto / dist / ipsec-tools / src / racoon

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/crypto/dist/ipsec-tools/src/racoon/crypto_openssl.c between version 1.1.1.2 and 1.1.1.2.2.4

version 1.1.1.2, 2005/02/23 14:54:12 version 1.1.1.2.2.4, 2005/11/21 21:12:30
Line 1 
Line 1 
 /*      $NetBSD$        */  /*      $NetBSD$        */
   
 /* Id: crypto_openssl.c,v 1.40.4.1 2005/02/22 23:56:08 manubsd Exp */  /* Id: crypto_openssl.c,v 1.40.4.5 2005/07/12 11:50:15 manubsd Exp */
   
 /*  /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.   * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
Line 161  eay_str2asn1dn(str, len)
Line 161  eay_str2asn1dn(str, len)
                         if (!X509_NAME_add_entry_by_txt(name, field,                          if (!X509_NAME_add_entry_by_txt(name, field,
                                         (value[0] == '*' && value[1] == 0) ?                                          (value[0] == '*' && value[1] == 0) ?
                                                 V_ASN1_PRINTABLESTRING : MBSTRING_ASC,                                                  V_ASN1_PRINTABLESTRING : MBSTRING_ASC,
                                         value, -1, -1, 0)) {                                          (unsigned char *) value, -1, -1, 0)) {
                                 plog(LLV_ERROR, LOCATION, NULL,                                  plog(LLV_ERROR, LOCATION, NULL,
                                      "Invalid DN field: %s=%s\n",                                       "Invalid DN field: %s=%s\n",
                                      field, value);                                       field, value);
Line 187  eay_str2asn1dn(str, len)
Line 187  eay_str2asn1dn(str, len)
         if (!X509_NAME_add_entry_by_txt(name, field,          if (!X509_NAME_add_entry_by_txt(name, field,
                         (value[0] == '*' && value[1] == 0) ?                          (value[0] == '*' && value[1] == 0) ?
                                 V_ASN1_PRINTABLESTRING : MBSTRING_ASC,                                  V_ASN1_PRINTABLESTRING : MBSTRING_ASC,
                         value, -1, -1, 0)) {                          (unsigned char *) value, -1, -1, 0)) {
                 plog(LLV_ERROR, LOCATION, NULL,                  plog(LLV_ERROR, LOCATION, NULL,
                      "Invalid DN field: %s=%s\n",                       "Invalid DN field: %s=%s\n",
                      field, value);                       field, value);
Line 246  eay_hex2asn1dn(const char *hex, int len)
Line 246  eay_hex2asn1dn(const char *hex, int len)
         }          }
         binbuf = ret->v;          binbuf = ret->v;
   
         BN_bn2bin(bn, binbuf);          BN_bn2bin(bn, (unsigned char *) binbuf);
   
 out:  out:
         BN_free(bn);          BN_free(bn);
Line 596  eay_get_x509asn1subjectname(cert)
Line 596  eay_get_x509asn1subjectname(cert)
         int len;          int len;
         int error = -1;          int error = -1;
   
         bp = cert->v;          bp = (unsigned char *) cert->v;
   
         x509 = mem2x509(cert);          x509 = mem2x509(cert);
         if (x509 == NULL)          if (x509 == NULL)
Line 608  eay_get_x509asn1subjectname(cert)
Line 608  eay_get_x509asn1subjectname(cert)
         if (!name)          if (!name)
                 goto end;                  goto end;
         /* get the name */          /* get the name */
         bp = name->v;          bp = (unsigned char *) name->v;
         len = i2d_X509_NAME(x509->cert_info->subject, &bp);          len = i2d_X509_NAME(x509->cert_info->subject, &bp);
   
         error = 0;          error = 0;
Line 680  eay_get_x509subjectaltname(cert, altname
Line 680  eay_get_x509subjectaltname(cert, altname
                 if (!*altname)                  if (!*altname)
                         goto end;                          goto end;
   
                 strlcpy(*altname, gen->d.ia5->data, len);                  strlcpy(*altname, (char *) gen->d.ia5->data, len);
                 *type = gen->type;                  *type = gen->type;
                 error = 0;                  error = 0;
         }          }
Line 797  mem2x509(cert)
Line 797  mem2x509(cert)
     {      {
         u_char *bp;          u_char *bp;
   
         bp = cert->v;          bp = (unsigned char *) cert->v;
   
         x509 = d2i_X509(NULL, &bp, cert->l);          x509 = d2i_X509(NULL, (void *)&bp, cert->l);
     }      }
 #else  #else
     {      {
Line 855  eay_get_x509cert(path)
Line 855  eay_get_x509cert(path)
                 X509_free(x509);                  X509_free(x509);
                 return NULL;                  return NULL;
         }          }
         bp = cert->v;          bp = (unsigned char *) cert->v;
         error = i2d_X509(x509, &bp);          error = i2d_X509(x509, &bp);
         X509_free(x509);          X509_free(x509);
   
Line 885  eay_check_x509sign(source, sig, cert)
Line 885  eay_check_x509sign(source, sig, cert)
         EVP_PKEY *evp;          EVP_PKEY *evp;
         int res;          int res;
   
         bp = cert->v;          bp = (unsigned char *) cert->v;
   
         x509 = d2i_X509(NULL, &bp, cert->l);          x509 = d2i_X509(NULL, (void *)&bp, cert->l);
         if (x509 == NULL) {          if (x509 == NULL) {
                 plog(LLV_ERROR, LOCATION, NULL, "d2i_X509(): %s\n", eay_strerror());                  plog(LLV_ERROR, LOCATION, NULL, "d2i_X509(): %s\n", eay_strerror());
                 return -1;                  return -1;
Line 952  eay_get_pkcs1privkey(path)
Line 952  eay_get_pkcs1privkey(path)
         pkey = vmalloc(pkeylen);          pkey = vmalloc(pkeylen);
         if (pkey == NULL)          if (pkey == NULL)
                 goto end;                  goto end;
         bp = pkey->v;          bp = (unsigned char *) pkey->v;
         pkeylen = i2d_PrivateKey(evp, &bp);          pkeylen = i2d_PrivateKey(evp, &bp);
         if (pkeylen == 0)          if (pkeylen == 0)
                 goto end;                  goto end;
Line 1008  eay_get_pkcs1pubkey(path)
Line 1008  eay_get_pkcs1pubkey(path)
         pkey = vmalloc(pkeylen);          pkey = vmalloc(pkeylen);
         if (pkey == NULL)          if (pkey == NULL)
                 goto end;                  goto end;
         bp = pkey->v;          bp = (unsigned char *) pkey->v;
         pkeylen = i2d_PublicKey(evp, &bp);          pkeylen = i2d_PublicKey(evp, &bp);
         if (pkeylen == 0)          if (pkeylen == 0)
                 goto end;                  goto end;
Line 1030  eay_get_x509sign(src, privkey)
Line 1030  eay_get_x509sign(src, privkey)
         vchar_t *src, *privkey;          vchar_t *src, *privkey;
 {  {
         EVP_PKEY *evp;          EVP_PKEY *evp;
         u_char *bp = privkey->v;          u_char *bp = (unsigned char *) privkey->v;
         vchar_t *sig = NULL;          vchar_t *sig = NULL;
         int len;          int len;
         int pad = RSA_PKCS1_PADDING;          int pad = RSA_PKCS1_PADDING;
   
         /* XXX to be handled EVP_PKEY_DSA */          /* XXX to be handled EVP_PKEY_DSA */
         evp = d2i_PrivateKey(EVP_PKEY_RSA, NULL, &bp, privkey->l);          evp = d2i_PrivateKey(EVP_PKEY_RSA, NULL, (void *)&bp, privkey->l);
         if (evp == NULL)          if (evp == NULL)
                 return NULL;                  return NULL;
   
Line 1068  eay_rsa_sign(vchar_t *src, RSA *rsa)
Line 1068  eay_rsa_sign(vchar_t *src, RSA *rsa)
         if (sig == NULL)          if (sig == NULL)
                 return NULL;                  return NULL;
   
         len = RSA_private_encrypt(src->l, src->v, sig->v, rsa, pad);          len = RSA_private_encrypt(src->l, (unsigned char *) src->v,
                           (unsigned char *) sig->v, rsa, pad);
   
         if (len == 0 || len != sig->l) {          if (len == 0 || len != sig->l) {
                 vfree(sig);                  vfree(sig);
Line 1095  eay_rsa_verify(src, sig, rsa)
Line 1096  eay_rsa_verify(src, sig, rsa)
                 return -1;                  return -1;
         }          }
   
         len = RSA_public_decrypt(sig->l, sig->v, xbuf->v, rsa, pad);          len = RSA_public_decrypt(sig->l, (unsigned char *) sig->v,
                           (unsigned char *) xbuf->v, rsa, pad);
         if (len == 0 || len != src->l) {          if (len == 0 || len != src->l) {
                 plog(LLV_ERROR, LOCATION, NULL, "%s\n", eay_strerror());                  plog(LLV_ERROR, LOCATION, NULL, "%s\n", eay_strerror());
                 vfree(xbuf);                  vfree(xbuf);
Line 1159  evp_crypt(vchar_t *data, vchar_t *key, v
Line 1161  evp_crypt(vchar_t *data, vchar_t *key, v
   
         EVP_CIPHER_CTX_init(&ctx);          EVP_CIPHER_CTX_init(&ctx);
   
         if (!EVP_CipherInit(&ctx, e, key->v, iv->v, enc)) {          switch(EVP_CIPHER_nid(e)){
                 OpenSSL_BUG();          case NID_bf_cbc:
                 vfree(res);          case NID_bf_ecb:
                 return NULL;          case NID_bf_cfb64:
           case NID_bf_ofb64:
           case NID_cast5_cbc:
           case NID_cast5_ecb:
           case NID_cast5_cfb64:
           case NID_cast5_ofb64:
                   /* XXX: can we do that also for algos with a fixed key size ?
                    */
                   /* init context without key/iv
            */
           if (!EVP_CipherInit(&ctx, e, NULL, NULL, enc))
           {
               OpenSSL_BUG();
               vfree(res);
               return NULL;
           }
   
           /* update key size
            */
           if (!EVP_CIPHER_CTX_set_key_length(&ctx, key->l))
           {
               OpenSSL_BUG();
               vfree(res);
               return NULL;
           }
   
           /* finalize context init with desired key size
            */
           if (!EVP_CipherInit(&ctx, NULL, (u_char *) key->v,
                                                           (u_char *) iv->v, enc))
           {
               OpenSSL_BUG();
               vfree(res);
               return NULL;
                   }
                   break;
           default:
                   if (!EVP_CipherInit(&ctx, e, (u_char *) key->v,
                                                           (u_char *) iv->v, enc)) {
                           OpenSSL_BUG();
                           vfree(res);
                           return NULL;
                   }
         }          }
   
           /* disable openssl padding */
           EVP_CIPHER_CTX_set_padding(&ctx, 0);
   
         if (!EVP_Cipher(&ctx, res->v, data->v, data->l)) {          if (!EVP_Cipher(&ctx, (u_char *) res->v, (u_char *) data->v, data->l)) {
                 OpenSSL_BUG();                  OpenSSL_BUG();
                 vfree(res);                  vfree(res);
                 return NULL;                  return NULL;
Line 1187  evp_keylen(int len, const EVP_CIPHER *e)
Line 1234  evp_keylen(int len, const EVP_CIPHER *e)
 {  {
         if (!e)          if (!e)
                 return -1;                  return -1;
         if (len != 0 && len != EVP_CIPHER_key_length(e))          /* EVP functions return lengths in bytes, ipsec-tools
            * uses lengths in bits, therefore conversion is required. --AK
            */
           if (len != 0 && len != (EVP_CIPHER_key_length(e) << 3))
                 return -1;                  return -1;
   
         return EVP_CIPHER_key_length(e);          return EVP_CIPHER_key_length(e) << 3;
 }  }
   
 /*  /*
Line 1659  eay_hmacsha2_512_update(c, data)
Line 1709  eay_hmacsha2_512_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         HMAC_Update((HMAC_CTX *)c, data->v, data->l);          HMAC_Update((HMAC_CTX *)c, (unsigned char *) data->v, data->l);
 }  }
   
 vchar_t *  vchar_t *
Line 1672  eay_hmacsha2_512_final(c)
Line 1722  eay_hmacsha2_512_final(c)
         if ((res = vmalloc(SHA512_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA512_DIGEST_LENGTH)) == 0)
                 return NULL;                  return NULL;
   
         HMAC_Final((HMAC_CTX *)c, res->v, &l);          HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
         res->l = l;          res->l = l;
         HMAC_cleanup((HMAC_CTX *)c);          HMAC_cleanup((HMAC_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
Line 1716  eay_hmacsha2_384_update(c, data)
Line 1766  eay_hmacsha2_384_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         HMAC_Update((HMAC_CTX *)c, data->v, data->l);          HMAC_Update((HMAC_CTX *)c, (unsigned char *) data->v, data->l);
 }  }
   
 vchar_t *  vchar_t *
Line 1729  eay_hmacsha2_384_final(c)
Line 1779  eay_hmacsha2_384_final(c)
         if ((res = vmalloc(SHA384_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA384_DIGEST_LENGTH)) == 0)
                 return NULL;                  return NULL;
   
         HMAC_Final((HMAC_CTX *)c, res->v, &l);          HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
         res->l = l;          res->l = l;
         HMAC_cleanup((HMAC_CTX *)c);          HMAC_cleanup((HMAC_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
Line 1773  eay_hmacsha2_256_update(c, data)
Line 1823  eay_hmacsha2_256_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         HMAC_Update((HMAC_CTX *)c, data->v, data->l);          HMAC_Update((HMAC_CTX *)c, (unsigned char *) data->v, data->l);
 }  }
   
 vchar_t *  vchar_t *
Line 1786  eay_hmacsha2_256_final(c)
Line 1836  eay_hmacsha2_256_final(c)
         if ((res = vmalloc(SHA256_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA256_DIGEST_LENGTH)) == 0)
                 return NULL;                  return NULL;
   
         HMAC_Final((HMAC_CTX *)c, res->v, &l);          HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
         res->l = l;          res->l = l;
         HMAC_cleanup((HMAC_CTX *)c);          HMAC_cleanup((HMAC_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
Line 1831  eay_hmacsha1_update(c, data)
Line 1881  eay_hmacsha1_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         HMAC_Update((HMAC_CTX *)c, data->v, data->l);          HMAC_Update((HMAC_CTX *)c, (unsigned char *) data->v, data->l);
 }  }
   
 vchar_t *  vchar_t *
Line 1844  eay_hmacsha1_final(c)
Line 1894  eay_hmacsha1_final(c)
         if ((res = vmalloc(SHA_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA_DIGEST_LENGTH)) == 0)
                 return NULL;                  return NULL;
   
         HMAC_Final((HMAC_CTX *)c, res->v, &l);          HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
         res->l = l;          res->l = l;
         HMAC_cleanup((HMAC_CTX *)c);          HMAC_cleanup((HMAC_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
Line 1888  eay_hmacmd5_update(c, data)
Line 1938  eay_hmacmd5_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         HMAC_Update((HMAC_CTX *)c, data->v, data->l);          HMAC_Update((HMAC_CTX *)c, (unsigned char *) data->v, data->l);
 }  }
   
 vchar_t *  vchar_t *
Line 1901  eay_hmacmd5_final(c)
Line 1951  eay_hmacmd5_final(c)
         if ((res = vmalloc(MD5_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(MD5_DIGEST_LENGTH)) == 0)
                 return NULL;                  return NULL;
   
         HMAC_Final((HMAC_CTX *)c, res->v, &l);          HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
         res->l = l;          res->l = l;
         HMAC_cleanup((HMAC_CTX *)c);          HMAC_cleanup((HMAC_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
Line 1935  eay_sha2_512_update(c, data)
Line 1985  eay_sha2_512_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         SHA512_Update((SHA512_CTX *)c, data->v, data->l);          SHA512_Update((SHA512_CTX *)c, (unsigned char *) data->v, data->l);
   
         return;          return;
 }  }
Line 1949  eay_sha2_512_final(c)
Line 1999  eay_sha2_512_final(c)
         if ((res = vmalloc(SHA512_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA512_DIGEST_LENGTH)) == 0)
                 return(0);                  return(0);
   
         SHA512_Final(res->v, (SHA512_CTX *)c);          SHA512_Final((unsigned char *) res->v, (SHA512_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
   
         return(res);          return(res);
Line 1995  eay_sha2_384_update(c, data)
Line 2045  eay_sha2_384_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         SHA384_Update((SHA384_CTX *)c, data->v, data->l);          SHA384_Update((SHA384_CTX *)c, (unsigned char *) data->v, data->l);
   
         return;          return;
 }  }
Line 2009  eay_sha2_384_final(c)
Line 2059  eay_sha2_384_final(c)
         if ((res = vmalloc(SHA384_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA384_DIGEST_LENGTH)) == 0)
                 return(0);                  return(0);
   
         SHA384_Final(res->v, (SHA384_CTX *)c);          SHA384_Final((unsigned char *) res->v, (SHA384_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
   
         return(res);          return(res);
Line 2055  eay_sha2_256_update(c, data)
Line 2105  eay_sha2_256_update(c, data)
         caddr_t c;          caddr_t c;
         vchar_t *data;          vchar_t *data;
 {  {
         SHA256_Update((SHA256_CTX *)c, data->v, data->l);          SHA256_Update((SHA256_CTX *)c, (unsigned char *) data->v, data->l);
   
         return;          return;
 }  }
Line 2069  eay_sha2_256_final(c)
Line 2119  eay_sha2_256_final(c)
         if ((res = vmalloc(SHA256_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA256_DIGEST_LENGTH)) == 0)
                 return(0);                  return(0);
   
         SHA256_Final(res->v, (SHA256_CTX *)c);          SHA256_Final((unsigned char *) res->v, (SHA256_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
   
         return(res);          return(res);
Line 2128  eay_sha1_final(c)
Line 2178  eay_sha1_final(c)
         if ((res = vmalloc(SHA_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(SHA_DIGEST_LENGTH)) == 0)
                 return(0);                  return(0);
   
         SHA1_Final(res->v, (SHA_CTX *)c);          SHA1_Final((unsigned char *) res->v, (SHA_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
   
         return(res);          return(res);
Line 2186  eay_md5_final(c)
Line 2236  eay_md5_final(c)
         if ((res = vmalloc(MD5_DIGEST_LENGTH)) == 0)          if ((res = vmalloc(MD5_DIGEST_LENGTH)) == 0)
                 return(0);                  return(0);
   
         MD5_Final(res->v, (MD5_CTX *)c);          MD5_Final((unsigned char *) res->v, (MD5_CTX *)c);
         (void)racoon_free(c);          (void)racoon_free(c);
   
         return(res);          return(res);
Line 2293  eay_dh_compute(prime, g, pub, priv, pub2
Line 2343  eay_dh_compute(prime, g, pub, priv, pub2
         BIGNUM *dh_pub = NULL;          BIGNUM *dh_pub = NULL;
         DH *dh = NULL;          DH *dh = NULL;
         int l;          int l;
         caddr_t v = NULL;          unsigned char *v = NULL;
         int error = -1;          int error = -1;
   
         /* make public number to compute */          /* make public number to compute */
Line 2317  eay_dh_compute(prime, g, pub, priv, pub2
Line 2367  eay_dh_compute(prime, g, pub, priv, pub2
         if (!BN_set_word(dh->g, g))          if (!BN_set_word(dh->g, g))
                 goto end;                  goto end;
   
         if ((v = (caddr_t)racoon_calloc(prime->l, sizeof(u_char))) == NULL)          if ((v = racoon_calloc(prime->l, sizeof(u_char))) == NULL)
                 goto end;                  goto end;
         if ((l = DH_compute_key(v, dh_pub, dh)) == -1)          if ((l = DH_compute_key(v, dh_pub, dh)) == -1)
                 goto end;                  goto end;
Line 2353  eay_v2bn(bn, var)
Line 2403  eay_v2bn(bn, var)
         BIGNUM **bn;          BIGNUM **bn;
         vchar_t *var;          vchar_t *var;
 {  {
         if ((*bn = BN_bin2bn(var->v, var->l, NULL)) == NULL)          if ((*bn = BN_bin2bn((unsigned char *) var->v, var->l, NULL)) == NULL)
                 return -1;                  return -1;
   
         return 0;          return 0;
Line 2368  eay_bn2v(var, bn)
Line 2418  eay_bn2v(var, bn)
         if (*var == NULL)          if (*var == NULL)
                 return(-1);                  return(-1);
   
         (*var)->l = BN_bn2bin(bn, (*var)->v);          (*var)->l = BN_bn2bin(bn, (unsigned char *) (*var)->v);
   
         return 0;          return 0;
 }  }
Line 2458  binbuf_pubkey2rsa(vchar_t *binbuf)
Line 2508  binbuf_pubkey2rsa(vchar_t *binbuf)
                 goto out;                  goto out;
         }          }
   
         exp = BN_bin2bn(binbuf->v + 1, binbuf->v[0], NULL);          exp = BN_bin2bn((unsigned char *) (binbuf->v + 1), binbuf->v[0], NULL);
         mod = BN_bin2bn(binbuf->v + binbuf->v[0] + 1, binbuf->l - binbuf->v[0] - 1, NULL);          mod = BN_bin2bn((unsigned char *) (binbuf->v + binbuf->v[0] + 1),
                           binbuf->l - binbuf->v[0] - 1, NULL);
         rsa_pub = RSA_new();          rsa_pub = RSA_new();
   
         if (!exp || !mod || !rsa_pub) {          if (!exp || !mod || !rsa_pub) {
Line 2525  bignum_pubkey2rsa(BIGNUM *in)
Line 2576  bignum_pubkey2rsa(BIGNUM *in)
                 return NULL;                  return NULL;
         }          }
   
         BN_bn2bin(in, binbuf->v);          BN_bn2bin(in, (unsigned char *) binbuf->v);
   
         rsa_pub = binbuf_pubkey2rsa(binbuf);          rsa_pub = binbuf_pubkey2rsa(binbuf);
   

Legend:
Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.2.2.4

CVSweb <webmaster@jp.NetBSD.org>