[BACK]Return to cgd.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev

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

Diff for /src/sys/dev/cgd.c between version 1.52 and 1.53

version 1.52, 2008/04/28 20:23:46 version 1.53, 2008/09/12 16:51:55
Line 486  cgddump(dev_t dev, daddr_t blkno, void *
Line 486  cgddump(dev_t dev, daddr_t blkno, void *
  */   */
 #define MAX_KEYSIZE     1024  #define MAX_KEYSIZE     1024
   
   static const struct {
           const char *n;
           int v;
           int d;
   } encblkno[] = {
           { "encblkno",  CGD_CIPHER_CBC_ENCBLKNO8, 1 },
           { "encblkno8", CGD_CIPHER_CBC_ENCBLKNO8, 1 },
           { "encblkno1", CGD_CIPHER_CBC_ENCBLKNO1, 8 },
   };
   
 /* ARGSUSED */  /* ARGSUSED */
 static int  static int
 cgd_ioctl_set(struct cgd_softc *cs, void *data, struct lwp *l)  cgd_ioctl_set(struct cgd_softc *cs, void *data, struct lwp *l)
Line 493  cgd_ioctl_set(struct cgd_softc *cs, void
Line 503  cgd_ioctl_set(struct cgd_softc *cs, void
         struct   cgd_ioctl *ci = data;          struct   cgd_ioctl *ci = data;
         struct   vnode *vp;          struct   vnode *vp;
         int      ret;          int      ret;
           size_t   i;
         size_t   keybytes;                      /* key length in bytes */          size_t   keybytes;                      /* key length in bytes */
         const char *cp;          const char *cp;
         char     *inbuf;          char     *inbuf;
Line 516  cgd_ioctl_set(struct cgd_softc *cs, void
Line 527  cgd_ioctl_set(struct cgd_softc *cs, void
                 goto bail;                  goto bail;
         }          }
   
         /* right now we only support encblkno, so hard-code it */  
         (void)memset(inbuf, 0, MAX_KEYSIZE);          (void)memset(inbuf, 0, MAX_KEYSIZE);
         ret = copyinstr(ci->ci_ivmethod, inbuf, MAX_KEYSIZE, NULL);          ret = copyinstr(ci->ci_ivmethod, inbuf, MAX_KEYSIZE, NULL);
         if (ret)          if (ret)
                 goto bail;                  goto bail;
         if (strcmp("encblkno", inbuf)) {  
           for (i = 0; i < __arraycount(encblkno); i++)
                   if (strcmp(encblkno[i].n, inbuf) == 0)
                           break;
   
           if (i == __arraycount(encblkno)) {
                 ret = EINVAL;                  ret = EINVAL;
                 goto bail;                  goto bail;
         }          }
Line 531  cgd_ioctl_set(struct cgd_softc *cs, void
Line 546  cgd_ioctl_set(struct cgd_softc *cs, void
                 ret = EINVAL;                  ret = EINVAL;
                 goto bail;                  goto bail;
         }          }
   
         (void)memset(inbuf, 0, MAX_KEYSIZE);          (void)memset(inbuf, 0, MAX_KEYSIZE);
         ret = copyin(ci->ci_key, inbuf, keybytes);          ret = copyin(ci->ci_key, inbuf, keybytes);
         if (ret)          if (ret)
                 goto bail;                  goto bail;
   
         cs->sc_cdata.cf_blocksize = ci->ci_blocksize;          cs->sc_cdata.cf_blocksize = ci->ci_blocksize;
         cs->sc_cdata.cf_mode = CGD_CIPHER_CBC_ENCBLKNO;          cs->sc_cdata.cf_mode = encblkno[i].v;
         cs->sc_cdata.cf_priv = cs->sc_cfuncs->cf_init(ci->ci_keylen, inbuf,          cs->sc_cdata.cf_priv = cs->sc_cfuncs->cf_init(ci->ci_keylen, inbuf,
             &cs->sc_cdata.cf_blocksize);              &cs->sc_cdata.cf_blocksize);
           /*
            * The blocksize is supposed to be in bytes. Unfortunately originally
            * it was expressed in bits. For compatibility we maintain encblkno
            * and encblkno8.
            */
           cs->sc_cdata.cf_blocksize /= encblkno[i].d;
         (void)memset(inbuf, 0, MAX_KEYSIZE);          (void)memset(inbuf, 0, MAX_KEYSIZE);
         if (!cs->sc_cdata.cf_priv) {          if (!cs->sc_cdata.cf_priv) {
                 printf("cgd: unable to initialize cipher\n");                  printf("cgd: unable to initialize cipher\n");

Legend:
Removed from v.1.52  
changed lines
  Added in v.1.53

CVSweb <webmaster@jp.NetBSD.org>